diff -r 000000000000 -r 6474c204b198 b2g/components/WebappsUpdateTimer.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/b2g/components/WebappsUpdateTimer.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,67 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * This component triggers an app update check even when system updates are + * disabled to make sure we always check for app updates. + */ + +"use strict"; + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/WebappsUpdater.jsm"); + +function debug(aStr) { + //dump("--*-- WebappsUpdateTimer: " + aStr); +} + +function WebappsUpdateTimer() { +} + +WebappsUpdateTimer.prototype = { + QueryInterface: XPCOMUtils.generateQI([Ci.nsITimerCallback]), + classID: Components.ID("{637b0f77-2429-49a0-915f-abf5d0db8b9a}"), + + notify: function(aTimer) { + try { + // We want to check app updates if system updates are disabled or + // if they update frecency is not daily. + if (Services.prefs.getBoolPref("app.update.enabled") === true && + Services.prefs.getIntPref("app.update.interval") === 86400) { + return; + } + } catch(e) { + // That should never happen.. + } + + // If we are offline, wait to be online to start the update check. + if (Services.io.offline) { + debug("Network is offline. Setting up an offline status observer."); + Services.obs.addObserver(this, "network:offline-status-changed", false); + return; + } + + // This will trigger app updates in b2g/components/WebappsUpdater.jsm + // that also takes care of notifying gaia. + WebappsUpdater.updateApps(); + }, + + observe: function(aSubject, aTopic, aData) { + if (aTopic !== "network:offline-status-changed" || + aData !== "online") { + return; + } + + debug("Network is online. Checking updates."); + Services.obs.removeObserver(this, "network:offline-status-changed"); + WebappsUpdater.updateApps(); + } +}; + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([WebappsUpdateTimer]);