#include "nsISupports.idl"

interface mozIDOMWindow;
interface nsIPrincipal;

[scriptable, uuid(9cf3b48e-361d-486a-8917-55cf8d00bb41)]
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(22f93aa3-8a05-46be-87e0-fa93bf8a8eff)]
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 isInitialized;

  readonly attribute nsIWorkerDebugger parent;

  readonly attribute unsigned long type;

  readonly attribute DOMString url;

  readonly attribute mozIDOMWindow window;

  readonly attribute nsIPrincipal principal;

  readonly attribute unsigned long serviceWorkerID;

  void initialize(in DOMString url);

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

  void addListener(in nsIWorkerDebuggerListener listener);

  void removeListener(in nsIWorkerDebuggerListener listener);
};