--- a/browser/base/content/test/general/browser_bug553455.js
+++ b/browser/base/content/test/general/browser_bug553455.js
@@ -37,17 +37,17 @@ function getObserverTopic(aNotificationI
topic = "addon-install-started";
else if (topic == "addon-install-restart")
topic = "addon-install-complete";
else if (topic == "addon-installed")
topic = "webextension-install-notify";
return topic;
}
-async function waitForProgressNotification(aPanelOpen = false, aExpectedCount = 1) {
+async function waitForProgressNotification(aPanelOpen = false, aExpectedCount = 1, wantDisabled = true) {
let notificationId = PROGRESS_NOTIFICATION;
info("Waiting for " + notificationId + " notification");
let topic = getObserverTopic(notificationId);
let observerPromise = new Promise(resolve => {
Services.obs.addObserver(function observer(aSubject, aTopic, aData) {
// Ignore the progress notification unless that is the notification we want
@@ -77,39 +77,42 @@ async function waitForProgressNotificati
info("Saw a notification");
ok(PopupNotifications.isPanelOpen, "Panel should be open");
is(PopupNotifications.panel.childNodes.length, aExpectedCount, "Should be the right number of notifications");
if (PopupNotifications.panel.childNodes.length) {
let nodes = Array.from(PopupNotifications.panel.childNodes);
let notification = nodes.find(n => n.id == notificationId + "-notification");
ok(notification, `Should have seen the right notification`);
- ok(notification.button.hasAttribute("disabled"),
- "The install button should be disabled");
+ is(notification.button.hasAttribute("disabled"), wantDisabled,
+ "The install button should be disabled?");
}
return PopupNotifications.panel;
}
async function waitForNotification(aId, aExpectedCount = 1) {
info("Waiting for " + aId + " notification");
let topic = getObserverTopic(aId);
- let observerPromise = new Promise(resolve => {
- Services.obs.addObserver(function observer(aSubject, aTopic, aData) {
- // Ignore the progress notification unless that is the notification we want
- if (aId != PROGRESS_NOTIFICATION &&
- aTopic == getObserverTopic(PROGRESS_NOTIFICATION)) {
- return;
- }
- Services.obs.removeObserver(observer, topic);
- resolve();
- }, topic);
- });
+ let observerPromise;
+ if (aId !== "addon-webext-permissions") {
+ observerPromise = new Promise(resolve => {
+ Services.obs.addObserver(function observer(aSubject, aTopic, aData) {
+ // Ignore the progress notification unless that is the notification we want
+ if (aId != PROGRESS_NOTIFICATION &&
+ aTopic == getObserverTopic(PROGRESS_NOTIFICATION)) {
+ return;
+ }
+ Services.obs.removeObserver(observer, topic);
+ resolve();
+ }, topic);
+ });
+ }
let panelEventPromise = new Promise(resolve => {
PopupNotifications.panel.addEventListener("PanelUpdated", function eventListener(e) {
// Skip notifications that are not the one that we are supposed to be looking for
if (!e.detail.includes(aId)) {
return;
}
PopupNotifications.panel.removeEventListener("PanelUpdated", eventListener);
@@ -137,19 +140,19 @@ function waitForNotificationClose() {
return new Promise(resolve => {
info("Waiting for notification to close");
PopupNotifications.panel.addEventListener("popuphidden", function() {
resolve();
}, {once: true});
});
}
-async function waitForInstallDialog() {
+async function waitForInstallDialog(id = "addon-webext-permissions") {
if (Services.prefs.getBoolPref("xpinstall.customConfirmationUI", false)) {
- let panel = await waitForNotification("addon-install-confirmation");
+ let panel = await waitForNotification(id);
return panel.childNodes[0];
}
info("Waiting for install dialog");
let window = await new Promise(resolve => {
Services.wm.addListener({
onOpenWindow(aXULWindow) {
@@ -281,31 +284,29 @@ async function test_blockedInstall() {
let dialogPromise = waitForInstallDialog();
// Click on Allow
EventUtils.synthesizeMouse(notification.button, 20, 10, {});
// Notification should have changed to progress notification
ok(PopupNotifications.isPanelOpen, "Notification should still be open");
notification = panel.childNodes[0];
is(notification.id, "addon-progress-notification", "Should have seen the progress notification");
+
let installDialog = await dialogPromise;
- notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
+ notificationPromise = waitForNotification("addon-installed");
+ installDialog.button.click();
panel = await notificationPromise;
- notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "XPI Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
+ let installs = await getInstalls();
+ is(installs.length, 0, "Should be no pending installs");
- let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending install");
- installs[0].cancel();
+ let addon = await AddonManager.getAddonByID("amosigned-xpi@tests.mozilla.org");
+ addon.uninstall();
+
await removeTab();
},
async function test_whitelistedInstall() {
let originalTab = gBrowser.selectedTab;
let tab;
gBrowser.selectedTab = originalTab;
let pm = Services.perms;
@@ -320,29 +321,25 @@ async function test_whitelistedInstall()
+ triggers).then(newTab => tab = newTab);
await progressPromise;
let installDialog = await dialogPromise;
await BrowserTestUtils.waitForCondition(() => !!tab, "tab should be present");
is(gBrowser.selectedTab, tab,
"tab selected in response to the addon-install-confirmation notification");
- let notificationPromise = waitForNotification("addon-install-restart");
+ let notificationPromise = waitForNotification("addon-installed");
acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "XPI Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
+ await notificationPromise;
let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending install");
- installs[0].cancel();
+ is(installs.length, 0, "Should be no pending installs");
+
+ let addon = await AddonManager.getAddonByID("amosigned-xpi@tests.mozilla.org");
+ addon.uninstall();
Services.perms.remove(makeURI("http://example.com/"), "install");
await removeTab();
},
async function test_failedDownload() {
let pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
@@ -398,30 +395,30 @@ async function test_incompatible() {
"XPI": "incompatible.xpi"
}));
BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
await progressPromise;
let panel = await failPromise;
let notification = panel.childNodes[0];
is(notification.getAttribute("label"),
- "XPI Test could not be installed because it is not compatible with " +
- gApp + " " + gVersion + ".",
+ "The add-on downloaded from this site could not be installed because " +
+ "it appears to be corrupt.",
"Should have seen the right message");
Services.perms.remove(makeURI("http://example.com/"), "install");
await removeTab();
},
async function test_restartless() {
let pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
+ let dialogPromise = waitForInstallDialog("addon-install-confirmation");
let triggers = encodeURIComponent(JSON.stringify({
"XPI": "restartless.xpi"
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
await progressPromise;
let installDialog = await dialogPromise;
@@ -527,17 +524,17 @@ async function test_allUnverified() {
Services.prefs.getBoolPref("xpinstall.signatures.required", true) ||
AppConstants.MOZ_REQUIRE_SIGNING) {
return;
}
let pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
+ let dialogPromise = waitForInstallDialog("addon-install-confirmation");
let triggers = encodeURIComponent(JSON.stringify({
"Extension XPI": "restartless-unsigned.xpi"
}));
BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
await progressPromise;
let installDialog = await dialogPromise;
let notification = document.getElementById("addon-install-confirmation-notification");
@@ -559,42 +556,16 @@ async function test_allUnverified() {
});
});
addon.uninstall();
Services.perms.remove(makeURI("http://example.com/"), "install");
await removeTab();
},
-async function test_url() {
- let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
- await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
- gBrowser.loadURI(TESTROOT + "amosigned.xpi");
- await progressPromise;
- let installDialog = await dialogPromise;
-
- let notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "XPI Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
-
- let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending install");
- installs[0].cancel();
-
- await removeTab();
-},
-
async function test_localFile() {
let cr = Cc["@mozilla.org/chrome/chrome-registry;1"]
.getService(Ci.nsIChromeRegistry);
let path;
try {
path = cr.convertChromeURL(makeURI(CHROMEROOT + "corrupt.xpi")).spec;
} catch (ex) {
path = CHROMEROOT + "corrupt.xpi";
@@ -625,20 +596,20 @@ async function test_localFile() {
async function test_tabClose() {
if (!Services.prefs.getBoolPref("xpinstall.customConfirmationUI", false)) {
info("Test skipped due to xpinstall.customConfirmationUI being false.");
return;
}
let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
+ let dialogPromise = waitForInstallDialog("addon-install-confirmation");
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
- gBrowser.loadURI(TESTROOT + "amosigned.xpi");
+ gBrowser.loadURI(TESTROOT + "restartless.xpi");
await progressPromise;
await dialogPromise;
let installs = await getInstalls();
is(installs.length, 1, "Should be one pending install");
let closePromise = waitForNotificationClose();
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
@@ -653,19 +624,19 @@ async function test_tabClose() {
async function test_tabNavigate() {
if (!Services.prefs.getBoolPref("xpinstall.customConfirmationUI", false)) {
return;
}
let pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
+ let dialogPromise = waitForInstallDialog("addon-install-confirmation");
let triggers = encodeURIComponent(JSON.stringify({
- "Extension XPI": "amosigned.xpi"
+ "Extension XPI": "restartless.xpi"
}));
BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
await progressPromise;
await dialogPromise;
let closePromise = waitForNotificationClose();
let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
gBrowser.loadURI("about:blank");
@@ -681,46 +652,16 @@ async function test_tabNavigate() {
let installs = await getInstalls();
is(installs.length, 0, "Should be no pending install");
Services.perms.remove(makeURI("http://example.com/"), "install");
await loadPromise;
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
},
-async function test_urlBar() {
- let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
- await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
- gURLBar.value = TESTROOT + "amosigned.xpi";
- gURLBar.focus();
- EventUtils.synthesizeKey("KEY_Enter");
-
- await progressPromise;
- let installDialog = await dialogPromise;
-
- let notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "XPI Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
-
- let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending install");
- installs[0].cancel();
-
- await removeTab();
-},
-
async function test_wrongHost() {
let requestedUrl = TESTROOT2 + "enabled.html";
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
let loadedPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, requestedUrl);
gBrowser.loadURI(TESTROOT2 + "enabled.html");
await loadedPromise;
@@ -734,101 +675,16 @@ async function test_wrongHost() {
is(notification.getAttribute("label"),
"The add-on downloaded from this site could not be installed " +
"because it appears to be corrupt.",
"Should have seen the right message");
await removeTab();
},
-async function test_reload() {
- let pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
- let triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": "amosigned.xpi"
- }));
- BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
- await progressPromise;
- let installDialog = await dialogPromise;
-
- let notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "XPI Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
-
- function testFail() {
- ok(false, "Reloading should not have hidden the notification");
- }
- PopupNotifications.panel.addEventListener("popuphiding", testFail);
- let requestedUrl = TESTROOT2 + "enabled.html";
- let loadedPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, requestedUrl);
- gBrowser.loadURI(TESTROOT2 + "enabled.html");
- await loadedPromise;
- PopupNotifications.panel.removeEventListener("popuphiding", testFail);
-
- let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending install");
- installs[0].cancel();
-
- Services.perms.remove(makeURI("http://example.com/"), "install");
- await removeTab();
-},
-
-async function test_theme() {
- let pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
- let triggers = encodeURIComponent(JSON.stringify({
- "Theme XPI": "theme.xpi"
- }));
- BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
- await progressPromise;
- let installDialog = await dialogPromise;
-
- let notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let notification = panel.childNodes[0];
- is(notification.button.label, "Restart Now", "Should have seen the right button");
- is(notification.getAttribute("label"),
- "Theme Test will be installed after you restart " + gApp + ".",
- "Should have seen the right message");
-
- let addon = await new Promise(resolve => {
- AddonManager.getAddonByID("{972ce4c6-7e08-4474-a285-3208198ce6fd}", function(result) {
- resolve(result);
- });
- });
- ok(addon.userDisabled, "Should be switching away from the default theme.");
- // Undo the pending theme switch
- addon.userDisabled = false;
-
- addon = await new Promise(resolve => {
- AddonManager.getAddonByID("theme-xpi@tests.mozilla.org", function(result) {
- resolve(result);
- });
- });
- isnot(addon, null, "Test theme will have been installed");
- addon.uninstall();
-
- Services.perms.remove(makeURI("http://example.com/"), "install");
- await removeTab();
-},
-
async function test_renotifyBlocked() {
let notificationPromise = waitForNotification("addon-install-blocked");
let triggers = encodeURIComponent(JSON.stringify({
"XPI": "amosigned.xpi"
}));
BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
let panel = await notificationPromise;
@@ -851,63 +707,16 @@ async function test_renotifyBlocked() {
closePromise = waitForNotificationClose();
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
await closePromise;
installs = await getInstalls();
is(installs.length, 0, "Should have cancelled the installs");
},
-async function test_renotifyInstalled() {
- let pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- let progressPromise = waitForProgressNotification();
- let dialogPromise = waitForInstallDialog();
- let triggers = encodeURIComponent(JSON.stringify({
- "XPI": "amosigned.xpi"
- }));
- BrowserTestUtils.openNewForegroundTab(gBrowser, TESTROOT + "installtrigger.html?" + triggers);
- await progressPromise;
- let installDialog = await dialogPromise;
-
- // Wait for the complete notification
- let notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- let panel = await notificationPromise;
-
- let closePromise = waitForNotificationClose();
- // hide the panel (this simulates the user dismissing it)
- panel.hidePopup();
- await closePromise;
-
- // Install another
- await new Promise(resolve => executeSoon(resolve));
-
- progressPromise = waitForProgressNotification();
- dialogPromise = waitForInstallDialog();
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
- await progressPromise;
- installDialog = await dialogPromise;
-
- info("Timeouts after this probably mean bug 589954 regressed");
-
- // Wait for the complete notification
- notificationPromise = waitForNotification("addon-install-restart");
- acceptInstallDialog(installDialog);
- await notificationPromise;
-
- let installs = await getInstalls();
- is(installs.length, 1, "Should be one pending installs");
- installs[0].cancel();
-
- Services.perms.remove(makeURI("http://example.com/"), "install");
- await removeTab();
-},
-
async function test_cancel() {
let pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
let notificationPromise = waitForNotification(PROGRESS_NOTIFICATION);
let triggers = encodeURIComponent(JSON.stringify({
"XPI": "slowinstall.sjs?file=amosigned.xpi"
}));
--- a/browser/base/content/test/webextensions/browser_extension_sideloading.js
+++ b/browser/base/content/test/webextensions/browser_extension_sideloading.js
@@ -26,16 +26,17 @@ async function createWebExtension(detail
}
async function createXULExtension(details) {
let xpi = AddonTestUtils.createTempXPIFile({
"install.rdf": {
id: details.id,
name: details.name,
version: "0.1",
+ bootstrap: true,
targetApplications: [{
id: "toolkit@mozilla.org",
minVersion: "0",
maxVersion: "*",
}],
},
});
deleted file mode 100644
index d6df8f9d0ee83eea0da5403bfd321f155e786e45..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/browser/addons/browser_install1_1/install.rdf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>install1@tests.mozilla.org</em:id>
- <em:version>1.0</em:version>
- <em:bootstrap>true</em:bootstrap>
- <em:updateURL>http://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_install.rdf</em:updateURL>
-
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.3</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <em:targetApplication>
- <Description>
- <em:id>toolkit@mozilla.org</em:id>
- <em:minVersion>0</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>Install Tests</em:name>
-
- </Description>
-</RDF>
deleted file mode 100644
index 5468e6cb0203214f0dc3959d3ef2f679666613b4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/browser/addons/browser_install1_2/install.rdf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>install1@tests.mozilla.org</em:id>
- <em:version>2.0</em:version>
-
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.3</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <em:targetApplication>
- <Description>
- <em:id>toolkit@mozilla.org</em:id>
- <em:minVersion>0</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>Install Tests</em:name>
-
- </Description>
-</RDF>
index 999535a974294902dc89052134fb1c89af018cf3..8d23fb88edb0db59e5b86fe84237e5ffe07acf1e
GIT binary patch
literal 4293
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
rename from toolkit/mozapps/extensions/test/browser/addons/browser_installssl/install.rdf
rename to toolkit/mozapps/extensions/test/browser/addons/browser_installssl/manifest.json
--- a/toolkit/mozapps/extensions/test/browser/addons/browser_installssl/install.rdf
+++ b/toolkit/mozapps/extensions/test/browser/addons/browser_installssl/manifest.json
@@ -1,30 +1,12 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>sslinstall@tests.mozilla.org</em:id>
- <em:version>1.0</em:version>
+{
+ "manifest_version": 2,
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.3</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
+ "applications": {
+ "gecko": {
+ "id": "sslinstall-1@tests.mozilla.org"
+ }
+ },
- <em:targetApplication>
- <Description>
- <em:id>toolkit@mozilla.org</em:id>
- <em:minVersion>0</em:minVersion>
- <em:maxVersion>*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>SSL Install Tests</em:name>
-
- </Description>
-</RDF>
+ "name": "SSL Install Tests",
+ "version": "1.0"
+}
--- a/toolkit/mozapps/extensions/test/browser/browser.ini
+++ b/toolkit/mozapps/extensions/test/browser/browser.ini
@@ -73,17 +73,16 @@ skip-if = buildapp == 'mulet'
[browser_dragdrop_incompat.js]
[browser_experiments.js]
[browser_file_xpi_no_process_switch.js]
[browser_getmorethemes.js]
[browser_globalwarnings.js]
[browser_gmpProvider.js]
skip-if = os == 'linux' && !debug # Bug 1398766
[browser_inlinesettings_browser.js]
-[browser_install.js]
[browser_installssl.js]
[browser_legacy.js]
[browser_legacy_pre57.js]
[browser_legacy_themes.js]
[browser_list.js]
[browser_manualupdates.js]
[browser_newaddon.js]
[browser_pluginprefs.js]
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/browser/browser_install.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// Tests tha installs and undoing installs show up correctly
-
-var gManagerWindow;
-var gCategoryUtilities;
-
-var gApp = document.getElementById("bundle_brand").getString("brandShortName");
-
-function test() {
- requestLongerTimeout(2);
- waitForExplicitFinish();
-
- // Allow http update checks
- Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
-
- open_manager(null, function(aWindow) {
- gManagerWindow = aWindow;
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- run_next_test();
- });
-}
-
-function end_test() {
- close_manager(gManagerWindow, function() {
- Services.prefs.clearUserPref("extensions.checkUpdateSecurity");
-
- AddonManager.getAddonByID("install1@tests.mozilla.org", function(aAddon) {
- aAddon.uninstall();
- finish();
- });
- });
-}
-
-function get_node(parent, anonid) {
- return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid);
-}
-
-function installAddon(aCallback) {
- AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_2.xpi",
- function(aInstall) {
- aInstall.addListener({
- onInstallEnded() {
- executeSoon(aCallback);
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-function installUpgrade(aCallback) {
- AddonManager.getAddonByID("install1@tests.mozilla.org", function(aAddon) {
- aAddon.findUpdates({
- onUpdateAvailable(aAddon, aInstall) {
- is(get_list_item_count(), 1, "Should be only one item in the list");
-
- aInstall.addListener({
- onDownloadEnded() {
- is(get_list_item_count(), 1, "Should be only one item in the list once the update has started");
- },
- onInstallEnded() {
- executeSoon(aCallback);
- }
- });
- aInstall.install();
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
-}
-
-function cancelInstall(aCallback) {
- AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_2.xpi",
- function(aInstall) {
- aInstall.addListener({
- onDownloadEnded(aInstall) {
- executeSoon(function() {
- aInstall.cancel();
- aCallback();
- });
- return false;
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-function get_list_item_count() {
- return get_test_items_in_list(gManagerWindow).length;
-}
-
-function check_undo_install() {
- is(get_list_item_count(), 1, "Should be only one item in the list");
-
- let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!!item, "Should see the pending install in the list");
- // Force XBL to apply
- item.clientTop;
- is_element_visible(get_node(item, "pending"), "Pending message should be visible");
- is(get_node(item, "pending").textContent, "Install Tests will be installed after you restart " + gApp + ".", "Pending message should be correct");
-
- EventUtils.synthesizeMouseAtCenter(get_node(item, "undo-btn"), {}, gManagerWindow);
-
- is(get_list_item_count(), 0, "Should be no items in the list");
-
- item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!item, "Should no longer see the pending install");
-}
-
-function check_undo_upgrade() {
- is(get_list_item_count(), 1, "Should be only one item in the list");
-
- let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!!item, "Should see the pending upgrade in the list");
- // Force XBL to apply
- item.clientTop;
- is_element_visible(get_node(item, "pending"), "Pending message should be visible");
- is(get_node(item, "pending").textContent, "Install Tests will be updated after you restart " + gApp + ".", "Pending message should be correct");
-
- EventUtils.synthesizeMouseAtCenter(get_node(item, "undo-btn"), {}, gManagerWindow);
-
- is(get_list_item_count(), 1, "Should be only one item in the list");
-
- item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!!item, "Should still see installed item in the list");
- is_element_hidden(get_node(item, "pending"), "Pending message should be hidden");
-}
-
-// Install an add-on through the API with the manager open
-add_test(function() {
- gCategoryUtilities.openType("extension", function() {
- installAddon(function() {
- check_undo_install();
- run_next_test();
- });
- });
-});
-
-// Install an add-on with the manager closed then open it
-add_test(function() {
- close_manager(gManagerWindow, function() {
- installAddon(function() {
- open_manager(null, function(aWindow) {
- gManagerWindow = aWindow;
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- check_undo_install();
- run_next_test();
- });
- });
- });
-});
-
-// Cancel an install after download with the manager open
-add_test(function() {
- cancelInstall(function() {
- is(get_list_item_count(), 0, "Should be no items in the list");
-
- run_next_test();
- });
-});
-
-// Cancel an install after download with the manager closed
-add_test(function() {
- close_manager(gManagerWindow, function() {
- cancelInstall(function() {
- open_manager(null, function(aWindow) {
- gManagerWindow = aWindow;
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- is(get_list_item_count(), 0, "Should be no items in the list");
-
- run_next_test();
- });
- });
- });
-});
-
-// Install an existing add-on for the subsequent tests
-add_test(function() {
- AddonManager.getInstallForURL(TESTROOT + "addons/browser_install1_1.xpi",
- function(aInstall) {
- aInstall.addListener({
- onInstallEnded: run_next_test
- });
- aInstall.install();
- }, "application/x-xpinstall");
-});
-
-// Install an upgrade through the API with the manager open
-add_test(function() {
- installAddon(function() {
- check_undo_upgrade();
- run_next_test();
- });
-});
-
-// Install an upgrade through the API with the manager open
-add_test(function() {
- installUpgrade(function() {
- check_undo_upgrade();
- run_next_test();
- });
-});
-
-// Install an upgrade through the API with the manager closed
-add_test(function() {
- close_manager(gManagerWindow, function() {
- installAddon(function() {
- open_manager(null, function(aWindow) {
- gManagerWindow = aWindow;
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- check_undo_upgrade();
- run_next_test();
- });
- });
- });
-});
-
-// Cancel an upgrade after download with the manager open
-add_test(function() {
- cancelInstall(function() {
- is(get_list_item_count(), 1, "Should be no items in the list");
- let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!!item, "Should still see installed item in the list");
- is_element_hidden(get_node(item, "pending"), "Pending message should be hidden");
-
- run_next_test();
- });
-});
-
-// Cancel an upgrade after download with the manager closed
-add_test(function() {
- close_manager(gManagerWindow, function() {
- cancelInstall(function() {
- open_manager(null, function(aWindow) {
- gManagerWindow = aWindow;
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- is(get_list_item_count(), 1, "Should be no items in the list");
- let item = get_addon_element(gManagerWindow, "install1@tests.mozilla.org");
- ok(!!item, "Should still see installed item in the list");
- is_element_hidden(get_node(item, "pending"), "Pending message should be hidden");
-
- run_next_test();
- });
- });
- });
-});
--- a/toolkit/mozapps/extensions/test/browser/browser_install.rdf
+++ b/toolkit/mozapps/extensions/test/browser/browser_install.rdf
@@ -1,26 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
- <Description about="urn:mozilla:extension:install1@tests.mozilla.org">
+ <Description about="urn:mozilla:extension:install-1@tests.mozilla.org">
<em:updates>
<Seq>
<li>
<Description>
<em:version>2.0</em:version>
<em:targetApplication>
<Description>
<em:id>toolkit@mozilla.org</em:id>
<em:minVersion>0</em:minVersion>
<em:maxVersion>*</em:maxVersion>
<em:updateLink>https://example.com/browser/toolkit/mozapps/extensions/test/browser/browser_install1_3.xpi</em:updateLink>
- <em:updateHash>sha1:4f0f4391914e3e036beca50cbac33958e5269643</em:updateHash>
+ <em:updateHash>sha1:f9027a7d2b3d7527431285bb508f1119954f4d87</em:updateHash>
</Description>
</em:targetApplication>
</Description>
</li>
</Seq>
</em:updates>
</Description>
index de3c90353e563869fa0db7e7467b967574a69fa2..b1a3706d16d05e48d77aaa598611d1960b78091e
GIT binary patch
literal 4277
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
W7cDgm%)cI>|2}}<Gv*QgrTznk;>OGX
index 4edf91e34a903af625951e97bffc5db5c0793cbe..f2948e6994118356876e725ad93fbef15188cc92
GIT binary patch
literal 4287
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
--- a/toolkit/mozapps/extensions/test/xpinstall/browser.ini
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser.ini
@@ -1,34 +1,31 @@
[DEFAULT]
support-files =
amosigned.xpi
authRedirect.sjs
bug540558.html
bug638292.html
bug645699.html
- concurrent_installs.html
cookieRedirect.sjs
corrupt.xpi
empty.xpi
enabled.html
hashRedirect.sjs
head.js
incompatible.xpi
installchrome.html
installtrigger.html
installtrigger_frame.html
navigate.html
redirect.sjs
restartless.xpi
restartless-unsigned.xpi
signed-no-cn.xpi
signed-no-o.xpi
- signed-tampered.xpi
- signed-untrusted.xpi
signed.xpi
slowinstall.sjs
startsoftwareupdate.html
theme.xpi
triggerredirect.html
unsigned.xpi
[browser_amosigned_trigger.js]
@@ -43,17 +40,16 @@ support-files =
[browser_badhash.js]
[browser_badhashtype.js]
[browser_bug540558.js]
[browser_bug611242.js]
[browser_bug638292.js]
[browser_bug645699.js]
[browser_bug672485.js]
skip-if = true # disabled due to a leak. See bug 682410.
-[browser_concurrent_installs.js]
[browser_cookies.js]
[browser_cookies2.js]
[browser_cookies3.js]
[browser_cookies4.js]
skip-if = true # Bug 1084646
[browser_corrupt.js]
[browser_datauri.js]
[browser_empty.js]
@@ -68,40 +64,19 @@ skip-if = true # Bug 1084646
[browser_httphash4.js]
[browser_httphash5.js]
[browser_httphash6.js]
[browser_installchrome.js]
[browser_localfile.js]
[browser_localfile2.js]
[browser_localfile3.js]
[browser_localfile4.js]
-[browser_navigateaway.js]
-[browser_navigateaway2.js]
-[browser_navigateaway3.js]
-skip-if = (os == "mac" || os == "win") # Bug 1198261
-[browser_navigateaway4.js]
[browser_offline.js]
[browser_relative.js]
-[browser_signed_tampered.js]
-skip-if = require_signing
-[browser_signed_trigger.js]
-skip-if = require_signing
-[browser_signed_untrusted.js]
-skip-if = require_signing
-[browser_signed_url.js]
-skip-if = require_signing
[browser_softwareupdate.js]
-[browser_switchtab.js]
[browser_trigger_redirect.js]
[browser_unsigned_trigger.js]
skip-if = require_signing
[browser_unsigned_trigger_iframe.js]
skip-if = require_signing
[browser_unsigned_trigger_xorigin.js]
[browser_unsigned_url.js]
skip-if = require_signing
-[browser_whitelist.js]
-[browser_whitelist2.js]
-[browser_whitelist3.js]
-[browser_whitelist4.js]
-[browser_whitelist5.js]
-[browser_whitelist6.js]
-[browser_whitelist7.js]
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger.js
@@ -17,22 +17,18 @@ function test() {
IconURL: TESTROOT + "icon.png",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger_iframe.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger_iframe.js
@@ -18,22 +18,18 @@ function test() {
IconURL: TESTROOT + "icon.png",
toString() { return this.URL; }
}
})));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger_frame.html?" + inner_url);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_url.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_url.js
@@ -7,22 +7,18 @@ function test() {
Harness.setup();
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
gBrowser.loadURI(TESTROOT + "amosigned.xpi");
});
}
-function confirm_install(window) {
- let items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have had the filename for the item name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, "", "Should have listed no icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_bug645699.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_bug645699.js
@@ -16,17 +16,17 @@ function test() {
}
function allow_blocked(installInfo) {
is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri");
return false;
}
-function confirm_install(window) {
+function confirm_install(panel) {
ok(false, "Should not see the install dialog");
return false;
}
function finish_test(count) {
is(count, 0, "0 Add-ons should have been successfully installed");
Services.perms.remove(makeURI("http://addons.mozilla.org"), "install");
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_bug672485.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_bug672485.js
@@ -20,17 +20,17 @@ function test() {
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": TESTROOT + "amosigned.xpi"
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
-function confirm_install(window) {
+function confirm_install(panel) {
ok(false, "Should not see the install dialog");
return false;
}
function cancelled_install() {
ok(true, "Install should b cancelled");
}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_concurrent_installs.js
+++ /dev/null
@@ -1,123 +0,0 @@
-// Test that having two frames that request installs at the same time doesn't
-// cause callback ID conflicts (discussed in bug 926712)
-
-var gConcurrentTabs = [];
-var gQueuedForInstall = [];
-var gResults = [];
-
-function frame_script() {
- /* globals addMessageListener, sendAsyncMessage*/
- addMessageListener("Test:StartInstall", () => {
- content.document.getElementById("installnow").click();
- });
-
- addEventListener("load", () => {
- sendAsyncMessage("Test:Loaded");
-
- content.addEventListener("InstallComplete", (e) => {
- sendAsyncMessage("Test:InstallComplete", e.detail);
- }, true);
- }, true);
-}
-
-var gAddonAndWindowListener = {
- onOpenWindow(win) {
- var window = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
- info("Window opened");
-
- waitForFocus(function() {
- info("Focused!");
- // Initially the accept button is disabled on a countdown timer
- let button = window.document.documentElement.getButton("accept");
- button.disabled = false;
- if (gQueuedForInstall.length > 0) {
- // Start downloading the next add-on while we accept this dialog:
- installNext();
- }
- window.document.documentElement.acceptDialog();
- }, window);
- },
- onCloseWindow(win) { },
- onInstallEnded(install) {
- install.cancel();
- },
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowMediatorListener])
-};
-
-function installNext() {
- let tab = gQueuedForInstall.shift();
- tab.linkedBrowser.messageManager.sendAsyncMessage("Test:StartInstall");
-}
-
-function createTab(url) {
- let tab = BrowserTestUtils.addTab(gBrowser, url);
- tab.linkedBrowser.messageManager.loadFrameScript("data:,(" + frame_script.toString() + ")();", true);
-
- tab.linkedBrowser.messageManager.addMessageListener("Test:InstallComplete", ({data}) => {
- gResults.push(data);
- if (gResults.length == 2) {
- executeSoon(endThisTest);
- }
- });
-
- return tab;
-}
-
-function test() {
- waitForExplicitFinish();
-
- Services.prefs.setBoolPref(PREF_LOGGING_ENABLED, true);
- Services.prefs.setBoolPref(PREF_INSTALL_REQUIRESECUREORIGIN, false);
- Services.wm.addListener(gAddonAndWindowListener);
- AddonManager.addInstallListener(gAddonAndWindowListener);
- registerCleanupFunction(function() {
- Services.wm.removeListener(gAddonAndWindowListener);
- AddonManager.removeInstallListener(gAddonAndWindowListener);
- Services.prefs.clearUserPref(PREF_LOGGING_ENABLED);
- Services.prefs.clearUserPref(PREF_INSTALL_REQUIRESECUREORIGIN);
-
- Services.perms.remove(makeURI("http://example.com"), "install");
- Services.perms.remove(makeURI("http://example.org"), "install");
-
- while (gConcurrentTabs.length) {
- gBrowser.removeTab(gConcurrentTabs.shift());
- }
- });
-
- let pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
- pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION);
-
- gConcurrentTabs.push(createTab(TESTROOT + "concurrent_installs.html"));
- gConcurrentTabs.push(createTab(TESTROOT2 + "concurrent_installs.html"));
-
- let promises = gConcurrentTabs.map((t) => {
- return new Promise(resolve => {
- t.linkedBrowser.messageManager.addMessageListener("Test:Loaded", resolve);
- });
- });
-
- Promise.all(promises).then(() => {
- gQueuedForInstall = [...gConcurrentTabs];
- installNext();
- });
-}
-
-function endThisTest() {
- is(gResults.length, 2, "Should have two urls");
- isnot(gResults[0].loc, gResults[1].loc, "Should not have results from the same page.");
- isnot(gResults[0].xpi, gResults[1].xpi, "Should not have the same XPIs.");
- for (let i = 0; i < 2; i++) {
- let {loc, xpi} = gResults[i];
- if (loc.includes("example.org")) {
- ok(xpi.includes("example.org"), "Should get .org XPI for .org loc");
- } else if (loc.includes("example.com")) {
- ok(xpi.includes("example.com"), "Should get .com XPI for .com loc");
- } else {
- ok(false, "Should never get anything that isn't from example.org or example.com");
- }
- }
-
- finish();
-}
-
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_enabled3.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_enabled3.js
@@ -41,12 +41,12 @@ function install_disabled(installInfo) {
ok(true, "Saw installation disabled");
}
function allow_blocked(installInfo) {
ok(false, "Should never see the blocked install notification");
return false;
}
-function confirm_install(window) {
+function confirm_install(panel) {
ok(false, "Should never see an install confirmation dialog");
return false;
}
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_hash.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_hash.js
@@ -7,17 +7,17 @@ function test() {
Harness.setup();
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: TESTROOT + "amosigned.xpi",
- Hash: "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9",
+ Hash: "sha1:ee95834ad862245a9ef99ccecc2a857cadc16404",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
function install_ended(install, addon) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_hash2.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_hash2.js
@@ -7,17 +7,17 @@ function test() {
Harness.setup();
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: TESTROOT + "amosigned.xpi",
- Hash: "sha1:36FFB0ACFD9C6E9682473AAEBAAB394D38B473C9",
+ Hash: "sha1:EE95834AD862245A9EF99CCECC2A857CADC16404",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
function install_ended(install, addon) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_httphash.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_httphash.js
@@ -7,17 +7,17 @@ function test() {
Harness.installsCompletedCallback = finish_test;
Harness.setup();
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false);
var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs";
- url += "?sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9|" + TESTROOT + "amosigned.xpi";
+ url += "?sha1:ee95834ad862245a9ef99ccecc2a857cadc16404|" + TESTROOT + "amosigned.xpi";
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: url,
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_httphash3.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_httphash3.js
@@ -11,17 +11,17 @@ function test() {
Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false);
var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs";
url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi";
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: url,
- Hash: "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9",
+ Hash: "sha1:ee95834ad862245a9ef99ccecc2a857cadc16404",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
function install_ended(install, addon) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_httphash5.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_httphash5.js
@@ -6,17 +6,17 @@ function test() {
Harness.installsCompletedCallback = finish_test;
Harness.setup();
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false);
var url = "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs";
- url += "?sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9|";
+ url += "?sha1:ee95834ad862245a9ef99ccecc2a857cadc16404|";
url += "https://example.com/browser/" + RELATIVE_DIR + "hashRedirect.sjs";
url += "?sha1:foobar|" + TESTROOT + "amosigned.xpi";
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: url,
toString() { return this.URL; }
}
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_httphash6.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_httphash6.js
@@ -50,17 +50,17 @@ function download_failed(install) {
function finish_failed_download() {
// Setup to track the successful re-download
Harness.installEndedCallback = install_ended;
Harness.installsCompletedCallback = finish_test;
Harness.setup();
// Give it the right hash this time
setup_redirect({
- "X-Target-Digest": "sha1:36ffb0acfd9c6e9682473aaebaab394d38b473c9",
+ "X-Target-Digest": "sha1:ee95834ad862245a9ef99ccecc2a857cadc16404",
"Location": "http://example.com/browser/" + RELATIVE_DIR + "amosigned.xpi"
});
// The harness expects onNewInstall events for all installs that are about to start
Harness.onNewInstall(gInstall);
// Restart the install as a regular webpage install so the harness tracks it
AddonManager.installAddonFromWebpage("application/x-xpinstall",
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests that navigating away from the initiating page during the install
-// doesn't break the install.
-// This verifies bug 473060
-function test() {
- Harness.downloadProgressCallback = download_progress;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": TESTROOT + "amosigned.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function download_progress(addon, value, maxValue) {
- gBrowser.loadURI(TESTROOT + "enabled.html");
-}
-
-function install_ended(install, addon) {
- install.cancel();
-}
-
-function finish_test(count) {
- is(count, 1, "1 Add-on should have been successfully installed");
-
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway2.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests that closing the initiating page during the install cancels the install
-// to avoid spoofing the user.
-function test() {
- Harness.downloadProgressCallback = download_progress;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": TESTROOT + "amosigned.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function download_progress(addon, value, maxValue) {
- gBrowser.removeCurrentTab();
-}
-
-function install_ended(install, addon) {
- ok(false, "Should not have seen installs complete");
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been successfully installed");
-
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway3.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests that navigating to a new origin cancels ongoing installs.
-
-// Block the modal install UI from showing.
-Services.prefs.setBoolPref(PREF_CUSTOM_CONFIRMATION_UI, true);
-
-function test() {
- Harness.downloadProgressCallback = download_progress;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": TESTROOT + "amosigned.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function download_progress(addon, value, maxValue) {
- gBrowser.loadURI(TESTROOT2 + "enabled.html");
-}
-
-function install_ended(install, addon) {
- ok(false, "Should not have seen installs complete");
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been successfully installed");
-
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway4.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests that navigating to a new origin cancels ongoing installs and closes
-// the install UI.
-var sawUnload = null;
-
-function test() {
- Harness.installConfirmCallback = confirm_install;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": TESTROOT + "amosigned.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function confirm_install(window) {
- sawUnload = BrowserTestUtils.waitForEvent(window, "unload");
-
- gBrowser.loadURI(TESTROOT2 + "enabled.html");
-
- return Harness.leaveOpen;
-}
-
-function install_ended(install, addon) {
- ok(false, "Should not have seen installs complete");
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been successfully installed");
-
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- sawUnload.then(() => {
- ok(true, "The install UI should have closed itself.");
- gBrowser.removeCurrentTab();
- Harness.finish();
- });
-}
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_relative.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_relative.js
@@ -16,22 +16,18 @@ function test() {
IconURL: "icon.png",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_signed_tampered.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing a signed add-on that has been tampered with after signing.
-// In "no signature required" mode, a tampered add-on is equivalent to an
-// unsigned add-on.
-function test() {
- Harness.installConfirmCallback = confirm_install;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.finalContentEvent = "InstallComplete";
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Tampered Signed XPI": TESTROOT + "signed-tampered.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "Signed XPI Test - Tampered", "Should have seen the name");
- is(items[0].url, TESTROOT + "signed-tampered.xpi", "Should have listed the correct url for the item");
- return true;
-}
-
-function install_ended(install, addon) {
- install.cancel();
-}
-
-const finish_test = async function(count) {
- is(count, 1, "1 Add-on should have been successfully installed");
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- const results = await ContentTask.spawn(gBrowser.selectedBrowser, null, () => {
- return {
- return: content.document.getElementById("return").textContent,
- status: content.document.getElementById("status").textContent,
- };
- });
-
- is(results.return, "true", "installTrigger should have claimed success");
- is(results.status, "0", "Callback should have seen a success");
- gBrowser.removeCurrentTab();
- Harness.finish();
-};
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_signed_trigger.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_signed_trigger.js
@@ -12,21 +12,18 @@ function test() {
var triggers = encodeURIComponent(JSON.stringify({
"Signed XPI": TESTROOT + "amosigned.xpi"
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name from the trigger list");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_signed_untrusted.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an add-on signed by an untrusted certificate through an
-// InstallTrigger call in web content.
-function test() {
- Harness.installConfirmCallback = confirm_install;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Untrusted Signed XPI": TESTROOT + "signed-untrusted.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "Signed XPI Test", "Should have had the filename for the item name");
- is(items[0].url, TESTROOT + "signed-untrusted.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, "", "Should have listed no icon for the item");
- return true;
-}
-
-function install_ended(install, addon) {
- install.cancel();
-}
-
-function finish_test(count) {
- is(count, 1, "1 Add-on should have been successfully installed");
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
-// ----------------------------------------------------------------------------
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_signed_url.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_signed_url.js
@@ -7,21 +7,18 @@ function test() {
Harness.setup();
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
gBrowser.loadURI(TESTROOT + "amosigned.xpi");
});
}
-function confirm_install(window) {
- let items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have had the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_switchtab.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through an InstallTrigger call in web
-// content.
-var expectedTab = null;
-
-function test() {
- Harness.installConfirmCallback = confirm_install;
- Harness.installEndedCallback = install_ended;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": {
- URL: TESTROOT + "amosigned.xpi",
- IconURL: TESTROOT + "icon.png",
- toString() { return this.URL; }
- }
- }));
- expectedTab = BrowserTestUtils.addTab(gBrowser);
- expectedTab.linkedBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
-
- is(gBrowser.selectedTab, expectedTab, "Should have switched to the installing tab.");
- return true;
-}
-
-function install_ended(install, addon) {
- install.cancel();
-}
-
-function finish_test(count) {
- is(count, 1, "1 Add-on should have been successfully installed");
-
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- gBrowser.removeTab(expectedTab);
- Harness.finish();
-}
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_trigger_redirect.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_trigger_redirect.js
@@ -9,22 +9,18 @@ function test() {
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "triggerredirect.html");
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_trigger.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_trigger.js
@@ -17,22 +17,18 @@ function test() {
IconURL: TESTROOT + "icon.png",
toString() { return this.URL; }
}
}));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_trigger_iframe.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_trigger_iframe.js
@@ -18,22 +18,18 @@ function test() {
IconURL: TESTROOT + "icon.png",
toString() { return this.URL; }
}
})));
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
gBrowser.loadURI(TESTROOT + "installtrigger_frame.html?" + inner_url);
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name");
- is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, TESTROOT + "icon.png", "Should have listed the correct icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_url.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_url.js
@@ -7,22 +7,18 @@ function test() {
Harness.setup();
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
gBrowser.loadURI(TESTROOT + "unsigned.xpi");
});
}
-function confirm_install(window) {
- let items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have had the filename for the item name");
- is(items[0].url, TESTROOT + "unsigned.xpi", "Should have listed the correct url for the item");
- is(items[0].icon, "", "Should have listed no icon for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist.js
@@ -17,21 +17,18 @@ function test() {
}
function allow_blocked(installInfo) {
is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri");
return true;
}
-function confirm_install(window) {
- var items = window.document.getElementById("itemList").childNodes;
- is(items.length, 1, "Should only be 1 item listed in the confirmation dialog");
- is(items[0].name, "XPI Test", "Should have seen the name from the trigger list");
- is(items[0].url, TESTROOT + "amosigned.xpi", "Should have listed the correct url for the item");
+function confirm_install(panel) {
+ is(panel.getAttribute("name"), "XPI Test", "Should have seen the name");
return true;
}
function install_ended(install, addon) {
install.cancel();
}
const finish_test = async function(count) {
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist2.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through an InstallTrigger call in web
-// content. This should be blocked by the whitelist check because the source
-// is not whitelisted, even though the target is.
-function test() {
- Harness.installBlockedCallback = allow_blocked;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION);
-
- var triggers = encodeURIComponent(JSON.stringify({
- "Unsigned XPI": TESTROOT2 + "amosigned.xpi"
- }));
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
-}
-
-function allow_blocked(installInfo) {
- is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
- is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri");
- return false;
-}
-
-function finish_test() {
- Services.perms.remove(makeURI("http://example.org"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist3.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through a navigation. Should not be
-// blocked since the referer is whitelisted.
-var url = TESTROOT2 + "navigate.html?" + encodeURIComponent(TESTROOT + "amosigned.xpi");
-
-function test() {
- Harness.installConfirmCallback = confirm_install;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.org/"), "install", pm.ALLOW_ACTION);
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(url);
-}
-
-function confirm_install(window) {
- return false;
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been installed");
- Services.perms.remove(makeURI("http://example.org"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist4.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through a navigation. Should be
-// blocked since the referer is not whitelisted even though the target is.
-var url = TESTROOT2 + "navigate.html?" + encodeURIComponent(TESTROOT + "amosigned.xpi");
-
-function test() {
- Harness.installBlockedCallback = allow_blocked;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- var pm = Services.perms;
- pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(url);
-}
-
-function allow_blocked(installInfo) {
- is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
- is(installInfo.originatingURI.spec, url, "Install should have been triggered by the right uri");
- return false;
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been installed");
- Services.perms.remove(makeURI("http://example.com"), "install");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist5.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through a startSoftwareUpdate call in web
-// content. This should be blocked by the whitelist check.
-// This verifies bug 252830
-function test() {
- Harness.installBlockedCallback = allow_blocked;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "startsoftwareupdate.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi"));
-}
-
-function allow_blocked(installInfo) {
- is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
- is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri");
- return false;
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been installed");
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
-// ----------------------------------------------------------------------------
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist6.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through an installChrome call in web
-// content. This should be blocked by the whitelist check.
-// This verifies bug 252830
-function test() {
- Harness.installBlockedCallback = allow_blocked;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
- gBrowser.loadURI(TESTROOT + "installchrome.html? " + encodeURIComponent(TESTROOT + "amosigned.xpi"));
-}
-
-function allow_blocked(installInfo) {
- is(installInfo.browser, gBrowser.selectedBrowser, "Install should have been triggered by the right browser");
- is(installInfo.originatingURI.spec, gBrowser.currentURI.spec, "Install should have been triggered by the right uri");
- return false;
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been installed");
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
-// ----------------------------------------------------------------------------
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/browser_whitelist7.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// ----------------------------------------------------------------------------
-// Tests installing an unsigned add-on through a direct install request from
-// web content. This should be blocked by the whitelist check because we disable
-// direct request whitelisting, even though the target URI is whitelisted.
-function test() {
- Harness.installBlockedCallback = allow_blocked;
- Harness.installsCompletedCallback = finish_test;
- Harness.setup();
-
- // Disable direct request whitelisting, installing should be blocked.
- Services.prefs.setBoolPref("xpinstall.whitelist.directRequest", false);
-
- gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
- BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(() => {
- gBrowser.loadURI(TESTROOT + "amosigned.xpi");
- });
-}
-
-function allow_blocked(installInfo) {
- ok(true, "Seen blocked");
- return false;
-}
-
-function finish_test(count) {
- is(count, 0, "No add-ons should have been installed");
-
- Services.perms.remove(makeURI("http://example.org"), "install");
- Services.prefs.clearUserPref("xpinstall.whitelist.directRequest");
-
- gBrowser.removeCurrentTab();
- Harness.finish();
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpinstall/concurrent_installs.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>
-
-<head>
- <meta charset="utf-8">
-<title>Concurrent InstallTrigger tests</title>
-<script type="text/javascript">
-/* globals InstallTrigger */
-/* exported startInstall */
-function installCallback(url, status) {
- document.getElementById("status").textContent = status;
-
- dump("Sending InstallComplete\n");
- var event = new CustomEvent("InstallComplete", {detail: {loc: location.href, xpi: url}});
- window.dispatchEvent(event);
-}
-
-function startInstall() {
- var root = location.href.replace("concurrent_installs.html", "");
- var triggers = {
- "Unsigned XPI": root + "amosigned.xpi"
- };
- try {
- document.getElementById("return").textContent = InstallTrigger.install(triggers, installCallback);
- } catch (e) {
- document.getElementById("return").textContent = "exception";
- throw e;
- }
-}
-</script>
-</head>
-<body>
-<p>InstallTrigger tests</p>
-<button id="installnow" onclick="startInstall()">Click to install</button>
-<p id="return"></p>
-<p id="status"></p>
-</body>
-</html>
--- a/toolkit/mozapps/extensions/test/xpinstall/head.js
+++ b/toolkit/mozapps/extensions/test/xpinstall/head.js
@@ -114,32 +114,36 @@ var Harness = {
Services.obs.addObserver(this, "addon-install-blocked");
Services.obs.addObserver(this, "addon-install-failed");
Services.obs.addObserver(this, "addon-install-complete");
AddonManager.addInstallListener(this);
Services.wm.addListener(this);
+ window.addEventListener("popupshown", this);
+
var self = this;
registerCleanupFunction(function() {
Services.prefs.clearUserPref(PREF_LOGGING_ENABLED);
Services.prefs.clearUserPref(PREF_INSTALL_REQUIRESECUREORIGIN);
Services.obs.removeObserver(self, "addon-install-started");
Services.obs.removeObserver(self, "addon-install-disabled");
// Services.obs.removeObserver(self, "addon-install-cancelled");
Services.obs.removeObserver(self, "addon-install-origin-blocked");
Services.obs.removeObserver(self, "addon-install-blocked");
Services.obs.removeObserver(self, "addon-install-failed");
Services.obs.removeObserver(self, "addon-install-complete");
AddonManager.removeInstallListener(self);
Services.wm.removeListener(self);
+ window.removeEventListener("popupshown", self);
+
AddonManager.getAllInstalls(function(aInstalls) {
is(aInstalls.length, 0, "Should be no active installs at the end of the test");
aInstalls.forEach(function(aInstall) {
info("Install for " + aInstall.sourceURI + " is in state " + aInstall.state);
aInstall.cancel();
});
});
});
@@ -234,16 +238,50 @@ var Harness = {
break;
default:
ok(false, "prompt type " + promptType + " not handled in test.");
break;
}
}
},
+ popupReady(panel) {
+ if (this.installBlockedCallback)
+ ok(false, "Should have been blocked by the whitelist");
+ this.pendingCount++;
+
+ // If there is a confirm callback then its return status determines whether
+ // to install the items or not. If not the test is over.
+ let result = true;
+ if (this.installConfirmCallback) {
+ result = this.installConfirmCallback(panel);
+ if (result === this.leaveOpen)
+ return;
+ }
+
+ if (!result) {
+ panel.secondaryButton.click();
+ } else {
+ panel.button.click();
+ }
+ },
+
+ handleEvent(event) {
+ if (event.type === "popupshown") {
+ if (event.target.firstChild) {
+ let popupId = event.target.getAttribute("popupid");
+ if (popupId === "addon-webext-permissions") {
+ this.popupReady(event.target.firstChild);
+ } else if (popupId === "addon-installed" || popupId === "addon-install-failed") {
+ event.target.firstChild.button.click();
+ }
+ }
+ }
+ },
+
// Install blocked handling
installDisabled(installInfo) {
ok(!!this.installDisabledCallback, "Installation shouldn't have been disabled");
if (this.installDisabledCallback)
this.installDisabledCallback(installInfo);
this.expectingCancelled = true;
this.expectingCancelled = false;
@@ -350,19 +388,19 @@ var Harness = {
},
onInstallStarted(install) {
if (this.installStartedCallback)
this.installStartedCallback(install);
},
onInstallEnded(install, addon) {
+ this.installCount++;
if (this.installEndedCallback)
this.installEndedCallback(install, addon);
- this.installCount++;
this.checkTestEnded();
},
onInstallFailed(install) {
if (this.installFailedCallback)
this.installFailedCallback(install);
this.checkTestEnded();
},
deleted file mode 100644
index 8c951881e5fbe10504eee8280dd9a3d995b5c881..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 09789d1897ccd3c6e0d30c94dc658f5cda732771..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
index 51b00475a9641ea9d608874a3ab7679da3a4374b..cf8bc616b743e0c4d969bfe15e2c3afbd5152788
GIT binary patch
literal 286
zc$^FHW@Zs#W?<l8$f+;%Dd~7~w~m2<VKET%0	)US?Wqafx15aekg_pCR8N10L7!
zbCf>CC|#M@IkmU3k=J!?r;d>NDrTnz_hgrcyn67^-oE~4_L|lwGv8@^{dUMx!&oNg
z{>*J3m%2#Rglc%rUTgB;!-?z|hTd5ZPC7Lf-r377yZT$F_fKcTs_Dxax^1NA)|>xs
zdHbfy?q>I`3#PmFGVHzGJo7AnfHxzPJu@z+sxUx+Lc@|q26TsWF(`l~85txP8p64z
YJMX*9h)xH1v$8?dFfzmg>6Ks|075@y4FCWD