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 --- ...ext_persistent_storage_permission_indication.js | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_persistent_storage_permission_indication.js (limited to 'browser/components/extensions/test/browser/browser_ext_persistent_storage_permission_indication.js') diff --git a/browser/components/extensions/test/browser/browser_ext_persistent_storage_permission_indication.js b/browser/components/extensions/test/browser/browser_ext_persistent_storage_permission_indication.js new file mode 100644 index 0000000000..0eb973af90 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_persistent_storage_permission_indication.js @@ -0,0 +1,131 @@ +/* -- Mode: indent-tabs-mode: nil; js-indent-level: 2 -- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +const { PermissionTestUtils } = ChromeUtils.importESModule( + "resource://testing-common/PermissionTestUtils.sys.mjs" +); + +function openPermissionPopup() { + let promise = BrowserTestUtils.waitForEvent( + window, + "popupshown", + true, + event => event.target == gPermissionPanel._permissionPopup + ); + gPermissionPanel._identityPermissionBox.click(); + info("Wait permission popup to be shown"); + return promise; +} + +function closePermissionPopup() { + let promise = BrowserTestUtils.waitForEvent( + gPermissionPanel._permissionPopup, + "popuphidden" + ); + gPermissionPanel._permissionPopup.hidePopup(); + info("Wait permission popup to be hidden"); + return promise; +} + +async function testPermissionPopup({ expectPermissionHidden }) { + await openPermissionPopup(); + + if (expectPermissionHidden) { + let permissionsList = document.getElementById( + "permission-popup-permission-list" + ); + is( + permissionsList.querySelectorAll( + ".permission-popup-permission-label-persistent-storage" + ).length, + 0, + "Persistent storage Permission should be hidden" + ); + } + + await closePermissionPopup(); + + // We need to test this after the popup has been closed. + // The permission icon will be shown as long as the popup is open, event if + // no permissions are set. + let permissionsGrantedIcon = document.getElementById( + "permissions-granted-icon" + ); + + if (expectPermissionHidden) { + ok( + BrowserTestUtils.is_hidden(permissionsGrantedIcon), + "Permission Granted Icon is hidden" + ); + } else { + ok( + BrowserTestUtils.is_visible(permissionsGrantedIcon), + "Permission Granted Icon is visible" + ); + } +} + +add_task(async function testPersistentStoragePermissionHidden() { + let extension = ExtensionTestUtils.loadExtension({ + background() { + browser.test.sendMessage("url", browser.runtime.getURL("testpage.html")); + }, + manifest: { + name: "Test Extension", + permissions: ["unlimitedStorage"], + }, + files: { + "testpage.html": "

Extension Test Page

", + }, + }); + + await extension.startup(); + + let url = await extension.awaitMessage("url"); + await BrowserTestUtils.withNewTab("about:blank", async browser => { + // Wait the tab to be fully loade, then run the test on the permission prompt. + let loaded = BrowserTestUtils.browserLoaded(browser, false, url); + BrowserTestUtils.loadURIString(browser, url); + await loaded; + await testPermissionPopup({ expectPermissionHidden: true }); + }); + + await extension.unload(); +}); + +add_task(async function testPersistentStoragePermissionVisible() { + let extension = ExtensionTestUtils.loadExtension({ + background() { + browser.test.sendMessage("url", browser.runtime.getURL("testpage.html")); + }, + manifest: { + name: "Test Extension", + }, + files: { + "testpage.html": "

Extension Test Page

", + }, + }); + + await extension.startup(); + + let url = await extension.awaitMessage("url"); + + let policy = WebExtensionPolicy.getByID(extension.id); + let principal = policy.extension.principal; + PermissionTestUtils.add( + principal, + "persistent-storage", + Services.perms.ALLOW_ACTION + ); + + await BrowserTestUtils.withNewTab("about:blank", async browser => { + // Wait the tab to be fully loade, then run the test on the permission prompt. + let loaded = BrowserTestUtils.browserLoaded(browser, false, url); + BrowserTestUtils.loadURIString(browser, url); + await loaded; + await testPermissionPopup({ expectPermissionHidden: false }); + }); + + await extension.unload(); +}); -- cgit v1.2.3