зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1449255: Part 16 - Rename test_bug655254 to test_moved_extension_metadata.js. r=aswan
MozReview-Commit-ID: ISPgh91V4TT --HG-- rename : toolkit/mozapps/extensions/test/xpcshell/test_bug655254.js => toolkit/mozapps/extensions/test/xpcshell/test_moved_extension_metadata.js extra : rebase_source : 8022d3bf030abf578c3b258103ce977eb7e816af
This commit is contained in:
Родитель
cf2629d6f0
Коммит
4f0afb85ac
|
@ -1,192 +0,0 @@
|
||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This verifies that moving an extension in the filesystem without any other
|
|
||||||
// change still keeps updated compatibility information
|
|
||||||
|
|
||||||
// The test extension uses an insecure update url.
|
|
||||||
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
|
||||||
// Enable loading extensions from the user and system scopes
|
|
||||||
Services.prefs.setIntPref("extensions.enabledScopes",
|
|
||||||
AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
|
|
||||||
|
|
||||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2");
|
|
||||||
|
|
||||||
var testserver = AddonTestUtils.createHttpServer({hosts: ["example.com"]});
|
|
||||||
testserver.registerDirectory("/data/", do_get_file("data"));
|
|
||||||
|
|
||||||
var userDir = gProfD.clone();
|
|
||||||
userDir.append("extensions2");
|
|
||||||
userDir.append(gAppInfo.ID);
|
|
||||||
|
|
||||||
var dirProvider = {
|
|
||||||
getFile(aProp, aPersistent) {
|
|
||||||
aPersistent.value = false;
|
|
||||||
if (aProp == "XREUSysExt")
|
|
||||||
return userDir.parent;
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
|
|
||||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDirectoryServiceProvider,
|
|
||||||
Ci.nsISupports])
|
|
||||||
};
|
|
||||||
Services.dirsvc.registerProvider(dirProvider);
|
|
||||||
|
|
||||||
var addon1 = {
|
|
||||||
id: "addon1@tests.mozilla.org",
|
|
||||||
version: "1.0",
|
|
||||||
name: "Test 1",
|
|
||||||
bootstrap: true,
|
|
||||||
updateURL: "http://example.com/data/test_bug655254.json",
|
|
||||||
targetApplications: [{
|
|
||||||
id: "xpcshell@tests.mozilla.org",
|
|
||||||
minVersion: "1",
|
|
||||||
maxVersion: "1"
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
|
|
||||||
const ADDONS = [
|
|
||||||
{
|
|
||||||
"install.rdf": {
|
|
||||||
id: "addon2@tests.mozilla.org",
|
|
||||||
version: "1.0",
|
|
||||||
name: "Test 2",
|
|
||||||
bootstrap: true,
|
|
||||||
|
|
||||||
targetApplications: [{
|
|
||||||
id: "xpcshell@tests.mozilla.org",
|
|
||||||
minVersion: "2",
|
|
||||||
maxVersion: "2"}],
|
|
||||||
},
|
|
||||||
"bootstrap.js": `
|
|
||||||
/* exported startup, shutdown */
|
|
||||||
ChromeUtils.import("resource://gre/modules/Services.jsm");
|
|
||||||
|
|
||||||
function startup(data, reason) {
|
|
||||||
Services.prefs.setIntPref("bootstraptest.active_version", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function shutdown(data, reason) {
|
|
||||||
Services.prefs.setIntPref("bootstraptest.active_version", 0);
|
|
||||||
}
|
|
||||||
`
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const XPIS = ADDONS.map(addon => AddonTestUtils.createTempXPIFile(addon));
|
|
||||||
|
|
||||||
// Set up the profile
|
|
||||||
function run_test() {
|
|
||||||
do_test_pending();
|
|
||||||
run_test_1();
|
|
||||||
}
|
|
||||||
|
|
||||||
function end_test() {
|
|
||||||
do_test_finished();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function run_test_1() {
|
|
||||||
var time = Date.now();
|
|
||||||
var dir = writeInstallRDFForExtension(addon1, userDir);
|
|
||||||
setExtensionModifiedTime(dir, time);
|
|
||||||
|
|
||||||
manuallyInstall(XPIS[0], userDir, "addon2@tests.mozilla.org");
|
|
||||||
|
|
||||||
await promiseStartupManager();
|
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
|
||||||
"addon2@tests.mozilla.org"], function([a1, a2]) {
|
|
||||||
Assert.notEqual(a1, null);
|
|
||||||
Assert.ok(a1.appDisabled);
|
|
||||||
Assert.ok(!a1.isActive);
|
|
||||||
Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
|
|
||||||
|
|
||||||
Assert.notEqual(a2, null);
|
|
||||||
Assert.ok(!a2.appDisabled);
|
|
||||||
Assert.ok(a2.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
|
||||||
|
|
||||||
a1.findUpdates({
|
|
||||||
async onUpdateFinished() {
|
|
||||||
await promiseRestartManager();
|
|
||||||
|
|
||||||
AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(async function(a1_2) {
|
|
||||||
Assert.notEqual(a1_2, null);
|
|
||||||
Assert.ok(!a1_2.appDisabled);
|
|
||||||
Assert.ok(a1_2.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a1_2.id));
|
|
||||||
|
|
||||||
shutdownManager();
|
|
||||||
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
|
||||||
|
|
||||||
userDir.parent.moveTo(gProfD, "extensions3");
|
|
||||||
userDir = gProfD.clone();
|
|
||||||
userDir.append("extensions3");
|
|
||||||
userDir.append(gAppInfo.ID);
|
|
||||||
Assert.ok(userDir.exists());
|
|
||||||
|
|
||||||
await promiseStartupManager(false);
|
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
|
||||||
"addon2@tests.mozilla.org"], function([a1_3, a2_3]) {
|
|
||||||
Assert.notEqual(a1_3, null);
|
|
||||||
Assert.ok(!a1_3.appDisabled);
|
|
||||||
Assert.ok(a1_3.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a1_3.id));
|
|
||||||
|
|
||||||
Assert.notEqual(a2_3, null);
|
|
||||||
Assert.ok(!a2_3.appDisabled);
|
|
||||||
Assert.ok(a2_3.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a2_3.id));
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
|
||||||
|
|
||||||
executeSoon(run_test_2);
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set up the profile
|
|
||||||
function run_test_2() {
|
|
||||||
AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(async function(a2) {
|
|
||||||
Assert.notEqual(a2, null);
|
|
||||||
Assert.ok(!a2.appDisabled);
|
|
||||||
Assert.ok(a2.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
|
||||||
|
|
||||||
a2.userDisabled = true;
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
|
||||||
|
|
||||||
shutdownManager();
|
|
||||||
|
|
||||||
userDir.parent.moveTo(gProfD, "extensions4");
|
|
||||||
userDir = gProfD.clone();
|
|
||||||
userDir.append("extensions4");
|
|
||||||
userDir.append(gAppInfo.ID);
|
|
||||||
Assert.ok(userDir.exists());
|
|
||||||
|
|
||||||
await promiseStartupManager(false);
|
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
|
||||||
"addon2@tests.mozilla.org"], function([a1_2, a2_2]) {
|
|
||||||
Assert.notEqual(a1_2, null);
|
|
||||||
Assert.ok(!a1_2.appDisabled);
|
|
||||||
Assert.ok(a1_2.isActive);
|
|
||||||
Assert.ok(isExtensionInBootstrappedList(userDir, a1_2.id));
|
|
||||||
|
|
||||||
Assert.notEqual(a2_2, null);
|
|
||||||
Assert.ok(a2_2.userDisabled);
|
|
||||||
Assert.ok(!a2_2.isActive);
|
|
||||||
Assert.ok(!isExtensionInBootstrappedList(userDir, a2_2.id));
|
|
||||||
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
|
||||||
|
|
||||||
end_test();
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
}
|
|
|
@ -0,0 +1,170 @@
|
||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This verifies that moving an extension in the filesystem without any other
|
||||||
|
// change still keeps updated compatibility information
|
||||||
|
|
||||||
|
// The test extension uses an insecure update url.
|
||||||
|
Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
|
||||||
|
// Enable loading extensions from the user and system scopes
|
||||||
|
Services.prefs.setIntPref("extensions.enabledScopes",
|
||||||
|
AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
|
||||||
|
|
||||||
|
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2");
|
||||||
|
|
||||||
|
var testserver = AddonTestUtils.createHttpServer({hosts: ["example.com"]});
|
||||||
|
testserver.registerDirectory("/data/", do_get_file("data"));
|
||||||
|
|
||||||
|
var userDir = gProfD.clone();
|
||||||
|
userDir.append("extensions2");
|
||||||
|
userDir.append(gAppInfo.ID);
|
||||||
|
|
||||||
|
var dirProvider = {
|
||||||
|
getFile(aProp, aPersistent) {
|
||||||
|
aPersistent.value = false;
|
||||||
|
if (aProp == "XREUSysExt")
|
||||||
|
return userDir.parent;
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDirectoryServiceProvider])
|
||||||
|
};
|
||||||
|
Services.dirsvc.registerProvider(dirProvider);
|
||||||
|
|
||||||
|
var addon1 = {
|
||||||
|
id: "addon1@tests.mozilla.org",
|
||||||
|
version: "1.0",
|
||||||
|
name: "Test 1",
|
||||||
|
bootstrap: true,
|
||||||
|
updateURL: "http://example.com/data/test_bug655254.json",
|
||||||
|
targetApplications: [{
|
||||||
|
id: "xpcshell@tests.mozilla.org",
|
||||||
|
minVersion: "1",
|
||||||
|
maxVersion: "1"
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
const ADDONS = [
|
||||||
|
{
|
||||||
|
"install.rdf": {
|
||||||
|
id: "addon2@tests.mozilla.org",
|
||||||
|
version: "1.0",
|
||||||
|
name: "Test 2",
|
||||||
|
bootstrap: true,
|
||||||
|
|
||||||
|
targetApplications: [{
|
||||||
|
id: "xpcshell@tests.mozilla.org",
|
||||||
|
minVersion: "2",
|
||||||
|
maxVersion: "2"}],
|
||||||
|
},
|
||||||
|
"bootstrap.js": `
|
||||||
|
/* exported startup, shutdown */
|
||||||
|
ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||||
|
|
||||||
|
function startup(data, reason) {
|
||||||
|
Services.prefs.setIntPref("bootstraptest.active_version", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function shutdown(data, reason) {
|
||||||
|
Services.prefs.setIntPref("bootstraptest.active_version", 0);
|
||||||
|
}
|
||||||
|
`
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const XPIS = ADDONS.map(addon => AddonTestUtils.createTempXPIFile(addon));
|
||||||
|
|
||||||
|
add_task(async function test_1() {
|
||||||
|
var time = Date.now();
|
||||||
|
var dir = writeInstallRDFForExtension(addon1, userDir);
|
||||||
|
setExtensionModifiedTime(dir, time);
|
||||||
|
|
||||||
|
manuallyInstall(XPIS[0], userDir, "addon2@tests.mozilla.org");
|
||||||
|
|
||||||
|
await promiseStartupManager();
|
||||||
|
|
||||||
|
let [a1, a2] = await AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
"addon2@tests.mozilla.org"]);
|
||||||
|
Assert.notEqual(a1, null);
|
||||||
|
Assert.ok(a1.appDisabled);
|
||||||
|
Assert.ok(!a1.isActive);
|
||||||
|
Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
|
||||||
|
|
||||||
|
Assert.notEqual(a2, null);
|
||||||
|
Assert.ok(!a2.appDisabled);
|
||||||
|
Assert.ok(a2.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
||||||
|
|
||||||
|
await AddonTestUtils.promiseFindAddonUpdates(a1, AddonManager.UPDATE_WHEN_USER_REQUESTED);
|
||||||
|
|
||||||
|
await promiseRestartManager();
|
||||||
|
|
||||||
|
let a1_2 = await AddonManager.getAddonByID("addon1@tests.mozilla.org");
|
||||||
|
Assert.notEqual(a1_2, null);
|
||||||
|
Assert.ok(!a1_2.appDisabled);
|
||||||
|
Assert.ok(a1_2.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a1_2.id));
|
||||||
|
|
||||||
|
await promiseShutdownManager();
|
||||||
|
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
||||||
|
|
||||||
|
userDir.parent.moveTo(gProfD, "extensions3");
|
||||||
|
userDir = gProfD.clone();
|
||||||
|
userDir.append("extensions3");
|
||||||
|
userDir.append(gAppInfo.ID);
|
||||||
|
Assert.ok(userDir.exists());
|
||||||
|
|
||||||
|
await promiseStartupManager(false);
|
||||||
|
|
||||||
|
let [a1_3, a2_3] = await AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
"addon2@tests.mozilla.org"]);
|
||||||
|
Assert.notEqual(a1_3, null);
|
||||||
|
Assert.ok(!a1_3.appDisabled);
|
||||||
|
Assert.ok(a1_3.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a1_3.id));
|
||||||
|
|
||||||
|
Assert.notEqual(a2_3, null);
|
||||||
|
Assert.ok(!a2_3.appDisabled);
|
||||||
|
Assert.ok(a2_3.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a2_3.id));
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set up the profile
|
||||||
|
add_task(async function test_2() {
|
||||||
|
let a2 = await AddonManager.getAddonByID("addon2@tests.mozilla.org");
|
||||||
|
Assert.notEqual(a2, null);
|
||||||
|
Assert.ok(!a2.appDisabled);
|
||||||
|
Assert.ok(a2.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
|
||||||
|
|
||||||
|
a2.userDisabled = true;
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
||||||
|
|
||||||
|
await promiseShutdownManager();
|
||||||
|
|
||||||
|
userDir.parent.moveTo(gProfD, "extensions4");
|
||||||
|
userDir = gProfD.clone();
|
||||||
|
userDir.append("extensions4");
|
||||||
|
userDir.append(gAppInfo.ID);
|
||||||
|
Assert.ok(userDir.exists());
|
||||||
|
|
||||||
|
await promiseStartupManager(false);
|
||||||
|
|
||||||
|
let [a1_2, a2_2] = await AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
"addon2@tests.mozilla.org"]);
|
||||||
|
Assert.notEqual(a1_2, null);
|
||||||
|
Assert.ok(!a1_2.appDisabled);
|
||||||
|
Assert.ok(a1_2.isActive);
|
||||||
|
Assert.ok(isExtensionInBootstrappedList(userDir, a1_2.id));
|
||||||
|
|
||||||
|
Assert.notEqual(a2_2, null);
|
||||||
|
Assert.ok(a2_2.userDisabled);
|
||||||
|
Assert.ok(!a2_2.isActive);
|
||||||
|
Assert.ok(!isExtensionInBootstrappedList(userDir, a2_2.id));
|
||||||
|
Assert.equal(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
|
||||||
|
});
|
|
@ -91,7 +91,6 @@ fail-if = os == "android"
|
||||||
tags = blocklist
|
tags = blocklist
|
||||||
[test_bug620837.js]
|
[test_bug620837.js]
|
||||||
tags = blocklist
|
tags = blocklist
|
||||||
[test_bug655254.js]
|
|
||||||
[test_cache_certdb.js]
|
[test_cache_certdb.js]
|
||||||
run-if = addon_signing
|
run-if = addon_signing
|
||||||
[test_cacheflush.js]
|
[test_cacheflush.js]
|
||||||
|
@ -175,6 +174,7 @@ skip-if = !allow_legacy_extensions || appname == "thunderbird"
|
||||||
# Bug 676992: test consistently hangs on Android
|
# Bug 676992: test consistently hangs on Android
|
||||||
skip-if = os == "android"
|
skip-if = os == "android"
|
||||||
[test_migrate_state_prefs.js]
|
[test_migrate_state_prefs.js]
|
||||||
|
[test_moved_extension_metadata.js]
|
||||||
[test_no_addons.js]
|
[test_no_addons.js]
|
||||||
[test_nodisable_hidden.js]
|
[test_nodisable_hidden.js]
|
||||||
[test_onPropertyChanged_appDisabled.js]
|
[test_onPropertyChanged_appDisabled.js]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче