michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: nextTest(); michael@0: } michael@0: michael@0: let urls = [ michael@0: "javascript:'foopy';", michael@0: "data:text/html,hi" michael@0: ]; michael@0: michael@0: function urlEnter(url) { michael@0: gURLBar.value = url; michael@0: gURLBar.focus(); michael@0: EventUtils.synthesizeKey("VK_RETURN", {}); michael@0: } michael@0: michael@0: function urlClick(url) { michael@0: gURLBar.value = url; michael@0: gURLBar.focus(); michael@0: let goButton = document.getElementById("urlbar-go-button"); michael@0: EventUtils.synthesizeMouseAtCenter(goButton, {}); michael@0: } michael@0: michael@0: function nextTest() { michael@0: let url = urls.shift(); michael@0: if (url) { michael@0: testURL(url, urlEnter, function () { michael@0: testURL(url, urlClick, nextTest); michael@0: }); michael@0: } michael@0: else michael@0: finish(); michael@0: } michael@0: michael@0: function testURL(url, loadFunc, endFunc) { michael@0: let tab = gBrowser.selectedTab = gBrowser.addTab(); michael@0: registerCleanupFunction(function () { michael@0: gBrowser.removeTab(tab); michael@0: }); michael@0: addPageShowListener(function () { michael@0: let pagePrincipal = gBrowser.contentPrincipal; michael@0: loadFunc(url); michael@0: michael@0: addPageShowListener(function () { michael@0: let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager); michael@0: is(fm.focusedElement, null, "should be no focused element"); michael@0: is(fm.focusedWindow, gBrowser.contentWindow, "content window should be focused"); michael@0: michael@0: ok(!gBrowser.contentPrincipal.equals(pagePrincipal), michael@0: "load of " + url + " by " + loadFunc.name + " should produce a page with a different principal"); michael@0: endFunc(); michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: function addPageShowListener(func) { michael@0: gBrowser.selectedBrowser.addEventListener("pageshow", function loadListener() { michael@0: gBrowser.selectedBrowser.removeEventListener("pageshow", loadListener, false); michael@0: func(); michael@0: }); michael@0: }