Source code

Revision control

Other Tools

/* 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/.
*/
[ChromeOnly, Exposed=Window]
namespace UserInteraction {
/**
* Starts a timer associated with a UserInteraction ID. The timer can be
* directly associated with a UserInteraction ID, or with a pair of a
* UserInteraction ID and an object.
*
* @param id - the interaction being recorded, as
* declared in UserInteractions.yaml. This is also the annotation
* key that will be set in the BHR hang report if a hang occurs
* before the UserInteraction is finished.
*
* @param value - a value to be set on the key in the event
* that a hang occurs when the timer is running. This value is limited
* to 50 characters to avoid abuse, and if the value exceeds that limit
* then no timer is started, an error is printed, and this function returns
* false.
*
* @param obj - Optional parameter. If specified, the timer is
* associated with this object, meaning that multiple timers for the
* same annotation key may be run concurrently, as long as they are
* associated with different objects.
*
* @returns True if the timer was successfully started, false otherwise.
* If a timer already exists, it will be overwritten, and the new timer
* will include a "(clobbered)" suffix in any BHR annotations that get
* created.
*/
boolean start(DOMString id,
UTF8String value,
optional object? obj = null);
/**
* Updates an already-running timer associated with a UserInteraction ID
* (and object) with a new value string.
*
* @param id - the interaction being recorded, as
* declared in UserInteractions.yaml. This is also the annotation
* key that will be set in the BHR hang report if a hang occurs
* before the UserInteraction is finished.
*
* @param value - a new value to be set on the key in the event
* that a hang occurs when the timer is running. This value is limited
* to 50 characters to avoid abuse.
*
* @param obj - Optional parameter. If specified, the timer is
* associated with this object, meaning that multiple timers for the
* same annotation key may be run concurrently, as long as they are
* associated with different objects.
*
* @returns True if the timer was successfully updated, false
* otherwise.
*/
boolean update(DOMString id,
UTF8String value,
optional object? obj = null);
/**
* Cancels the timer associated with the given UserInteraction ID
* (and object) and does not add the profiler marker for it.
*
* @param id - the interaction being recorded, as
* declared in UserInteractions.yaml.
*
* @param obj - Optional parameter which associates the
* timer with the given object.
*
* @returns True if the timer was successfully stopped.
*/
boolean cancel(DOMString id, optional object? obj = null);
/**
* Returns whether a UserInteraction timer is currently running.
*
* @param id - the ID of the interaction to check, as declared in
* UserInteractions.yaml.
*
* @param obj - Optional parameter which checks for a timer associated
* with this particular object. If you're checking for a running timer
* that was started with an object, you'll need to pass in that same
* object here to check its running state.
*
* @returns True if the timer exists and is currently running.
*/
boolean running(DOMString id, optional object? obj = null);
/**
* Stops the timer associated with the given UserInteraction ID
* (and object), calculates the time delta between start and finish,
* and adds a profiler marker with that time range.
*
* @param id - the interaction being recorded, as
* declared in UserInteractions.yaml.
*
* @param obj - Optional parameter which associates the
* timer with the given object.
*
* @param additionalText - Optional parameter with includes additional
* text in the profiler marker. This text is not included in the hang
* annotation.
*
* @returns True if the timer was successfully stopped and the data
* was added to the profile.
*/
boolean finish(DOMString id,
optional object? obj = null,
optional UTF8String additionalText);
};