Bug 1065185 - Console Message Tests. r=bz
authorBobby Holley <bobbyholley@gmail.com>
Fri, 03 Oct 2014 10:05:52 +0200
changeset 208548 58012f4bb5f7d2dab5855bf121811a1a90d56311
parent 208547 3bddc48c44073b037809a31496c11be10234e8e7
child 208549 01bbf35c82bdc31c7fe4bf129fe8a8e421f68cef
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
reviewersbz
bugs1065185
milestone35.0a1
Bug 1065185 - Console Message Tests. r=bz
js/xpconnect/tests/chrome/chrome.ini
js/xpconnect/tests/chrome/test_bug1065185.html
--- a/js/xpconnect/tests/chrome/chrome.ini
+++ b/js/xpconnect/tests/chrome/chrome.ini
@@ -62,16 +62,17 @@ skip-if = buildapp == 'mulet'
 [test_bug865948.xul]
 [test_bug866823.xul]
 [test_bug895340.xul]
 [test_bug932906.xul]
 [test_bug996069.xul]
 [test_bug1041626.xul]
 [test_bug1042436.xul]
 [test_bug1050049.html]
+[test_bug1065185.html]
 [test_bug1074863.html]
 [test_xrayToJS.xul]
 skip-if = buildapp == 'mulet'
 [test_chrometoSource.xul]
 skip-if = buildapp == 'mulet'
 [test_cloneInto.xul]
 [test_cows.xul]
 skip-if = buildapp == 'mulet'
new file mode 100644
--- /dev/null
+++ b/js/xpconnect/tests/chrome/test_bug1065185.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1065185
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 1065185</title>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://global/skin"/>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
+  <script type="application/javascript">
+
+  /** Test for Bug 1065185 **/
+  SimpleTest.waitForExplicitFinish();
+
+  function doMonitor(rgxps) {
+    var messages = rgxps.map((x) => ({ errorMessage: x, isWarning: true }));
+    info("Expecting console messages: " + messages.toSource());
+    SimpleTest.monitorConsole(() => SimpleTest.executeSoon(() => window[0].location.reload()), messages, /* forbidUnexpected = */ true);
+  }
+  function endMonitor() {
+    SimpleTest.executeSoon(SimpleTest.endMonitorConsole.bind(SimpleTest));
+  }
+
+  var gLoadCount = 0;
+  function loaded() {
+    switch(++gLoadCount) {
+      case 0:
+        doMonitor([]);
+        window[0].wrappedJSObject.probe = { a: 2, __exposedProps__: { 'a': 'r' } };
+        is(window[0].eval('probe.a'), 2, "Accessed exposed prop");
+        endMonitor();
+        break;
+      case 1:
+        doMonitor([/access to property a/i]);
+        window[0].wrappedJSObject.probe = { a: 2 };
+        is(window[0].eval('probe.a'), undefined, "Non-exposed prop undefined");
+        is(window[0].eval('probe.a'), undefined, "Non-exposed prop undefined again");
+        endMonitor();
+        break;
+      case 2:
+        doMonitor([/access to property 0/i]);
+        window[0].wrappedJSObject.probe = [42];
+        is(window[0].eval('probe[0]'), undefined, "Element undefined");
+        is(window[0].eval('probe.length'), undefined, "Length undefined");
+        endMonitor();
+        break;
+      case 3:
+        doMonitor([/access to property length/i]);
+        window[0].wrappedJSObject.probe = { a: 'verboten', b: [42], __exposedProps__: { 'b' : 'r' }};
+        is(window[0].eval('probe.b.length'), undefined, "Length undefined");
+        is(window[0].eval('probe.a'), undefined, "property undefined");
+        endMonitor();
+        break;
+      case 4:
+        SimpleTest.finish();
+        break;
+      default:
+        ok(false, "Unexpected load");
+        SimpleTest.finish();
+        break;
+    }
+  }
+
+  </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1065185">Mozilla Bug 1065185</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+</pre>
+<iframe onload="loaded();" src="http://example.org/tests/js/xpconnect/tests/mochitest/file_empty.html" />
+</body>
+</html>