/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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 PBlob; include protocol PBrowser; include protocol PContent; include protocol PJavaScript; include protocol PFileDescriptorSet; include protocol PSendStream; include DOMTypes; include JavaScriptTypes; include PTabContext; using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h"; using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h"; using mozilla::dom::ContentParentId from "mozilla/dom/ipc/IdType.h"; using class mozilla::dom::MessagePort from "mozilla/dom/MessagePort.h"; using class mozilla::dom::ipc::StructuredCloneData from "mozilla/dom/ipc/StructuredCloneData.h"; namespace mozilla { namespace dom { /* * PContentBridge allows us to represent a parent/child relationship between two * child processes. When a child process wants to open its own child, it asks * the root process to create a new process and then bridge them. The first * child will allocate the PContentBridgeParent, and the newly opened child will * allocate the PContentBridgeChild. This protocol allows these processes to * share PBrowsers and send messages to each other. */ nested(upto inside_cpow) sync protocol PContentBridge { bridges PContent, PContent; manages PBlob; manages PBrowser; manages PFileDescriptorSet; manages PJavaScript; manages PSendStream; parent: sync SyncMessage(nsString aMessage, ClonedMessageData aData, CpowEntry[] aCpows, Principal aPrincipal) returns (StructuredCloneData[] retval); async PJavaScript(); async PSendStream(); both: // Both the parent and the child can construct the PBrowser. // See the comment in PContent::PBrowser(). async PBrowser(TabId tabId, IPCTabContext context, uint32_t chromeFlags, ContentParentId cpId, bool isForApp, bool isForBrowser); async PBlob(BlobConstructorParams params); async PFileDescriptorSet(FileDescriptor fd); async AsyncMessage(nsString aMessage, CpowEntry[] aCpows, Principal aPrincipal, ClonedMessageData aData); }; } }