зеркало из https://github.com/mozilla/gecko-dev.git
Bug 697312: Don't write out extensions.ini if there are no extensions. r=Unfocused
This commit is contained in:
Родитель
35820dbe1e
Коммит
efcf5839bb
|
@ -1759,7 +1759,7 @@ var XPIProvider = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure any changes to the add-ons list are flushed to disk
|
// Ensure any changes to the add-ons list are flushed to disk
|
||||||
XPIDatabase.writeAddonsList([]);
|
XPIDatabase.writeAddonsList();
|
||||||
Services.prefs.setBoolPref(PREF_PENDING_OPERATIONS, false);
|
Services.prefs.setBoolPref(PREF_PENDING_OPERATIONS, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -3034,8 +3034,8 @@ var XPIProvider = {
|
||||||
// Check that the add-ons list still exists
|
// Check that the add-ons list still exists
|
||||||
let addonsList = FileUtils.getFile(KEY_PROFILEDIR, [FILE_XPI_ADDONS_LIST],
|
let addonsList = FileUtils.getFile(KEY_PROFILEDIR, [FILE_XPI_ADDONS_LIST],
|
||||||
true);
|
true);
|
||||||
if (!addonsList.exists()) {
|
if (addonsList.exists() == (state.length == 0)) {
|
||||||
LOG("Add-ons list is missing, recreating");
|
LOG("Add-ons list is invalid, rebuilding");
|
||||||
XPIDatabase.writeAddonsList();
|
XPIDatabase.writeAddonsList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5476,49 +5476,72 @@ var XPIDatabase = {
|
||||||
* Writes out the XPI add-ons list for the platform to read.
|
* Writes out the XPI add-ons list for the platform to read.
|
||||||
*/
|
*/
|
||||||
writeAddonsList: function XPIDB_writeAddonsList() {
|
writeAddonsList: function XPIDB_writeAddonsList() {
|
||||||
LOG("Writing add-ons list");
|
|
||||||
Services.appinfo.invalidateCachesOnRestart();
|
Services.appinfo.invalidateCachesOnRestart();
|
||||||
|
|
||||||
let addonsList = FileUtils.getFile(KEY_PROFILEDIR, [FILE_XPI_ADDONS_LIST],
|
let addonsList = FileUtils.getFile(KEY_PROFILEDIR, [FILE_XPI_ADDONS_LIST],
|
||||||
true);
|
true);
|
||||||
|
if (!this.connection) {
|
||||||
|
try {
|
||||||
|
addonsList.remove(false);
|
||||||
|
LOG("Deleted add-ons list");
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Services.prefs.clearUserPref(PREF_EM_ENABLED_ADDONS);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let enabledAddons = [];
|
let enabledAddons = [];
|
||||||
let text = "[ExtensionDirs]\r\n";
|
let text = "[ExtensionDirs]\r\n";
|
||||||
let count = 0;
|
let count = 0;
|
||||||
let stmt;
|
let fullCount = 0;
|
||||||
|
|
||||||
if (this.connection) {
|
let stmt = this.getStatement("getActiveAddons");
|
||||||
stmt = this.getStatement("getActiveAddons");
|
|
||||||
|
|
||||||
for (let row in resultRows(stmt)) {
|
for (let row in resultRows(stmt)) {
|
||||||
text += "Extension" + (count++) + "=" + row.descriptor + "\r\n";
|
text += "Extension" + (count++) + "=" + row.descriptor + "\r\n";
|
||||||
enabledAddons.push(row.id + ":" + row.version);
|
enabledAddons.push(row.id + ":" + row.version);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
fullCount += count;
|
||||||
|
|
||||||
// The selected skin may come from an inactive theme (the default theme
|
// The selected skin may come from an inactive theme (the default theme
|
||||||
// when a lightweight theme is applied for example)
|
// when a lightweight theme is applied for example)
|
||||||
text += "\r\n[ThemeDirs]\r\n";
|
text += "\r\n[ThemeDirs]\r\n";
|
||||||
|
|
||||||
if (this.connection) {
|
if (Prefs.getBoolPref(PREF_EM_DSS_ENABLED)) {
|
||||||
if (Prefs.getBoolPref(PREF_EM_DSS_ENABLED)) {
|
stmt = this.getStatement("getThemes");
|
||||||
stmt = this.getStatement("getThemes");
|
}
|
||||||
}
|
else {
|
||||||
else {
|
stmt = this.getStatement("getActiveTheme");
|
||||||
stmt = this.getStatement("getActiveTheme");
|
stmt.params.internalName = XPIProvider.selectedSkin;
|
||||||
stmt.params.internalName = XPIProvider.selectedSkin;
|
}
|
||||||
}
|
|
||||||
|
if (stmt) {
|
||||||
count = 0;
|
count = 0;
|
||||||
for (let row in resultRows(stmt)) {
|
for (let row in resultRows(stmt)) {
|
||||||
text += "Extension" + (count++) + "=" + row.descriptor + "\r\n";
|
text += "Extension" + (count++) + "=" + row.descriptor + "\r\n";
|
||||||
enabledAddons.push(row.id + ":" + row.version);
|
enabledAddons.push(row.id + ":" + row.version);
|
||||||
}
|
}
|
||||||
|
fullCount += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
var fos = FileUtils.openSafeFileOutputStream(addonsList);
|
if (fullCount > 0) {
|
||||||
fos.write(text, text.length);
|
LOG("Writing add-ons list");
|
||||||
FileUtils.closeSafeFileOutputStream(fos);
|
var fos = FileUtils.openSafeFileOutputStream(addonsList);
|
||||||
|
fos.write(text, text.length);
|
||||||
|
FileUtils.closeSafeFileOutputStream(fos);
|
||||||
|
|
||||||
Services.prefs.setCharPref(PREF_EM_ENABLED_ADDONS, enabledAddons.join(","));
|
Services.prefs.setCharPref(PREF_EM_ENABLED_ADDONS, enabledAddons.join(","));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (addonsList.exists()) {
|
||||||
|
LOG("Deleting add-ons list");
|
||||||
|
addonsList.remove(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Services.prefs.clearUserPref(PREF_EM_ENABLED_ADDONS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,9 @@ function run_test() {
|
||||||
file.append("extensions.sqlite");
|
file.append("extensions.sqlite");
|
||||||
do_check_false(file.exists());
|
do_check_false(file.exists());
|
||||||
|
|
||||||
|
file.leafName = "extensions.ini";
|
||||||
|
do_check_false(file.exists());
|
||||||
|
|
||||||
run_test_1();
|
run_test_1();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,6 +178,9 @@ function check_test_1() {
|
||||||
file.append("extensions.sqlite");
|
file.append("extensions.sqlite");
|
||||||
do_check_true(file.exists());
|
do_check_true(file.exists());
|
||||||
|
|
||||||
|
file.leafName = "extensions.ini";
|
||||||
|
do_check_false(file.exists());
|
||||||
|
|
||||||
AddonManager.getAllInstalls(function(installs) {
|
AddonManager.getAllInstalls(function(installs) {
|
||||||
// There should be no active installs now since the install completed and
|
// There should be no active installs now since the install completed and
|
||||||
// doesn't require a restart.
|
// doesn't require a restart.
|
||||||
|
@ -255,6 +261,10 @@ function run_test_3() {
|
||||||
do_check_eq(getShutdownReason(), ADDON_DISABLE);
|
do_check_eq(getShutdownReason(), ADDON_DISABLE);
|
||||||
do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0");
|
do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0");
|
||||||
|
|
||||||
|
let file = gProfD.clone();
|
||||||
|
file.append("extensions.ini");
|
||||||
|
do_check_false(file.exists());
|
||||||
|
|
||||||
AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) {
|
AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) {
|
||||||
do_check_neq(b1, null);
|
do_check_neq(b1, null);
|
||||||
do_check_eq(b1.version, "1.0");
|
do_check_eq(b1.version, "1.0");
|
||||||
|
|
|
@ -136,6 +136,9 @@ function run_test() {
|
||||||
file.append("extensions.sqlite");
|
file.append("extensions.sqlite");
|
||||||
do_check_false(file.exists());
|
do_check_false(file.exists());
|
||||||
|
|
||||||
|
file.leafName = "extensions.ini";
|
||||||
|
do_check_false(file.exists());
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
"addon3@tests.mozilla.org",
|
"addon3@tests.mozilla.org",
|
||||||
|
@ -191,6 +194,9 @@ function run_test_1() {
|
||||||
file.append("extensions.sqlite");
|
file.append("extensions.sqlite");
|
||||||
do_check_true(file.exists());
|
do_check_true(file.exists());
|
||||||
|
|
||||||
|
file.leafName = "extensions.ini";
|
||||||
|
do_check_true(file.exists());
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
"addon3@tests.mozilla.org",
|
"addon3@tests.mozilla.org",
|
||||||
|
@ -292,6 +298,10 @@ function run_test_2() {
|
||||||
check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []);
|
check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []);
|
||||||
do_check_true(gCachePurged);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
|
var file = gProfD.clone();
|
||||||
|
file.append("extensions.ini");
|
||||||
|
do_check_true(file.exists());
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
"addon3@tests.mozilla.org",
|
"addon3@tests.mozilla.org",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче