michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: const DUMMY = "browser/browser/base/content/test/general/dummy_page.html"; michael@0: michael@0: function loadNewTab(aURL, aCallback) { michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.loadURI(aURL); michael@0: michael@0: gBrowser.selectedBrowser.addEventListener("load", function() { michael@0: if (gBrowser.selectedBrowser.currentURI.spec != aURL) michael@0: return; michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: aCallback(gBrowser.selectedTab); michael@0: }, true); michael@0: } michael@0: michael@0: function getIdentityMode() { michael@0: return document.getElementById("identity-box").className; michael@0: } michael@0: michael@0: var TESTS = [ michael@0: function test_webpage() { michael@0: let oldTab = gBrowser.selectedTab; michael@0: michael@0: loadNewTab("http://example.com/" + DUMMY, function(aNewTab) { michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = oldTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = aNewTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.removeTab(aNewTab); michael@0: michael@0: runNextTest(); michael@0: }); michael@0: }, michael@0: michael@0: function test_blank() { michael@0: let oldTab = gBrowser.selectedTab; michael@0: michael@0: loadNewTab("about:blank", function(aNewTab) { michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = oldTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = aNewTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.removeTab(aNewTab); michael@0: michael@0: runNextTest(); michael@0: }); michael@0: }, michael@0: michael@0: function test_chrome() { michael@0: let oldTab = gBrowser.selectedTab; michael@0: michael@0: // Since users aren't likely to type in full chrome URLs, we won't show michael@0: // the positive security indicator on it, but we will show it on about:addons. michael@0: loadNewTab("chrome://mozapps/content/extensions/extensions.xul", function(aNewTab) { michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = oldTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = aNewTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.removeTab(aNewTab); michael@0: michael@0: runNextTest(); michael@0: }); michael@0: }, michael@0: michael@0: function test_https() { michael@0: let oldTab = gBrowser.selectedTab; michael@0: michael@0: loadNewTab("https://example.com/" + DUMMY, function(aNewTab) { michael@0: is(getIdentityMode(), "verifiedDomain", "Identity should be verified"); michael@0: michael@0: gBrowser.selectedTab = oldTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = aNewTab; michael@0: is(getIdentityMode(), "verifiedDomain", "Identity should be verified"); michael@0: michael@0: gBrowser.removeTab(aNewTab); michael@0: michael@0: runNextTest(); michael@0: }); michael@0: }, michael@0: michael@0: function test_addons() { michael@0: let oldTab = gBrowser.selectedTab; michael@0: michael@0: loadNewTab("about:addons", function(aNewTab) { michael@0: is(getIdentityMode(), "chromeUI", "Identity should be chrome"); michael@0: michael@0: gBrowser.selectedTab = oldTab; michael@0: is(getIdentityMode(), "unknownIdentity", "Identity should be unknown"); michael@0: michael@0: gBrowser.selectedTab = aNewTab; michael@0: is(getIdentityMode(), "chromeUI", "Identity should be chrome"); michael@0: michael@0: gBrowser.removeTab(aNewTab); michael@0: michael@0: runNextTest(); michael@0: }); michael@0: } michael@0: ]; michael@0: michael@0: var gTestStart = null; michael@0: michael@0: function runNextTest() { michael@0: if (gTestStart) michael@0: info("Test part took " + (Date.now() - gTestStart) + "ms"); michael@0: michael@0: if (TESTS.length == 0) { michael@0: finish(); michael@0: return; michael@0: } michael@0: michael@0: info("Running " + TESTS[0].name); michael@0: gTestStart = Date.now(); michael@0: TESTS.shift()(); michael@0: }; michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: runNextTest(); michael@0: }