ipc/glue/PBackground.ipdl
author Jan Varga <jan.varga@gmail.com>
Tue, 08 Aug 2017 23:01:52 +0200
changeset 373545 371e75eb2b60281508ef8f7535bdda3964975921
parent 373540 f8241dee5ef33eb3c03c9a6b2e8b0830db84aae0
child 373548 bbc3dc385fac9b8c629400a3fba14ab159cf0c97
permissions -rw-r--r--
Bug 1350637 - Part 6: Fix a deadlock when main process storage child actor triggers storage thread initialization; r=asuth

/* 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 PAsmJSCacheEntry;
include protocol PBackgroundIDBFactory;
include protocol PBackgroundIndexedDBUtils;
include protocol PBackgroundStorage;
include protocol PBackgroundTest;
include protocol PBroadcastChannel;
include protocol PCache;
include protocol PCacheStorage;
include protocol PCacheStreamControl;
include protocol PFileDescriptorSet;
include protocol PFileSystemRequest;
include protocol PGamepadEventChannel;
include protocol PGamepadTestChannel;
include protocol PHttpBackgroundChannel;
include protocol PIPCBlobInputStream;
include protocol PPendingIPCBlob;
include protocol PMessagePort;
include protocol PCameras;
include protocol PQuota;
include protocol PChildToParentStream;
include protocol PParentToChildStream;
include protocol PServiceWorkerManager;
include protocol PWebAuthnTransaction;
include protocol PUDPSocket;
include protocol PVsync;

include DOMTypes;
include IPCBlob;
include PBackgroundSharedTypes;
include PBackgroundIDBSharedTypes;
include PFileSystemParams;
include ProtocolTypes;

include "mozilla/dom/cache/IPCUtils.h";

using mozilla::dom::cache::Namespace
  from "mozilla/dom/cache/Types.h";

using mozilla::dom::asmjscache::OpenMode
  from "mozilla/dom/asmjscache/AsmJSCache.h";

using mozilla::dom::asmjscache::WriteParams
  from "mozilla/dom/asmjscache/AsmJSCache.h";

namespace mozilla {
namespace ipc {

sync protocol PBackground
{
  manages PAsmJSCacheEntry;
  manages PBackgroundIDBFactory;
  manages PBackgroundIndexedDBUtils;
  manages PBackgroundStorage;
  manages PBackgroundTest;
  manages PBroadcastChannel;
  manages PCache;
  manages PCacheStorage;
  manages PCacheStreamControl;
  manages PFileDescriptorSet;
  manages PFileSystemRequest;
  manages PGamepadEventChannel;
  manages PGamepadTestChannel;
  manages PHttpBackgroundChannel;
  manages PIPCBlobInputStream;
  manages PPendingIPCBlob;
  manages PMessagePort;
  manages PCameras;
  manages PQuota;
  manages PChildToParentStream;
  manages PParentToChildStream;
  manages PServiceWorkerManager;
  manages PWebAuthnTransaction;
  manages PUDPSocket;
  manages PVsync;

parent:
  // Only called at startup during mochitests to check the basic infrastructure.
  async PBackgroundTest(nsCString testArg);

  async PBackgroundIDBFactory(LoggingInfo loggingInfo);

  async PBackgroundIndexedDBUtils();

  // Use only for testing!
  async FlushPendingFileDeletions();

  async PBackgroundStorage(nsString profilePath);

  async PVsync();

  async PCameras();

  async PUDPSocket(OptionalPrincipalInfo pInfo, nsCString filter);
  async PBroadcastChannel(PrincipalInfo pInfo, nsCString origin, nsString channel);

  async PServiceWorkerManager();

  async ShutdownServiceWorkerRegistrar();

  async PCacheStorage(Namespace aNamespace, PrincipalInfo aPrincipalInfo);

  async PMessagePort(nsID uuid, nsID destinationUuid, uint32_t sequenceId);

  async PChildToParentStream();

  async MessagePortForceClose(nsID uuid, nsID destinationUuid, uint32_t sequenceId);

  async PAsmJSCacheEntry(OpenMode openMode,
                         WriteParams write,
                         PrincipalInfo principalInfo);

  async PQuota();

  async PFileSystemRequest(FileSystemParams params);

  async PGamepadEventChannel();

  async PGamepadTestChannel();

  async PHttpBackgroundChannel(uint64_t channelId);

  async PWebAuthnTransaction();

child:
  async PCache();
  async PCacheStreamControl();

  async PParentToChildStream();

  async PPendingIPCBlob(IPCBlob blob);

both:
  // PIPCBlobInputStream is created on the parent side only if the child starts
  // a migration.
  async PIPCBlobInputStream(nsID aID, uint64_t aSize);

  async PFileDescriptorSet(FileDescriptor fd);
};

} // namespace ipc
} // namespace mozilla