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/content-tabs/browser_installXpi.js | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 comm/mail/test/browser/content-tabs/browser_installXpi.js (limited to 'comm/mail/test/browser/content-tabs/browser_installXpi.js') diff --git a/comm/mail/test/browser/content-tabs/browser_installXpi.js b/comm/mail/test/browser/content-tabs/browser_installXpi.js new file mode 100644 index 0000000000..e90b18bca4 --- /dev/null +++ b/comm/mail/test/browser/content-tabs/browser_installXpi.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/. */ + +"use strict"; + +var utils = ChromeUtils.import("resource://testing-common/mozmill/utils.jsm"); + +var { open_content_tab_with_url } = ChromeUtils.import( + "resource://testing-common/mozmill/ContentTabHelpers.jsm" +); +var { mc } = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var url = + "http://mochi.test:8888/browser/comm/mail/test/browser/content-tabs/html/"; + +var gDocument; +var gNewTab; + +add_setup(function () { + gDocument = mc.window.document; + gNewTab = open_content_tab_with_url(url + "installxpi.html"); +}); + +registerCleanupFunction(function () { + mc.window.document.getElementById("tabmail").closeTab(gNewTab); +}); + +async function waitForNotification(id, buttonToClickSelector, callback) { + let notificationSelector = `#notification-popup > #${id}-notification`; + let notification; + utils.waitFor(() => { + notification = gDocument.querySelector(notificationSelector); + return notification && !notification.hidden; + }); + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + await new Promise(resolve => setTimeout(resolve, 500)); + if (callback) { + callback(); + } + if (buttonToClickSelector) { + let button = notification.querySelector(buttonToClickSelector); + EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, mc.window); + } + utils.waitFor(() => !gDocument.querySelector(notificationSelector)); +} + +add_task(async function test_install_corrupt_xpi() { + // This install with give us a corrupt xpi warning. + await BrowserTestUtils.synthesizeMouseAtCenter( + "#corruptlink", + {}, + gNewTab.browser + ); + await waitForNotification( + "addon-install-blocked", + ".popup-notification-primary-button" + ); + await waitForNotification( + "addon-install-failed", + ".popup-notification-primary-button" + ); +}); + +add_task(async function test_install_xpi_offer() { + await BrowserTestUtils.synthesizeMouseAtCenter( + "#installlink", + {}, + gNewTab.browser + ); + await waitForNotification( + "addon-install-blocked", + ".popup-notification-primary-button" + ); + await waitForNotification( + "addon-install-failed", + ".popup-notification-primary-button" + ); +}); + +add_task(async function test_xpinstall_disabled() { + Services.prefs.setBoolPref("xpinstall.enabled", false); + + // Try installation again - this time we'll get an install has been disabled message. + await BrowserTestUtils.synthesizeMouseAtCenter( + "#installlink", + {}, + gNewTab.browser + ); + await waitForNotification( + "xpinstall-disabled", + ".popup-notification-secondary-button" + ); + + Services.prefs.clearUserPref("xpinstall.enabled"); +}); + +add_task(async function test_xpinstall_actually_install() { + await BrowserTestUtils.synthesizeMouseAtCenter( + "#installlink", + {}, + gNewTab.browser + ); + await waitForNotification( + "addon-install-blocked", + ".popup-notification-primary-button" + ); + await waitForNotification( + "addon-install-failed", + ".popup-notification-primary-button" + ); +}); + +add_task(async function test_xpinstall_webext_actually_install() { + await BrowserTestUtils.synthesizeMouseAtCenter( + "#installwebextlink", + {}, + gNewTab.browser + ); + await waitForNotification( + "addon-install-blocked", + ".popup-notification-primary-button" + ); + await waitForNotification("addon-progress"); + await waitForNotification( + "addon-webext-permissions", + ".popup-notification-primary-button", + () => { + let permission = gDocument.getElementById( + "addon-webext-perm-single-entry" + ); + Assert.ok(!permission.hidden); + } + ); + await waitForNotification( + "addon-installed", + ".popup-notification-primary-button" + ); + + Assert.report( + false, + undefined, + undefined, + "Test ran to completion successfully" + ); +}); -- cgit v1.2.3