mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 17:16:12 +00:00
76 lines
3.1 KiB
Plaintext
76 lines
3.1 KiB
Plaintext
/* 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"
|
|
|
|
/**
|
|
* Utilities for running nested event loops, asking them to return, and
|
|
* keeping track of which ones are still running.
|
|
*/
|
|
[scriptable, uuid(6758d0d7-e96a-4c5c-bca8-3bcbe5a15943)]
|
|
interface nsIJSInspector : nsISupports
|
|
{
|
|
/**
|
|
* Process the current thread's event queue, calling event handlers until
|
|
* a call to exitNestedEventLoop, below, asks us to return.
|
|
*
|
|
* The name 'enterNestedEventLoop' may be misleading if read too literally.
|
|
* This method loops calling event handlers until one asks it to stop, and
|
|
* then returns. So by that point, the nested event loop has been not only
|
|
* entered, but also run and exited.
|
|
*
|
|
* When enterNestedEventLoop calls an event handler, that handler may itself
|
|
* call enterNestedEventLoop, and so on, so that there may be arbitrarily
|
|
* many such calls on the stack at the same time.
|
|
*
|
|
* We say an enterNestedEventLoop call is "running" if it has not yet been
|
|
* asked to return, or "stopped" if it has been asked to return once it has
|
|
* finished processing the current event.
|
|
*
|
|
* @param requestor A token of the caller's choice to identify this event
|
|
* loop.
|
|
*
|
|
* @return depth The number of running enterNestedEventLoop calls
|
|
* remaining, now that this one has returned.
|
|
*
|
|
* (Note that not all calls still on the stack are
|
|
* necessary running; exitNestedEventLoop can ask any
|
|
* number of enterNestedEventLoop calls to return.)
|
|
*/
|
|
unsigned long enterNestedEventLoop(in jsval requestor);
|
|
|
|
/**
|
|
* Stop the youngest running enterNestedEventLoop call, asking it to return
|
|
* once it has finished processing the current event.
|
|
*
|
|
* The name 'exitNestedEventLoop' may be misleading if read too literally.
|
|
* The affected event loop does not return immediately when this method is
|
|
* called. Rather, this method simply returns to its caller; the affected
|
|
* loop's current event handler is allowed to run to completion; and then
|
|
* that loop returns without processing any more events.
|
|
*
|
|
* This method ignores loops that have already been stopped, and operates on
|
|
* the youngest loop that is still running. Each call to this method stops
|
|
* another running loop.
|
|
*
|
|
* @return depth The number of running enterNestedEventLoop calls
|
|
* remaining, now that one has been stopped.
|
|
*
|
|
* @throws NS_ERROR_FAILURE if there are no running enterNestedEventLoop calls.
|
|
*/
|
|
unsigned long exitNestedEventLoop();
|
|
|
|
/**
|
|
* The number of running enterNestedEventLoop calls on the stack.
|
|
* This count does not include stopped enterNestedEventLoop calls.
|
|
*/
|
|
readonly attribute unsigned long eventLoopNestLevel;
|
|
|
|
/**
|
|
* The |requestor| value that was passed to the youngest running
|
|
* enterNestedEventLoop call.
|
|
*/
|
|
readonly attribute jsval lastNestRequestor;
|
|
};
|