dom/workers/remoteworkers/PRemoteWorker.ipdl
author Perry Jiang <perry@mozilla.com>
Wed, 14 Aug 2019 16:20:31 +0000
changeset 487981 216591953f9750051e8915543aa246d4ec1600bb
parent 487979 8e3fedf6502a968ae89119615d798aba5b14f608
child 488036 3cf55b7f12f2cb7dfcdbcbcd817d77e298e76fbd
permissions -rw-r--r--
Bug 1231213 - Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth Differential Revision: https://phabricator.services.mozilla.com/D26175

/* 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 protocol PBackground;
include protocol PFetchEventOpProxy;

include DOMTypes;
include ServiceWorkerOpArgs;
include RemoteWorkerTypes;

namespace mozilla {
namespace dom {

struct RemoteWorkerSuspendOp
{};

struct RemoteWorkerResumeOp
{};

struct RemoteWorkerFreezeOp
{};

struct RemoteWorkerThawOp
{};

struct RemoteWorkerTerminateOp
{};

struct RemoteWorkerPortIdentifierOp
{
  MessagePortIdentifier portIdentifier;
};

struct RemoteWorkerAddWindowIDOp
{
  uint64_t windowID;
};

struct RemoteWorkerRemoveWindowIDOp
{
  uint64_t windowID;
};

union RemoteWorkerOp {
  RemoteWorkerSuspendOp;
  RemoteWorkerResumeOp;
  RemoteWorkerFreezeOp;
  RemoteWorkerThawOp;
  RemoteWorkerTerminateOp;
  RemoteWorkerPortIdentifierOp;
  RemoteWorkerAddWindowIDOp;
  RemoteWorkerRemoveWindowIDOp;
};

// This protocol is used to make a remote worker controllable from the parent
// process. The parent process will receive operations from the
// PRemoteWorkerController protocol.
protocol PRemoteWorker
{
  manager PBackground;

  manages PFetchEventOpProxy;

parent:
  async Created(bool aStatus);

  async Error(ErrorValue aValue);

  async Close();

  async SetServiceWorkerSkipWaitingFlag() returns (bool aOk);

child:
  async PFetchEventOpProxy(ServiceWorkerFetchEventOpArgs aArgs);

  async __delete__();

  async ExecOp(RemoteWorkerOp op);

  async ExecServiceWorkerOp(ServiceWorkerOpArgs aArgs)
      returns (ServiceWorkerOpResult aResult);
};

} // namespace dom
} // namespace mozilla