forked from mirrors/gecko-dev
148 lines
4.3 KiB
JavaScript
148 lines
4.3 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
/**
|
|
* Test Bug 1562881 - Ensuring the identity icon loads correct img in different
|
|
* circumstances.
|
|
*/
|
|
|
|
const kBaseURI = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"https://example.com"
|
|
);
|
|
|
|
const kBaseURILocalhost = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"http://127.0.0.1"
|
|
);
|
|
|
|
const TEST_CASES = [
|
|
{
|
|
type: "http",
|
|
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
|
testURL: "http://example.com",
|
|
img_url: `url("chrome://global/skin/icons/security-broken.svg")`,
|
|
},
|
|
{
|
|
type: "https",
|
|
testURL: "https://example.com",
|
|
img_url: `url("chrome://global/skin/icons/security.svg")`,
|
|
},
|
|
{
|
|
type: "non-chrome about page",
|
|
testURL: "about:about",
|
|
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
|
},
|
|
{
|
|
type: "chrome about page",
|
|
testURL: "about:preferences",
|
|
img_url: `url("chrome://branding/content/icon${
|
|
window.devicePixelRatio > 1 ? 32 : 16
|
|
}.png")`,
|
|
},
|
|
{
|
|
type: "file",
|
|
testURL: "dummy_page.html",
|
|
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
|
},
|
|
{
|
|
type: "resource",
|
|
testURL: "resource://gre/modules/AppConstants.sys.mjs",
|
|
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
|
},
|
|
{
|
|
type: "mixedPassiveContent",
|
|
testURL: kBaseURI + "file_mixedPassiveContent.html",
|
|
img_url: `url("chrome://global/skin/icons/security-warning.svg")`,
|
|
},
|
|
{
|
|
type: "mixedActiveContent",
|
|
testURL: kBaseURI + "file_csp_block_all_mixedcontent.html",
|
|
img_url: `url("chrome://global/skin/icons/security.svg")`,
|
|
},
|
|
{
|
|
type: "certificateError",
|
|
testURL: "https://self-signed.example.com",
|
|
img_url: `url("chrome://global/skin/icons/security-warning.svg")`,
|
|
},
|
|
{
|
|
type: "localhost",
|
|
testURL: "http://127.0.0.1",
|
|
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
|
},
|
|
{
|
|
type: "localhost + http frame",
|
|
testURL: kBaseURILocalhost + "file_csp_block_all_mixedcontent.html",
|
|
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
|
},
|
|
{
|
|
type: "data URI",
|
|
testURL: "data:text/html,<div>",
|
|
img_url: `url("chrome://global/skin/icons/security-broken.svg")`,
|
|
},
|
|
{
|
|
type: "view-source HTTP",
|
|
testURL: "view-source:http://example.com/",
|
|
img_url: `url("chrome://global/skin/icons/security-broken.svg")`,
|
|
},
|
|
{
|
|
type: "view-source HTTPS",
|
|
testURL: "view-source:https://example.com/",
|
|
img_url: `url("chrome://global/skin/icons/security.svg")`,
|
|
},
|
|
];
|
|
|
|
add_task(async function test() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
// By default, proxies don't apply to 127.0.0.1. We need them to for this test, though:
|
|
["network.proxy.allow_hijacking_localhost", true],
|
|
["security.mixed_content.upgrade_display_content", false],
|
|
],
|
|
});
|
|
|
|
for (let testData of TEST_CASES) {
|
|
info(`Testing for ${testData.type}`);
|
|
// Open the page for testing.
|
|
let testURL = testData.testURL;
|
|
|
|
// Overwrite the url if it is testing the file url.
|
|
if (testData.type === "file") {
|
|
let dir = getChromeDir(getResolvedURI(gTestPath));
|
|
dir.append(testURL);
|
|
dir.normalize();
|
|
testURL = Services.io.newFileURI(dir).spec;
|
|
}
|
|
|
|
let pageLoaded;
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
() => {
|
|
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, testURL);
|
|
let browser = gBrowser.selectedBrowser;
|
|
if (testData.type === "certificateError") {
|
|
pageLoaded = BrowserTestUtils.waitForErrorPage(browser);
|
|
} else {
|
|
pageLoaded = BrowserTestUtils.browserLoaded(browser);
|
|
}
|
|
},
|
|
false
|
|
);
|
|
await pageLoaded;
|
|
|
|
let identityIcon = document.getElementById("identity-icon");
|
|
|
|
// Get the image url from the identity icon.
|
|
let identityIconImageURL = gBrowser.ownerGlobal
|
|
.getComputedStyle(identityIcon)
|
|
.getPropertyValue("list-style-image");
|
|
|
|
is(
|
|
identityIconImageURL,
|
|
testData.img_url,
|
|
"The identity icon has a correct image url."
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
}
|
|
});
|