DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

IDL

Mercurial (d1e995c8640a)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
/* 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;
};