Bug 1221270 - Schedule and perform GMP updates in AddonUpdateService; r=snorp

This patch moves the GMP update process from browser.js startup to
AddonUpdateService. It also uses the Gecko:ScheduleRun event in
GeckoService to schedule headless runs in order to perform updates
periodically.
This commit is contained in:
Jim Chen 2015-11-23 23:31:49 -05:00
Родитель 3f2aedd313
Коммит 0b336e064b
2 изменённых файлов: 18 добавлений и 12 удалений

Просмотреть файл

@ -116,9 +116,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "SharedPreferences",
XPCOMUtils.defineLazyModuleGetter(this, "Notifications", XPCOMUtils.defineLazyModuleGetter(this, "Notifications",
"resource://gre/modules/Notifications.jsm"); "resource://gre/modules/Notifications.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "GMPInstallManager",
"resource://gre/modules/GMPInstallManager.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Snackbars", "resource://gre/modules/Snackbars.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Snackbars", "resource://gre/modules/Snackbars.jsm");
@ -617,11 +614,6 @@ var BrowserApp = {
InitLater(() => Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager)); InitLater(() => Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager));
InitLater(() => LoginManagerParent.init(), window, "LoginManagerParent"); InitLater(() => LoginManagerParent.init(), window, "LoginManagerParent");
InitLater(() => {
BrowserApp.gmpInstallManager = new GMPInstallManager();
BrowserApp.gmpInstallManager.simpleCheckAndInstall().then(null, () => {});
}, BrowserApp, "gmpInstallManager");
}, false); }, false);
}, },
@ -1390,10 +1382,6 @@ var BrowserApp = {
}, },
quit: function quit(aClear = { sanitize: {}, dontSaveSession: false }) { quit: function quit(aClear = { sanitize: {}, dontSaveSession: false }) {
if (this.gmpInstallManager) {
this.gmpInstallManager.uninit();
}
// Notify all windows that an application quit has been requested. // Notify all windows that an application quit has been requested.
let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool); let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart"); Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");

Просмотреть файл

@ -15,6 +15,12 @@ XPCOMUtils.defineLazyModuleGetter(this, "AddonManagerPrivate",
XPCOMUtils.defineLazyModuleGetter(this, "AddonRepository", XPCOMUtils.defineLazyModuleGetter(this, "AddonRepository",
"resource://gre/modules/addons/AddonRepository.jsm"); "resource://gre/modules/addons/AddonRepository.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "GMPInstallManager",
"resource://gre/modules/GMPInstallManager.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Messaging",
"resource://gre/modules/Messaging.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
function getPref(func, preference, defaultValue) { function getPref(func, preference, defaultValue) {
@ -30,6 +36,7 @@ function getPref(func, preference, defaultValue) {
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
const PREF_ADDON_UPDATE_ENABLED = "extensions.autoupdate.enabled"; const PREF_ADDON_UPDATE_ENABLED = "extensions.autoupdate.enabled";
const PREF_ADDON_UPDATE_INTERVAL = "extensions.autoupdate.interval";
var gNeedsRestart = false; var gNeedsRestart = false;
@ -50,6 +57,17 @@ AddonUpdateService.prototype = {
return; return;
AddonManagerPrivate.backgroundUpdateCheck(); AddonManagerPrivate.backgroundUpdateCheck();
let gmp = new GMPInstallManager();
gmp.simpleCheckAndInstall().then(null, () => {});
let interval = 1000 * getPref("getIntPref", PREF_ADDON_UPDATE_INTERVAL, 86400);
Messaging.sendRequest({
type: "Gecko:ScheduleRun",
action: "update-addons",
trigger: interval,
interval: interval,
});
} }
}; };