/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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/. */ #include "nsISupports.idl" interface nsITimerCallback; /** * An interface describing a global application service that allows long * duration (e.g. 1-7 or more days, weeks or months) timers to be registered * and then fired. */ [scriptable, uuid(0765c92c-6145-4253-9db4-594d8023087e)] interface nsIUpdateTimerManager : nsISupports { /** * Register an interval with the timer manager. The timer manager * periodically checks to see if the interval has expired and if it has * calls the specified callback. This is persistent across application * restarts and can handle intervals of long durations. The callback will be * called soon after the first registration unless you ask to skip it. * @param id * An id that identifies the interval, used for persistence * @param callback * A nsITimerCallback object that is notified when the interval * expires * @param interval * The length of time, in seconds, of the interval * @param skipFirst * Whether to skip the initial callback on first registration. * * Note: to avoid having to instantiate a component to call registerTimer * the component can intead register an update-timer category with comma * separated values as a single string: * * contractID,method,id,preference,interval * * via a manifest entry. The values are as follows: * contractID : the contract ID for the component. * method : the method used to instantiate the interface. This should be * either getService or createInstance depending on your * component. * id : the id that identifies the interval, used for persistence. * preference : the preference to for timer interval. This value can be * optional by specifying an empty string for the value. * interval : the default interval in seconds for the timer. */ void registerTimer(in AString id, in nsITimerCallback callback, in unsigned long interval, [optional] in boolean skipFirst); /** * Unregister an existing interval from the timer manager. * * @param id * An id that identifies the interval. */ void unregisterTimer(in AString id); };