summaryrefslogtreecommitdiffstats
path: root/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js')
-rw-r--r--dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js b/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js
new file mode 100644
index 000000000..87c4a216c
--- /dev/null
+++ b/dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js
@@ -0,0 +1,57 @@
+/* Any copyright is dedicated to the public domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Bug 780351 - Test that mozbrowser does /not/ divide the window name namespace.
+// Multiple mozbrowsers inside the same app are like multiple browser tabs;
+// they share a window name namespace.
+
+"use strict";
+
+SimpleTest.waitForExplicitFinish();
+browserElementTestHelpers.setEnabledPref(true);
+browserElementTestHelpers.addPermission();
+
+function runTest() {
+ var iframe1 = document.createElement('iframe');
+ iframe1.setAttribute('mozbrowser', 'true');
+
+ // Two mozbrowser frames with the same code both do the same
+ // window.open("foo", "bar") call. We should only get one
+ // mozbrowseropenwindow event.
+
+ iframe1.addEventListener('mozbrowseropenwindow', function(e) {
+ ok(true, "Got first mozbrowseropenwindow event.");
+ document.body.appendChild(e.detail.frameElement);
+
+ e.detail.frameElement.addEventListener('mozbrowserlocationchange', function(e) {
+ if (e.detail.url == "http://example.com/#2") {
+ ok(true, "Got locationchange to http://example.com/#2");
+ SimpleTest.finish();
+ }
+ else {
+ ok(true, "Got locationchange to " + e.detail.url);
+ }
+ });
+
+ SimpleTest.executeSoon(function() {
+ var iframe2 = document.createElement('iframe');
+ // Make sure that iframe1 and iframe2 are in the same TabGroup by linking
+ // them through opener. Right now this API requires chrome privileges, as
+ // it is on MozFrameLoaderOwner.
+ SpecialPowers.wrap(iframe2).presetOpenerWindow(iframe1.contentWindow);
+ iframe2.setAttribute('mozbrowser', 'true');
+
+ iframe2.addEventListener('mozbrowseropenwindow', function(e) {
+ ok(false, "Got second mozbrowseropenwindow event.");
+ });
+
+ document.body.appendChild(iframe2);
+ iframe2.src = 'file_browserElement_BrowserWindowNamespace.html#2';
+ });
+ });
+
+ document.body.appendChild(iframe1);
+ iframe1.src = 'file_browserElement_BrowserWindowNamespace.html#1';
+}
+
+addEventListener('testready', runTest);