Source code

Revision control

Copy as Markdown

Other Tools

/* -*- 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);
};