#include "nsISupports.idl"

interface nsIDOMWindow;

[scriptable, uuid(530db841-1b2c-485a-beeb-f2b1acb9714e)]
interface nsIWorkerDebuggerListener : nsISupports
{
  void onClose();

  void onError(in DOMString filename, in unsigned long lineno,
               in DOMString message);

  void onFreeze();

  void onMessage(in DOMString message);

  void onThaw();
};

[scriptable, builtinclass, uuid(bdcaf96f-916a-4b24-bb53-165c1785668b)]
interface nsIWorkerDebugger : nsISupports
{
  const unsigned long TYPE_DEDICATED = 0;
  const unsigned long TYPE_SHARED = 1;
  const unsigned long TYPE_SERVICE = 2;

  readonly attribute bool isClosed;

  readonly attribute bool isChrome;

  readonly attribute bool isFrozen;

  readonly attribute bool isInitialized;

  readonly attribute nsIWorkerDebugger parent;

  readonly attribute unsigned long type;

  readonly attribute DOMString url;

  readonly attribute nsIDOMWindow window;

  [implicit_jscontext]
  void initialize(in DOMString url);

  [implicit_jscontext, binaryname(PostMessageMoz)]
  void postMessage(in DOMString message);

  void addListener(in nsIWorkerDebuggerListener listener);

  void removeListener(in nsIWorkerDebuggerListener listener);
};
