mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 07:42:04 +00:00
0037974a9f
The UpdateTimerManager has an undocumented behaviour for firing its listeners very soon after first registration (about 10min into the first session). Let's document that behaviour, and make it optional. Differential Revision: https://phabricator.services.mozilla.com/D46292 --HG-- extra : moz-landing-system : lando
63 lines
2.6 KiB
Plaintext
63 lines
2.6 KiB
Plaintext
/* -*- 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);
|
|
};
|