mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-15 08:53:07 +09:00
This removes a lot of the plumbing for having the platform embed itself through IPC which was required for B2G running the browser as both shell and browser application.
68 lines
2.3 KiB
Text
68 lines
2.3 KiB
Text
/* -*- 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 isForBrowser);
|
|
|
|
async PBlob(BlobConstructorParams params);
|
|
|
|
async PFileDescriptorSet(FileDescriptor fd);
|
|
|
|
async AsyncMessage(nsString aMessage, CpowEntry[] aCpows,
|
|
Principal aPrincipal, ClonedMessageData aData);
|
|
};
|
|
|
|
}
|
|
}
|