From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../siteIdentity/browser_identityIcon_img_url.js | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js (limited to 'browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js') diff --git a/browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js b/browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js new file mode 100644 index 0000000000..9ef8b6dfed --- /dev/null +++ b/browser/base/content/test/siteIdentity/browser_identityIcon_img_url.js @@ -0,0 +1,148 @@ +/* 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/Log.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,
", + 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); + } +}); -- cgit v1.2.3