diff -r 000000000000 -r 6474c204b198 browser/base/content/test/general/browser_identity_UI.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/base/content/test/general/browser_identity_UI.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,114 @@ +/* Tests for correct behaviour of getEffectiveHost on identity handler */ +function test() { + waitForExplicitFinish(); + + ok(gIdentityHandler, "gIdentityHandler should exist"); + + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", checkResult, true); + + nextTest(); +} + +// Greek IDN for 'example.test'. +var idnDomain = "\u03C0\u03B1\u03C1\u03AC\u03B4\u03B5\u03B9\u03B3\u03BC\u03B1.\u03B4\u03BF\u03BA\u03B9\u03BC\u03AE"; +var tests = [ + { + name: "normal domain", + location: "http://test1.example.org/", + effectiveHost: "example.org" + }, + { + name: "view-source", + location: "view-source:http://example.com/", + effectiveHost: null + }, + { + name: "normal HTTPS", + location: "https://example.com/", + effectiveHost: "example.com", + isHTTPS: true + }, + { + name: "IDN subdomain", + location: "http://sub1." + idnDomain + "/", + effectiveHost: idnDomain + }, + { + name: "subdomain with port", + location: "http://sub1.test1.example.org:8000/", + effectiveHost: "example.org" + }, + { + name: "subdomain HTTPS", + location: "https://test1.example.com/", + + effectiveHost: "example.com", + isHTTPS: true + }, + { + name: "view-source HTTPS", + location: "view-source:https://example.com/", + effectiveHost: null, + isHTTPS: true + }, + { + name: "IP address", + location: "http://127.0.0.1:8888/", + effectiveHost: "127.0.0.1" + }, +] + +let gCurrentTest, gCurrentTestIndex = -1, gTestDesc; +// Go through the tests in both directions, to add additional coverage for +// transitions between different states. +let gForward = true; +let gCheckETLD = false; +function nextTest() { + if (!gCheckETLD) { + if (gForward) + gCurrentTestIndex++; + else + gCurrentTestIndex--; + + if (gCurrentTestIndex == tests.length) { + // Went too far, reverse + gCurrentTestIndex--; + gForward = false; + } + + if (gCurrentTestIndex == -1) { + gBrowser.selectedBrowser.removeEventListener("load", checkResult, true); + gBrowser.removeCurrentTab(); + finish(); + return; + } + + gCurrentTest = tests[gCurrentTestIndex]; + gTestDesc = "#" + gCurrentTestIndex + " (" + gCurrentTest.name + ")"; + if (!gForward) + gTestDesc += " (second time)"; + if (gCurrentTest.isHTTPS) { + gCheckETLD = true; + } + content.location = gCurrentTest.location; + } else { + gCheckETLD = false; + gTestDesc = "#" + gCurrentTestIndex + " (" + gCurrentTest.name + " without eTLD in identity icon label)"; + if (!gForward) + gTestDesc += " (second time)"; + content.location.reload(true); + } +} + +function checkResult() { + // Sanity check other values, and the value of gIdentityHandler.getEffectiveHost() + is(gIdentityHandler._lastUri.spec, gCurrentTest.location, "location matches for test " + gTestDesc); + // getEffectiveHost can't be called for all modes + if (gCurrentTest.effectiveHost === null) + is(gIdentityHandler._mode == gIdentityHandler.IDENTITY_MODE_UNKNOWN || gIdentityHandler._mode == gIdentityHandler.IDENTITY_MODE_CHROMEUI, true, "mode matched"); + else + is(gIdentityHandler.getEffectiveHost(), gCurrentTest.effectiveHost, "effectiveHost matches for test " + gTestDesc); + + executeSoon(nextTest); +}