#include "nsISupports.idl"

interface nsIDOMWindow;

[scriptable, uuid(55d54034-1573-4889-b1d9-93ba12fc33c7)]
interface nsIWorkerDebuggerListener : nsISupports
{
  void onClose();

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

  void onMessage(in DOMString message);
};

[scriptable, builtinclass, uuid(28e0a60c-ff10-446c-8c2a-5fbdc01394ea)]
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 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);
};
