diff options
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js')
-rw-r--r-- | dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js | 57 |
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); |