WebAPI/ResourceStats: Difference between revisions
< WebAPI
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(3 intermediate revisions by one other user not shown) | |||
Line 71: | Line 71: | ||
==== ResourceStatsManager.webidl ==== | ==== ResourceStatsManager.webidl ==== | ||
/** | |||
* Supported resource statistics | |||
*/ | |||
enum ResourceType { | |||
"network", | |||
"power" | |||
}; | |||
/** | |||
* List of system services supporting resource statistics | |||
*/ | |||
enum SystemService { | |||
"ota", | |||
"tethering" | |||
}; | |||
dictionary ResourceStatsOptions | |||
{ | |||
/** | |||
* |component| specifies which component's resource usage will be returned. | |||
* If null or undefined, sum of all components' usage is returned. | |||
* | |||
* |component| is expressed in "<component>:<id>", where <component> is the | |||
* name of the component and <id> is used to identify different entities. | |||
* | |||
* The <id> field is mainly used in specifying the identity of different SIMs | |||
* when quering mobile network usage, e.g. "mobile:<iccid>". | |||
* | |||
* Quering statistics of other components should specify the |component| to | |||
* "<component>:0", such as "cpu:0" or "wifi:0". | |||
*/ | |||
DOMString? component = null; | |||
/** | |||
* |manifestURL| specifies the manifestURL of an application. | |||
* |systemService| specifies the system service. | |||
* | |||
* If both |systemService| and |manifestURL| are null or undefined, then a | |||
* system-wide resource statistics is returned. | |||
* | |||
* If |manifestURL| is specified, then the resource statistics of the | |||
* specified application is returned. | |||
* | |||
* If |systemService| is specified, then the resource statistics of the | |||
* specified system service is returned. | |||
* | |||
* If |systemService| and |manifestURL| are both specified, then the return | |||
* statistics indicates the resources that the system service consumed for | |||
* the application. | |||
*/ | |||
SystemService? serviceType = null; | |||
DOMString? manifestURL = null; | |||
}; | |||
dictionary ResourceStatsAlarmOptions | |||
{ | |||
/** | |||
* |startTime| indicates the start time of counting the resource usage. | |||
* | |||
* |data| is used to reflect in the alarm object when the alarm is triggered. | |||
* |data| should be copied using the structured clone algorithm. | |||
*/ | |||
DOMTimeStamp startTime; // time in milliseconds since Epoch | |||
any data; | |||
}; | |||
[JSImplementation="@mozilla.org/resourceStatsAlarm;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] | |||
interface ResourceStatsAlarm | |||
{ | |||
readonly attribute unsigned long alarmId; | |||
readonly attribute ResourceType type; | |||
readonly attribute DOMString component; | |||
readonly attribute SystemService serviceType; | |||
readonly attribute DOMString manifestURL; | |||
readonly attribute unsigned long long threshold; | |||
readonly attribute any data; | |||
}; | |||
[Constructor(ResourceType type), JSImplementation="@mozilla.org/resourceStatsManager;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] | |||
interface ResourceStatsManager | |||
{ | |||
/** | |||
* Query resource statistics. | |||
* | |||
* |statsOptions| specifies the detail of statistics of interest. | |||
* | |||
* |start| and |end| specifies the time range of interest, both included. | |||
* If |start| is null or undefined, retrieve the stats since measurements. | |||
* If |end| is null or undefined. retrieve the stats until the current time. | |||
* | |||
* If success, the fulfillment value is an array of ResourceStats object. | |||
*/ | |||
Promise getStats(optional ResourceStatsOptions statsOptions, | |||
optional DOMTimeStamp? start = null, | |||
optional DOMTimeStamp? end = null); | |||
/** | |||
* Clear resource statistics stored in database. | |||
* | |||
* |statsOptions| specifies the detail of statistics to delete. | |||
* | |||
* |start| and |end| specifies the time range of interest, both included. | |||
* If |start| is null or undefined, delete the stats since measurements. | |||
* If |end| is null or undefined. delete the stats until the current time. | |||
*/ | |||
Promise clearStats(optional ResourceStatsOptions statsOptions, | |||
optional DOMTimeStamp? start = null, | |||
optional DOMTimeStamp? end = null); | |||
/** | |||
* Clear all resource statistics stored in database. | |||
*/ | |||
Promise clearAllStats(); | |||
/** | |||
* Install an alarm to monitor resource usage. | |||
* | |||
* The |threshold| is an object specified the limit of resource usage. When | |||
* resource usage reaches the threshold, a "resourceStats-alarm" system | |||
* message is sent to the application. | |||
* | |||
* |statsOptions| specifies the detail of statistics of interest. | |||
* | |||
* |alarmOptions| is a ResourceStatsAlarmOptions object. | |||
* | |||
* If success, the fulfillment value is an alarm ID. | |||
*/ | |||
Promise addAlarm(unsigned long long threshold, | |||
optional ResourceStatsOptions statsOptions, | |||
optional ResourceStatsAlarmOptions alarmOptions); | |||
/** | |||
* Obtain alarms. | |||
* | |||
* If |statsOptions| is provided, then only the alarms monitoring that | |||
* resource are returned. Otherwise, all alarms set for this resource type | |||
* is returned. | |||
* | |||
* If success, the fulfillment value is an array of ResourceStatsAlarm. | |||
*/ | |||
Promise getAlarms(optional ResourceStatsOptions statsOptions); | |||
/** | |||
* Remove the specified alarm. | |||
* | |||
* |alarmId| specifies the alarm to be removed. | |||
*/ | |||
Promise removeAlarm(unsigned long alarmId); | |||
/** | |||
* Remove all alarms. | |||
*/ | |||
Promise removeAllAlarms(); | |||
/** | |||
* Enumerate components that have stored statistics in database. | |||
* | |||
* If success, the fulfillment value is an array of DOMString. | |||
*/ | |||
Promise getAvailableComponents(); | |||
/** | |||
* Return supporting resource statistics, i.e. ["Network", "Power"] | |||
* | |||
* This should be specified as static attribute after Bug 863952 is resolved. | |||
*/ | |||
[Cached, Pure] | |||
readonly attribute sequence<DOMString> resourceTypes; | |||
/** | |||
* Time in milliseconds between statistics stored in database. | |||
* | |||
* This should be specified as static attribute after Bug 863952 is resolved. | |||
*/ | |||
readonly attribute unsigned long sampleRate; | |||
/** | |||
* Time in milliseconds recorded by the API until present time. All | |||
* statistics older than maxStorageAge from now are deleted. | |||
* | |||
* This should be specified as static attribute after Bug 863952 is resolved. | |||
*/ | |||
readonly attribute unsigned long long maxStorageAge; | |||
}; | |||
== Bugs == | |||
{{bug|951976}}: API for Resource Statistics | |||
[[Category:Web APIs]] |
Latest revision as of 23:56, 1 October 2014
Objective
ResourceStats API provides a generic interface to access resource statistics of Firefox OS devices. It also provides an interface for resource control.
Implementation
WebIDl Definition
ResourceStats.webidl
[JSImplementation="@mozilla.org/networkStatsData;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] interface NetworkStatsData { readonly attribute unsigned long long receivedBytes; readonly attribute unsigned long long sentBytes; readonly attribute DOMTimeStamp timestamp; // timestamp of the record }; [JSImplementation="@mozilla.org/powerStatsData;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] interface PowerStatsData { readonly attribute unsigned long long consumedPower; // unit: mW readonly attribute DOMTimeStamp timestamp; // timestamp of the record }; [JSImplementation="@mozilla.org/resourceStats;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] interface ResourceStats { /** * Type of statistics/ */ readonly attribute ResourceType type; /** * The component that statistics belongs to. * If null, sum of all components' statistics are returned. */ readonly attribute DOMString? component; /** * |serviceType| specifies the system service. * |manifestURL| specifies the manifestURL of an application. * * If both |systemService| and |manifestURL| are null, then getStats() * returns a system-wide resource statistics. * * If |manifestURL| is not null, then getStats() returns statistics of * that application. * * If |serviceType| is not null, then getStats returns statistics of * that system service. * * If both |systemService| and |manifestURL| are specified, then the returned * statistics indicates the resources that the system service consumed for * the application. */ readonly attribute SystemService? serviceType; readonly attribute DOMString? manifestURL; /** * Statistics, one element per day */ sequence<(NetworkStatsData or PowerStatsData)> getStats(); /** * Date range */ readonly attribute DOMTimeStamp start; // start timestamp readonly attribute DOMTimeStamp end; // end timestamp };
ResourceStatsManager.webidl
/** * Supported resource statistics */ enum ResourceType { "network", "power" }; /** * List of system services supporting resource statistics */ enum SystemService { "ota", "tethering" }; dictionary ResourceStatsOptions { /** * |component| specifies which component's resource usage will be returned. * If null or undefined, sum of all components' usage is returned. * * |component| is expressed in "<component>:<id>", where <component> is the * name of the component and <id> is used to identify different entities. * * The <id> field is mainly used in specifying the identity of different SIMs * when quering mobile network usage, e.g. "mobile:<iccid>". * * Quering statistics of other components should specify the |component| to * "<component>:0", such as "cpu:0" or "wifi:0". */ DOMString? component = null; /** * |manifestURL| specifies the manifestURL of an application. * |systemService| specifies the system service. * * If both |systemService| and |manifestURL| are null or undefined, then a * system-wide resource statistics is returned. * * If |manifestURL| is specified, then the resource statistics of the * specified application is returned. * * If |systemService| is specified, then the resource statistics of the * specified system service is returned. * * If |systemService| and |manifestURL| are both specified, then the return * statistics indicates the resources that the system service consumed for * the application. */ SystemService? serviceType = null; DOMString? manifestURL = null; }; dictionary ResourceStatsAlarmOptions { /** * |startTime| indicates the start time of counting the resource usage. * * |data| is used to reflect in the alarm object when the alarm is triggered. * |data| should be copied using the structured clone algorithm. */ DOMTimeStamp startTime; // time in milliseconds since Epoch any data; }; [JSImplementation="@mozilla.org/resourceStatsAlarm;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] interface ResourceStatsAlarm { readonly attribute unsigned long alarmId; readonly attribute ResourceType type; readonly attribute DOMString component; readonly attribute SystemService serviceType; readonly attribute DOMString manifestURL; readonly attribute unsigned long long threshold; readonly attribute any data; }; [Constructor(ResourceType type), JSImplementation="@mozilla.org/resourceStatsManager;1", Pref="dom.resourceStats.enabled", AvailableIn="CertifiedApps"] interface ResourceStatsManager { /** * Query resource statistics. * * |statsOptions| specifies the detail of statistics of interest. * * |start| and |end| specifies the time range of interest, both included. * If |start| is null or undefined, retrieve the stats since measurements. * If |end| is null or undefined. retrieve the stats until the current time. * * If success, the fulfillment value is an array of ResourceStats object. */ Promise getStats(optional ResourceStatsOptions statsOptions, optional DOMTimeStamp? start = null, optional DOMTimeStamp? end = null); /** * Clear resource statistics stored in database. * * |statsOptions| specifies the detail of statistics to delete. * * |start| and |end| specifies the time range of interest, both included. * If |start| is null or undefined, delete the stats since measurements. * If |end| is null or undefined. delete the stats until the current time. */ Promise clearStats(optional ResourceStatsOptions statsOptions, optional DOMTimeStamp? start = null, optional DOMTimeStamp? end = null); /** * Clear all resource statistics stored in database. */ Promise clearAllStats(); /** * Install an alarm to monitor resource usage. * * The |threshold| is an object specified the limit of resource usage. When * resource usage reaches the threshold, a "resourceStats-alarm" system * message is sent to the application. * * |statsOptions| specifies the detail of statistics of interest. * * |alarmOptions| is a ResourceStatsAlarmOptions object. * * If success, the fulfillment value is an alarm ID. */ Promise addAlarm(unsigned long long threshold, optional ResourceStatsOptions statsOptions, optional ResourceStatsAlarmOptions alarmOptions); /** * Obtain alarms. * * If |statsOptions| is provided, then only the alarms monitoring that * resource are returned. Otherwise, all alarms set for this resource type * is returned. * * If success, the fulfillment value is an array of ResourceStatsAlarm. */ Promise getAlarms(optional ResourceStatsOptions statsOptions); /** * Remove the specified alarm. * * |alarmId| specifies the alarm to be removed. */ Promise removeAlarm(unsigned long alarmId); /** * Remove all alarms. */ Promise removeAllAlarms(); /** * Enumerate components that have stored statistics in database. * * If success, the fulfillment value is an array of DOMString. */ Promise getAvailableComponents(); /** * Return supporting resource statistics, i.e. ["Network", "Power"] * * This should be specified as static attribute after Bug 863952 is resolved. */ [Cached, Pure] readonly attribute sequence<DOMString> resourceTypes; /** * Time in milliseconds between statistics stored in database. * * This should be specified as static attribute after Bug 863952 is resolved. */ readonly attribute unsigned long sampleRate; /** * Time in milliseconds recorded by the API until present time. All * statistics older than maxStorageAge from now are deleted. * * This should be specified as static attribute after Bug 863952 is resolved. */ readonly attribute unsigned long long maxStorageAge; };
Bugs
bug 951976: API for Resource Statistics