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 --- .../browser/browser_ext_identity_indication.js | 141 +++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_identity_indication.js (limited to 'browser/components/extensions/test/browser/browser_ext_identity_indication.js') diff --git a/browser/components/extensions/test/browser/browser_ext_identity_indication.js b/browser/components/extensions/test/browser/browser_ext_identity_indication.js new file mode 100644 index 0000000000..096f7a6f5b --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_identity_indication.js @@ -0,0 +1,141 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +function confirmDefaults() { + if (gURLBar.searchButton) { + is( + getComputedStyle(document.getElementById("identity-box")).display, + "none", + "Identity box should be hidden" + ); + } else { + is( + getComputedStyle(document.getElementById("identity-icon")).listStyleImage, + 'url("chrome://global/skin/icons/search-glass.svg")', + "Identity icon should be the search icon" + ); + } + + let label = document.getElementById("identity-icon-label"); + ok( + BrowserTestUtils.is_hidden(label), + "No label should be used before the extension is started" + ); +} + +async function waitForIndentityBoxMutation({ expectExtensionIcon }) { + const el = document.getElementById("identity-box"); + await BrowserTestUtils.waitForMutationCondition( + el, + { + attributeFilter: ["class"], + }, + () => el.classList.contains("extensionPage") == expectExtensionIcon + ); +} + +function confirmExtensionPage() { + let identityIconEl = document.getElementById("identity-icon"); + + is( + getComputedStyle(identityIconEl).listStyleImage, + 'url("chrome://mozapps/skin/extensions/extension.svg")', + "Identity icon should be the default extension icon" + ); + + is( + identityIconEl.tooltipText, + "Loaded by extension: Test Extension", + "The correct tooltip should be used" + ); + + let label = document.getElementById("identity-icon-label"); + is( + label.value, + "Extension (Test Extension)", + "The correct label should be used" + ); + ok(BrowserTestUtils.is_visible(label), "No label should be visible"); +} + +add_task(async function testIdentityIndication() { + let extension = ExtensionTestUtils.loadExtension({ + background() { + browser.test.sendMessage("url", browser.runtime.getURL("icon.png")); + }, + manifest: { + name: "Test Extension", + }, + files: { + "icon.png": "", + }, + }); + + await extension.startup(); + + confirmDefaults(); + + let url = await extension.awaitMessage("url"); + + const promiseIdentityBoxExtension = waitForIndentityBoxMutation({ + expectExtensionIcon: true, + }); + await BrowserTestUtils.withNewTab({ gBrowser, url }, async function () { + await promiseIdentityBoxExtension; + confirmExtensionPage(); + }); + + const promiseIdentityBoxDefault = waitForIndentityBoxMutation({ + expectExtensionIcon: false, + }); + await extension.unload(); + await promiseIdentityBoxDefault; + + confirmDefaults(); +}); + +add_task(async function testIdentityIndicationNewTab() { + let extension = ExtensionTestUtils.loadExtension({ + background() { + browser.test.sendMessage("url", browser.runtime.getURL("newtab.html")); + }, + manifest: { + name: "Test Extension", + browser_specific_settings: { + gecko: { + id: "@newtab", + }, + }, + chrome_url_overrides: { + newtab: "newtab.html", + }, + }, + files: { + "newtab.html": "

New tab!

", + }, + useAddonManager: "temporary", + }); + + await extension.startup(); + + confirmDefaults(); + + let url = await extension.awaitMessage("url"); + const promiseIdentityBoxExtension = waitForIndentityBoxMutation({ + expectExtensionIcon: true, + }); + await BrowserTestUtils.withNewTab({ gBrowser, url }, async function () { + await promiseIdentityBoxExtension; + confirmExtensionPage(); + is(gURLBar.value, "", "The URL bar is blank"); + }); + + const promiseIdentityBoxDefault = waitForIndentityBoxMutation({ + expectExtensionIcon: false, + }); + await extension.unload(); + await promiseIdentityBoxDefault; + + confirmDefaults(); +}); -- cgit v1.2.3