2009-09-10 02:00:14 +04:00
|
|
|
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
|
2009-08-18 23:05:15 +04:00
|
|
|
/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
|
2012-05-21 15:12:37 +04:00
|
|
|
/* 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/. */
|
2009-07-11 10:33:10 +04:00
|
|
|
|
2013-11-27 11:59:41 +04:00
|
|
|
include protocol PBackground;
|
2012-08-02 10:02:29 +04:00
|
|
|
include protocol PBlob;
|
2010-07-19 22:33:33 +04:00
|
|
|
include protocol PBrowser;
|
2016-03-22 21:07:08 +03:00
|
|
|
include protocol PCompositorBridge;
|
2014-06-11 09:44:13 +04:00
|
|
|
include protocol PContentBridge;
|
2015-04-14 04:08:00 +03:00
|
|
|
include protocol PContentPermissionRequest;
|
2014-05-13 21:13:00 +04:00
|
|
|
include protocol PCycleCollectWithLogs;
|
2015-04-22 22:55:23 +03:00
|
|
|
include protocol PPSMContentDownloader;
|
2010-09-16 02:55:08 +04:00
|
|
|
include protocol PExternalHelperApp;
|
2015-08-26 02:42:21 +03:00
|
|
|
include protocol PHandlerService;
|
2014-03-25 22:37:13 +04:00
|
|
|
include protocol PFileDescriptorSet;
|
2011-10-06 02:15:45 +04:00
|
|
|
include protocol PHal;
|
2015-09-22 22:09:42 +03:00
|
|
|
include protocol PHeapSnapshotTempFileHelper;
|
2015-01-17 05:34:47 +03:00
|
|
|
include protocol PProcessHangMonitor;
|
2012-08-29 16:24:48 +04:00
|
|
|
include protocol PImageBridge;
|
Bug 1353629 - PBlob refactoring - part 4 - IPCBlobInputStream, r=smaug
IPCBlobInputStream is a new type of nsIInputStream that is used only in content
process when a Blob is sent from parent to child. This inputStream is for now,
just cloneable.
When the parent process sends a Blob to a content process, it has the Blob and
its inputStream. With its inputStream it creates a IPCBlobInputStreamParent
actor. This actor keeps the inputStream alive for following uses (not part of
this patch).
On the child side we will have, of course, a IPCBlobInputStreamChild actor.
This actor is able to create a IPCBlobInputStream when CreateStream() is
called. This means that 1 IPCBlobInputStreamChild can manage multiple
IPCBlobInputStreams each time one of them is cloned. When the last one of this
stream is released, the child actor sends a __delete__ request to the parent
side; the parent will be deleted, and the original inputStream, on the parent
side, will be released as well.
IPCBlobInputStream is a special inputStream because each method, except for
Available() fails. Basically, this inputStream cannot be used on the content
process for nothing else than knowing the size of the original stream.
In the following patches, I'll introduce an async way to use it.
2017-04-24 13:09:40 +03:00
|
|
|
include protocol PIPCBlobInputStream;
|
2015-06-18 18:46:36 +03:00
|
|
|
include protocol PMedia;
|
2017-03-29 11:40:38 +03:00
|
|
|
include protocol PMemoryStream;
|
2011-10-06 02:15:45 +04:00
|
|
|
include protocol PNecko;
|
2015-02-10 13:49:03 +03:00
|
|
|
include protocol PGMPContent;
|
|
|
|
include protocol PGMPService;
|
2014-10-29 18:05:36 +03:00
|
|
|
include protocol PPluginModule;
|
2015-02-10 13:49:03 +03:00
|
|
|
include protocol PGMP;
|
2014-10-28 18:59:08 +03:00
|
|
|
include protocol PPrinting;
|
2017-03-14 14:28:58 +03:00
|
|
|
include protocol PChildToParentStream;
|
2017-03-14 14:29:43 +03:00
|
|
|
include protocol PParentToChildStream;
|
2014-11-13 03:31:00 +03:00
|
|
|
include protocol POfflineCacheUpdate;
|
2016-03-29 21:32:41 +03:00
|
|
|
include protocol PRenderFrame;
|
2013-04-04 02:13:17 +04:00
|
|
|
include protocol PSpeechSynthesis;
|
2011-10-06 02:15:45 +04:00
|
|
|
include protocol PStorage;
|
|
|
|
include protocol PTestShell;
|
2013-07-03 11:24:32 +04:00
|
|
|
include protocol PJavaScript;
|
2014-07-02 02:24:27 +04:00
|
|
|
include protocol PRemoteSpellcheckEngine;
|
2015-09-21 15:54:00 +03:00
|
|
|
include protocol PWebBrowserPersistDocument;
|
2015-04-22 01:29:18 +03:00
|
|
|
include protocol PWebrtcGlobal;
|
2015-03-26 06:16:21 +03:00
|
|
|
include protocol PPresentation;
|
2016-11-19 00:54:57 +03:00
|
|
|
include protocol PURLClassifier;
|
2017-04-07 09:15:16 +03:00
|
|
|
include protocol PURLClassifierLocal;
|
2015-09-18 00:23:13 +03:00
|
|
|
include protocol PVRManager;
|
2016-09-21 12:25:33 +03:00
|
|
|
include protocol PVideoDecoderManager;
|
2016-06-07 12:46:03 +03:00
|
|
|
include protocol PFlyWebPublishedServer;
|
2012-08-23 23:33:46 +04:00
|
|
|
include DOMTypes;
|
2013-07-11 02:05:39 +04:00
|
|
|
include JavaScriptTypes;
|
2017-04-24 13:16:49 +03:00
|
|
|
include IPCBlob;
|
2017-03-09 16:10:49 +03:00
|
|
|
include IPCStream;
|
2013-07-10 21:07:50 +04:00
|
|
|
include PTabContext;
|
2012-08-23 23:33:46 +04:00
|
|
|
include URIParams;
|
2014-10-29 18:05:36 +03:00
|
|
|
include PluginTypes;
|
2013-06-03 14:14:40 +04:00
|
|
|
include ProtocolTypes;
|
2015-10-02 19:13:52 +03:00
|
|
|
include PBackgroundSharedTypes;
|
2015-04-14 04:08:00 +03:00
|
|
|
include PContentPermission;
|
2016-07-11 17:04:04 +03:00
|
|
|
include ServiceWorkerConfiguration;
|
2015-08-02 23:59:33 +03:00
|
|
|
include GraphicsMessages;
|
2015-08-11 21:26:27 +03:00
|
|
|
include ProfilerTypes;
|
2017-01-27 03:35:54 +03:00
|
|
|
include MemoryReportTypes;
|
2009-09-10 02:00:14 +04:00
|
|
|
|
2014-08-18 13:06:11 +04:00
|
|
|
// Workaround to prevent error if PContentChild.cpp & PContentBridgeParent.cpp
|
|
|
|
// are put into different UnifiedProtocolsXX.cpp files.
|
|
|
|
// XXX Remove this once bug 1069073 is fixed
|
|
|
|
include "mozilla/dom/PContentBridgeParent.h";
|
2017-04-27 05:18:06 +03:00
|
|
|
include "mozilla/layers/WebRenderMessageUtils.h";
|
2014-08-18 13:06:11 +04:00
|
|
|
|
2013-10-01 23:25:07 +04:00
|
|
|
using GeoPosition from "nsGeoPositionIPCSerialiser.h";
|
2015-12-31 22:04:24 +03:00
|
|
|
using AlertNotificationType from "mozilla/AlertNotificationIPCSerializer.h";
|
2010-09-21 08:16:37 +04:00
|
|
|
|
2013-10-01 23:25:07 +04:00
|
|
|
using struct ChromePackage from "mozilla/chrome/RegistryMessageUtils.h";
|
2015-07-17 01:50:07 +03:00
|
|
|
using struct SubstitutionMapping from "mozilla/chrome/RegistryMessageUtils.h";
|
2013-10-01 23:25:07 +04:00
|
|
|
using struct OverrideMapping from "mozilla/chrome/RegistryMessageUtils.h";
|
|
|
|
using base::ChildPrivileges from "base/process_util.h";
|
2014-12-30 02:13:54 +03:00
|
|
|
using base::ProcessId from "base/process.h";
|
2013-10-01 23:25:07 +04:00
|
|
|
using struct IPC::Permission from "mozilla/net/NeckoMessageUtils.h";
|
|
|
|
using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h";
|
|
|
|
using struct mozilla::null_t from "ipc/IPCMessageUtils.h";
|
Bug 1303060: Changes to a11y to enable the serving of a COM handler; r=tbsaunde
MozReview-Commit-ID: GTQF3x1pBtX
A general outline of the COM handler (a.k.a. the "smart proxy"):
COM handlers are pieces of code that are loaded by the COM runtime along with
a proxy and are layered above that proxy. This enables the COM handler to
interpose itself between the caller and the proxy, thus providing the
opportunity for the handler to manipulate an interface's method calls before
those calls reach the proxy.
Handlers are regular COM components that live in DLLs and are declared in the
Windows registry. In order to allow for the specifying of a handler (and an
optional payload to be sent with the proxy), the mscom library allows its
clients to specify an implementation of the IHandlerProvider interface.
IHandlerProvider consists of 5 functions:
* GetHandler returns the CLSID of the component that should be loaded into
the COM client's process. If GetHandler returns a failure code, then no
handler is loaded.
* GetHandlerPayloadSize and WriteHandlerPayload are for obtaining the payload
data. These calls are made on a background thread but need to do their work
on the main thread. We declare the payload struct in IDL. MIDL generates two
functions, IA2Payload_Encode and IA2Payload_Decode, which are used by
mscom::StructToStream to read and write that struct to and from buffers.
* The a11y payload struct also includes an interface, IGeckoBackChannel, that
allows the handler to communicate directly with Gecko. IGeckoBackChannel
currently provides two methods: one to allow the handler to request fresh
cache information, and the other to provide Gecko with its IHandlerControl
interface.
* MarshalAs accepts an IID that specifies the interface that is about to be
proxied. We may want to send a more sophisticated proxy than the one that
is requested. The desired IID is returned by this function. In the case of
a11y interfaces, we should always return IAccessible2_3 if we are asked for
one of its parent interfaces. This allows us to eliminate round trips to
resolve more sophisticated interfaces later on.
* NewInstance, which is needed to ensure that all descendent proxies are also
imbued with the same handler code.
The main focus of this patch is as follows:
1. Provide an implementation of the IHandlerProvider interface;
2. Populate the handler payload (ie, the cache) with data;
3. Modify CreateHolderFromAccessible to specify the HandlerPayload object;
4. Receive the IHandlerControl interface from the handler DLL and move it
into the chrome process.
Some more information about IHandlerControl:
There is one IHandlerControl per handler DLL instance. It is the interface that
we call in Gecko when we need to dispatch an event to the handler. In order to
ensure that events are dispatched in the correct order, we need to dispatch
those events from the chrome main thread so that they occur in sequential order
with calls to NotifyWinEvent.
--HG--
extra : rebase_source : acb44dead7cc5488424720e1bf58862b7b30374f
2017-04-05 00:23:55 +03:00
|
|
|
using mozilla::a11y::IHandlerControlHolder from "mozilla/a11y/IPCTypes.h";
|
2013-10-01 23:25:07 +04:00
|
|
|
using mozilla::dom::NativeThreadId from "mozilla/dom/TabMessageUtils.h";
|
|
|
|
using mozilla::hal::ProcessPriority from "mozilla/HalTypes.h";
|
2015-09-23 21:49:05 +03:00
|
|
|
using mozilla::gfx::IntSize from "mozilla/gfx/2D.h";
|
2014-10-29 21:11:00 +03:00
|
|
|
using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h";
|
2014-10-24 04:28:00 +04:00
|
|
|
using mozilla::dom::ContentParentId from "mozilla/dom/ipc/IdType.h";
|
2016-05-19 00:17:34 +03:00
|
|
|
using mozilla::LayoutDeviceIntPoint from "Units.h";
|
2015-04-22 17:58:15 +03:00
|
|
|
using struct LookAndFeelInt from "mozilla/widget/WidgetMessageUtils.h";
|
2016-08-10 09:18:29 +03:00
|
|
|
using class mozilla::dom::MessagePort from "mozilla/dom/MessagePort.h";
|
|
|
|
using class mozilla::dom::ipc::StructuredCloneData from "mozilla/dom/ipc/StructuredCloneData.h";
|
2015-10-30 22:30:00 +03:00
|
|
|
using mozilla::DataStorageType from "ipc/DataStorageIPCUtils.h";
|
2017-01-12 19:38:48 +03:00
|
|
|
using mozilla::OriginAttributes from "mozilla/ipc/BackgroundUtils.h";
|
2016-03-29 21:32:41 +03:00
|
|
|
using struct mozilla::layers::TextureFactoryIdentifier from "mozilla/layers/CompositorTypes.h";
|
2017-04-10 00:30:27 +03:00
|
|
|
using mozilla::layers::CompositorOptions from "mozilla/layers/CompositorOptions.h";
|
2016-06-07 12:46:03 +03:00
|
|
|
using struct mozilla::dom::FlyWebPublishOptions from "mozilla/dom/FlyWebPublishOptionsIPCSerializer.h";
|
2016-06-22 17:16:40 +03:00
|
|
|
using mozilla::Telemetry::Accumulation from "mozilla/TelemetryComms.h";
|
|
|
|
using mozilla::Telemetry::KeyedAccumulation from "mozilla/TelemetryComms.h";
|
2017-01-16 07:12:00 +03:00
|
|
|
using mozilla::Telemetry::ScalarAction from "mozilla/TelemetryComms.h";
|
|
|
|
using mozilla::Telemetry::KeyedScalarAction from "mozilla/TelemetryComms.h";
|
2017-02-14 16:43:51 +03:00
|
|
|
using mozilla::Telemetry::ChildEventData from "mozilla/TelemetryComms.h";
|
2017-04-27 05:18:06 +03:00
|
|
|
using mozilla::wr::PipelineId from "mozilla/webrender/WebRenderTypes.h";
|
2009-09-10 02:00:14 +04:00
|
|
|
|
2014-07-26 00:17:36 +04:00
|
|
|
union ChromeRegistryItem
|
|
|
|
{
|
|
|
|
ChromePackage;
|
|
|
|
OverrideMapping;
|
2015-07-17 01:50:07 +03:00
|
|
|
SubstitutionMapping;
|
2014-07-26 00:17:36 +04:00
|
|
|
};
|
|
|
|
|
2009-07-11 10:33:10 +04:00
|
|
|
namespace mozilla {
|
2009-09-10 02:00:14 +04:00
|
|
|
namespace dom {
|
2009-07-11 10:33:10 +04:00
|
|
|
|
2016-11-15 16:58:29 +03:00
|
|
|
// Used on Android/B2G to pass the list of fonts on the device
|
|
|
|
// to the child process
|
2011-01-13 07:04:42 +03:00
|
|
|
struct FontListEntry {
|
2011-09-23 15:15:36 +04:00
|
|
|
nsString familyName;
|
|
|
|
nsString faceName;
|
2011-01-13 07:04:42 +03:00
|
|
|
nsCString filepath;
|
2012-08-22 19:56:38 +04:00
|
|
|
uint16_t weight;
|
|
|
|
int16_t stretch;
|
|
|
|
uint8_t italic;
|
|
|
|
uint8_t index;
|
2014-06-30 22:05:29 +04:00
|
|
|
bool isHidden;
|
2011-01-13 07:04:42 +03:00
|
|
|
};
|
|
|
|
|
2016-11-15 16:58:29 +03:00
|
|
|
// Used on Mac OS X to pass the list of font families (not faces)
|
|
|
|
// from chrome to content processes.
|
|
|
|
// The entryType field distinguishes several types of font family
|
|
|
|
// record; see gfxMacPlatformFontList.h for values and meaning.
|
|
|
|
struct FontFamilyListEntry {
|
|
|
|
nsString familyName;
|
|
|
|
uint8_t entryType;
|
|
|
|
};
|
|
|
|
|
2012-08-23 00:00:21 +04:00
|
|
|
union PrefValue {
|
|
|
|
nsCString;
|
|
|
|
int32_t;
|
|
|
|
bool;
|
|
|
|
};
|
|
|
|
|
|
|
|
union MaybePrefValue {
|
|
|
|
PrefValue;
|
|
|
|
null_t;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct PrefSetting {
|
|
|
|
nsCString name;
|
|
|
|
MaybePrefValue defaultValue;
|
|
|
|
MaybePrefValue userValue;
|
|
|
|
};
|
|
|
|
|
2015-10-30 22:30:00 +03:00
|
|
|
struct DataStorageItem {
|
|
|
|
nsCString key;
|
|
|
|
nsCString value;
|
|
|
|
DataStorageType type;
|
|
|
|
};
|
|
|
|
|
2017-02-25 19:14:04 +03:00
|
|
|
struct DataStorageEntry {
|
|
|
|
DataStorageItem[] items;
|
|
|
|
nsString filename;
|
|
|
|
};
|
|
|
|
|
2014-10-22 13:50:00 +04:00
|
|
|
struct ClipboardCapabilities {
|
|
|
|
bool supportsSelectionClipboard;
|
|
|
|
bool supportsFindClipboard;
|
|
|
|
};
|
|
|
|
|
2015-03-10 12:32:00 +03:00
|
|
|
union FileDescOrError {
|
|
|
|
FileDescriptor;
|
|
|
|
nsresult;
|
|
|
|
};
|
|
|
|
|
2015-03-24 17:29:16 +03:00
|
|
|
struct DomainPolicyClone
|
|
|
|
{
|
|
|
|
bool active;
|
|
|
|
URIParams[] blacklist;
|
|
|
|
URIParams[] whitelist;
|
|
|
|
URIParams[] superBlacklist;
|
|
|
|
URIParams[] superWhitelist;
|
|
|
|
};
|
|
|
|
|
2015-04-24 01:05:29 +03:00
|
|
|
|
|
|
|
|
2015-10-30 02:30:57 +03:00
|
|
|
struct FrameScriptInfo
|
|
|
|
{
|
|
|
|
nsString url;
|
|
|
|
bool runInGlobalScope;
|
|
|
|
};
|
|
|
|
|
2015-11-04 22:08:14 +03:00
|
|
|
struct AndroidSystemInfo
|
|
|
|
{
|
|
|
|
nsString device;
|
|
|
|
nsString manufacturer;
|
|
|
|
nsString release_version;
|
|
|
|
nsString hardware;
|
|
|
|
uint32_t sdk_version;
|
|
|
|
bool isTablet;
|
|
|
|
};
|
|
|
|
|
2016-07-14 10:04:21 +03:00
|
|
|
struct GetFilesResponseSuccess
|
|
|
|
{
|
2017-04-24 13:16:49 +03:00
|
|
|
IPCBlob[] blobs;
|
2016-07-14 10:04:21 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
struct GetFilesResponseFailure
|
|
|
|
{
|
|
|
|
nsresult errorCode;
|
|
|
|
};
|
|
|
|
|
|
|
|
union GetFilesResponseResult
|
|
|
|
{
|
|
|
|
GetFilesResponseSuccess;
|
|
|
|
GetFilesResponseFailure;
|
|
|
|
};
|
|
|
|
|
2017-02-08 12:19:01 +03:00
|
|
|
struct FileCreationSuccessResult
|
|
|
|
{
|
2017-04-24 13:16:50 +03:00
|
|
|
IPCBlob blob;
|
2017-02-08 12:19:01 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
struct FileCreationErrorResult
|
|
|
|
{
|
|
|
|
nsresult errorCode;
|
|
|
|
};
|
|
|
|
|
|
|
|
union FileCreationResult
|
|
|
|
{
|
|
|
|
FileCreationSuccessResult;
|
|
|
|
FileCreationErrorResult;
|
|
|
|
};
|
|
|
|
|
2016-07-17 17:50:50 +03:00
|
|
|
struct BlobURLRegistrationData
|
|
|
|
{
|
|
|
|
nsCString url;
|
2017-04-24 13:16:49 +03:00
|
|
|
IPCBlob blob;
|
2016-07-17 17:50:50 +03:00
|
|
|
Principal principal;
|
|
|
|
};
|
|
|
|
|
2016-11-01 06:25:19 +03:00
|
|
|
struct GMPAPITags
|
|
|
|
{
|
|
|
|
nsCString api;
|
|
|
|
nsCString[] tags;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct GMPCapabilityData
|
|
|
|
{
|
|
|
|
nsCString name;
|
|
|
|
nsCString version;
|
|
|
|
GMPAPITags[] capabilities;
|
|
|
|
};
|
|
|
|
|
2017-02-11 02:46:59 +03:00
|
|
|
struct GfxInfoFeatureStatus
|
|
|
|
{
|
|
|
|
int32_t feature;
|
|
|
|
int32_t status;
|
|
|
|
nsCString failureId;
|
|
|
|
};
|
|
|
|
|
2017-02-05 08:52:38 +03:00
|
|
|
struct XPCOMInitData
|
|
|
|
{
|
|
|
|
bool isOffline;
|
|
|
|
bool isConnected;
|
|
|
|
int32_t captivePortalState;
|
|
|
|
bool isLangRTL;
|
|
|
|
bool haveBidiKeyboards;
|
|
|
|
nsString[] dictionaries;
|
|
|
|
ClipboardCapabilities clipboardCaps;
|
|
|
|
DomainPolicyClone domainPolicy;
|
|
|
|
/* used on MacOSX only */
|
|
|
|
FontFamilyListEntry[] fontFamilies;
|
|
|
|
OptionalURIParams userContentSheetURL;
|
|
|
|
PrefSetting[] prefs;
|
2017-04-12 00:37:35 +03:00
|
|
|
ContentDeviceData contentDeviceData;
|
2017-02-11 02:46:59 +03:00
|
|
|
GfxInfoFeatureStatus[] gfxFeatureStatus;
|
2017-02-25 19:14:04 +03:00
|
|
|
DataStorageEntry[] dataStorage;
|
Bug 1348042 - Refactor LocaleService to operate in server-client mode. r=Ehsan,qdot
LocaleService serves two main functions. It is a central place for all code in the
engine to learn about locales, but it also does the language negotiation and selection.
The former is relevant in all processes, but the latter should only be performed
by the "main" process. In case of current Desktop Firefox, the parent process
is the one performing all the language negotiation, and content processes should
operate in the "client" mode.
In Fennec, there's a Java app on top of Gecko which should work as a "server"
and then all processes, including parent process of Gecko is merely a "client" for that.
This refactor finalizes this duality making it easily configurable to define in
which mode a given LocaleService operates.
The server-client model allows all clients to stay in sync with the server,
but operate transparently for all callers just returning the right values.
In order to initialize LocaleService in the client mode in child process with the
right locales I'm adding the list of app locales to the XPCOMInitData,
and then fire LocaleService::SetAppLocales in the child process initialization.
In order to keep the list up to date, I'm adding intl:app-locales-changed to
the list of observed topics, and when triggered, I send the updated list
to the child process, which updates LocaleService::SetAppLocales with the new
list.
MozReview-Commit-ID: K9X6berF3IO
--HG--
extra : rebase_source : ca5e502d064023fddfd63fe6fe5eccefce8dee52
2017-03-26 08:09:45 +03:00
|
|
|
nsCString[] appLocales;
|
|
|
|
nsCString[] requestedLocales;
|
2017-01-17 07:05:46 +03:00
|
|
|
};
|
|
|
|
|
2017-01-16 18:51:43 +03:00
|
|
|
/**
|
|
|
|
* The PContent protocol is a top-level protocol between the UI process
|
|
|
|
* and a content process. There is exactly one PContentParent/PContentChild pair
|
|
|
|
* for each content process.
|
|
|
|
*/
|
2016-10-01 02:20:50 +03:00
|
|
|
nested(upto inside_cpow) sync protocol PContent
|
2009-07-11 10:33:10 +04:00
|
|
|
{
|
2012-08-02 10:02:29 +04:00
|
|
|
manages PBlob;
|
2010-07-19 22:33:33 +04:00
|
|
|
manages PBrowser;
|
2015-04-14 04:08:00 +03:00
|
|
|
manages PContentPermissionRequest;
|
2014-05-13 21:13:00 +04:00
|
|
|
manages PCycleCollectWithLogs;
|
2015-04-22 22:55:23 +03:00
|
|
|
manages PPSMContentDownloader;
|
2010-09-16 02:55:08 +04:00
|
|
|
manages PExternalHelperApp;
|
2014-03-25 22:37:13 +04:00
|
|
|
manages PFileDescriptorSet;
|
2011-10-06 02:15:45 +04:00
|
|
|
manages PHal;
|
2015-08-26 02:42:21 +03:00
|
|
|
manages PHandlerService;
|
2015-09-22 22:09:42 +03:00
|
|
|
manages PHeapSnapshotTempFileHelper;
|
Bug 1353629 - PBlob refactoring - part 4 - IPCBlobInputStream, r=smaug
IPCBlobInputStream is a new type of nsIInputStream that is used only in content
process when a Blob is sent from parent to child. This inputStream is for now,
just cloneable.
When the parent process sends a Blob to a content process, it has the Blob and
its inputStream. With its inputStream it creates a IPCBlobInputStreamParent
actor. This actor keeps the inputStream alive for following uses (not part of
this patch).
On the child side we will have, of course, a IPCBlobInputStreamChild actor.
This actor is able to create a IPCBlobInputStream when CreateStream() is
called. This means that 1 IPCBlobInputStreamChild can manage multiple
IPCBlobInputStreams each time one of them is cloned. When the last one of this
stream is released, the child actor sends a __delete__ request to the parent
side; the parent will be deleted, and the original inputStream, on the parent
side, will be released as well.
IPCBlobInputStream is a special inputStream because each method, except for
Available() fails. Basically, this inputStream cannot be used on the content
process for nothing else than knowing the size of the original stream.
In the following patches, I'll introduce an async way to use it.
2017-04-24 13:09:40 +03:00
|
|
|
manages PIPCBlobInputStream;
|
2015-06-18 18:46:36 +03:00
|
|
|
manages PMedia;
|
2017-03-29 11:40:38 +03:00
|
|
|
manages PMemoryStream;
|
2011-10-06 02:15:45 +04:00
|
|
|
manages PNecko;
|
2014-11-13 03:31:00 +03:00
|
|
|
manages POfflineCacheUpdate;
|
2014-10-28 18:59:08 +03:00
|
|
|
manages PPrinting;
|
2017-03-14 14:28:58 +03:00
|
|
|
manages PChildToParentStream;
|
2017-03-14 14:29:43 +03:00
|
|
|
manages PParentToChildStream;
|
2013-04-04 02:13:17 +04:00
|
|
|
manages PSpeechSynthesis;
|
2011-10-06 02:15:45 +04:00
|
|
|
manages PStorage;
|
|
|
|
manages PTestShell;
|
2013-07-03 11:24:32 +04:00
|
|
|
manages PJavaScript;
|
2014-07-02 02:24:27 +04:00
|
|
|
manages PRemoteSpellcheckEngine;
|
2015-09-21 15:54:00 +03:00
|
|
|
manages PWebBrowserPersistDocument;
|
2015-04-22 01:29:18 +03:00
|
|
|
manages PWebrtcGlobal;
|
2015-03-26 06:16:21 +03:00
|
|
|
manages PPresentation;
|
2016-06-07 12:46:03 +03:00
|
|
|
manages PFlyWebPublishedServer;
|
2016-11-19 00:54:57 +03:00
|
|
|
manages PURLClassifier;
|
2017-04-07 09:15:16 +03:00
|
|
|
manages PURLClassifierLocal;
|
2009-08-26 03:07:22 +04:00
|
|
|
|
2012-06-13 02:01:25 +04:00
|
|
|
both:
|
|
|
|
// Depending on exactly how the new browser is being created, it might be
|
|
|
|
// created from either the child or parent process!
|
|
|
|
//
|
|
|
|
// The child creates the PBrowser as part of
|
Bug 802366 - The main event: Let a browser process inherit its app's id. r=bz,cjones
The main bug fixed here is that in half of our interfaces, we use "is browser frame/element" to mean "browser or app", and in the other half, we use it to mean "is browser not app".
There's a related, functional bug also fixed here, which is that a browser process doesn't inherit its parent's app-id. This causes problems e.g. for IndexedDB: If a browser inside an app uses IndexedDB, the DB should have the app's app-id.
I also modified Tab{Parent,Child} and nsFrameLoader to call "app" "ownOrContainingApp", to emphasize that we might have inherited the app from a parent process. I left nsIDocShell::appId alone, because changing that would have necessitated changing nsILoadGroup and therefore a /lot/ of users in Necko; it's also not clear it would have clarified anything in those cases.
2012-11-10 22:32:37 +04:00
|
|
|
// TabChild::BrowserFrameProvideWindow (which happens when the child's
|
|
|
|
// content calls window.open()), and the parent creates the PBrowser as part
|
2016-10-15 04:46:26 +03:00
|
|
|
// of ContentParent::CreateBrowser.
|
Bug 802366 - The main event: Let a browser process inherit its app's id. r=bz,cjones
The main bug fixed here is that in half of our interfaces, we use "is browser frame/element" to mean "browser or app", and in the other half, we use it to mean "is browser not app".
There's a related, functional bug also fixed here, which is that a browser process doesn't inherit its parent's app-id. This causes problems e.g. for IndexedDB: If a browser inside an app uses IndexedDB, the DB should have the app's app-id.
I also modified Tab{Parent,Child} and nsFrameLoader to call "app" "ownOrContainingApp", to emphasize that we might have inherited the app from a parent process. I left nsIDocShell::appId alone, because changing that would have necessitated changing nsILoadGroup and therefore a /lot/ of users in Necko; it's also not clear it would have clarified anything in those cases.
2012-11-10 22:32:37 +04:00
|
|
|
//
|
2016-10-15 04:46:26 +03:00
|
|
|
// When the parent constructs a PBrowser, the child trusts the attributes it
|
|
|
|
// receives from the parent. In that case, the context should be
|
|
|
|
// FrameIPCTabContext.
|
Bug 802366 - The main event: Let a browser process inherit its app's id. r=bz,cjones
The main bug fixed here is that in half of our interfaces, we use "is browser frame/element" to mean "browser or app", and in the other half, we use it to mean "is browser not app".
There's a related, functional bug also fixed here, which is that a browser process doesn't inherit its parent's app-id. This causes problems e.g. for IndexedDB: If a browser inside an app uses IndexedDB, the DB should have the app's app-id.
I also modified Tab{Parent,Child} and nsFrameLoader to call "app" "ownOrContainingApp", to emphasize that we might have inherited the app from a parent process. I left nsIDocShell::appId alone, because changing that would have necessitated changing nsILoadGroup and therefore a /lot/ of users in Necko; it's also not clear it would have clarified anything in those cases.
2012-11-10 22:32:37 +04:00
|
|
|
//
|
2016-10-15 04:46:26 +03:00
|
|
|
// When the child constructs a PBrowser, the parent doesn't trust the
|
|
|
|
// attributes it receives from the child. In this case, context must have
|
|
|
|
// type PopupIPCTabContext. The parent checks that if the opener is a
|
|
|
|
// browser element, the context is also for a browser element.
|
2014-06-04 01:15:27 +04:00
|
|
|
//
|
2017-04-07 02:46:18 +03:00
|
|
|
// If |sameTabGroupAs| is non-zero, the new tab should go in the same
|
|
|
|
// TabGroup as |sameTabGroupAs|. This parameter should always be zero
|
|
|
|
// for PBrowser messages sent from the child to the parent.
|
|
|
|
//
|
2014-06-04 01:15:27 +04:00
|
|
|
// Keep the last 3 attributes in sync with GetProcessAttributes!
|
2017-04-07 02:46:18 +03:00
|
|
|
async PBrowser(TabId tabId, TabId sameTabGroupAs,
|
|
|
|
IPCTabContext context, uint32_t chromeFlags,
|
2016-10-15 04:46:26 +03:00
|
|
|
ContentParentId cpId, bool isForBrowser);
|
2009-08-26 03:07:22 +04:00
|
|
|
|
2012-08-02 10:02:29 +04:00
|
|
|
async PBlob(BlobConstructorParams params);
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PFileDescriptorSet(FileDescriptor fd);
|
2014-03-25 22:37:28 +04:00
|
|
|
|
2015-09-21 15:54:00 +03:00
|
|
|
// For parent->child, aBrowser must be non-null; aOuterWindowID can
|
|
|
|
// be 0 to indicate the browser's current root document, or nonzero
|
|
|
|
// to persist a subdocument. For child->parent, arguments are
|
|
|
|
// ignored and should be null/zero.
|
2016-01-27 00:51:53 +03:00
|
|
|
async PWebBrowserPersistDocument(nullable PBrowser aBrowser,
|
|
|
|
uint64_t aOuterWindowID);
|
2015-09-21 15:54:00 +03:00
|
|
|
|
2012-06-13 02:01:25 +04:00
|
|
|
child:
|
2017-01-05 23:55:57 +03:00
|
|
|
async InitGMPService(Endpoint<PGMPServiceChild> service);
|
2017-01-05 23:54:52 +03:00
|
|
|
async InitProcessHangMonitor(Endpoint<PProcessHangMonitorChild> hangMonitor);
|
2017-01-27 01:40:17 +03:00
|
|
|
async InitContentBridgeChild(Endpoint<PContentBridgeChild> endpoint);
|
2017-01-05 23:54:52 +03:00
|
|
|
|
2016-07-20 10:18:30 +03:00
|
|
|
// Give the content process its endpoints to the compositor.
|
2016-09-20 11:15:49 +03:00
|
|
|
async InitRendering(
|
|
|
|
Endpoint<PCompositorBridgeChild> compositor,
|
|
|
|
Endpoint<PImageBridgeChild> imageBridge,
|
2016-11-08 05:21:35 +03:00
|
|
|
Endpoint<PVRManagerChild> vr,
|
2017-04-14 11:06:09 +03:00
|
|
|
Endpoint<PVideoDecoderManagerChild> video,
|
|
|
|
uint32_t[] namespaces);
|
2016-07-18 07:24:28 +03:00
|
|
|
|
2016-09-20 11:18:50 +03:00
|
|
|
// Re-create the rendering stack using the given endpoints. This is sent
|
|
|
|
// after the compositor process has crashed. The new endpoints may be to a
|
|
|
|
// newly launched GPU process, or the compositor thread of the UI process.
|
|
|
|
async ReinitRendering(
|
|
|
|
Endpoint<PCompositorBridgeChild> compositor,
|
|
|
|
Endpoint<PImageBridgeChild> bridge,
|
2016-11-08 05:21:35 +03:00
|
|
|
Endpoint<PVRManagerChild> vr,
|
2017-04-14 11:06:09 +03:00
|
|
|
Endpoint<PVideoDecoderManagerChild> video,
|
|
|
|
uint32_t[] namespaces);
|
2016-09-20 11:18:50 +03:00
|
|
|
|
2013-01-18 00:06:36 +04:00
|
|
|
/**
|
2014-03-13 02:48:15 +04:00
|
|
|
* Enable system-level sandboxing features, if available. Can
|
|
|
|
* usually only be performed zero or one times. The child may
|
|
|
|
* abnormally exit if this fails; the details are OS-specific.
|
2013-01-18 00:06:36 +04:00
|
|
|
*/
|
2015-10-08 08:13:09 +03:00
|
|
|
async SetProcessSandbox(MaybeFileDesc aBroker);
|
2013-01-18 00:06:36 +04:00
|
|
|
|
2017-01-27 03:35:54 +03:00
|
|
|
async RequestMemoryReport(uint32_t generation,
|
|
|
|
bool anonymize,
|
|
|
|
bool minimizeMemoryUsage,
|
|
|
|
MaybeFileDesc DMDFile);
|
2011-02-16 21:43:23 +03:00
|
|
|
|
2015-04-11 01:18:05 +03:00
|
|
|
/**
|
|
|
|
* Communication between the PuppetBidiKeyboard and the actual
|
|
|
|
* BidiKeyboard hosted by the parent
|
|
|
|
*/
|
2016-06-03 12:56:04 +03:00
|
|
|
async BidiKeyboardNotify(bool isLangRTL, bool haveBidiKeyboards);
|
2015-04-11 01:18:05 +03:00
|
|
|
|
2012-10-16 06:12:14 +04:00
|
|
|
/**
|
2014-05-13 21:13:00 +04:00
|
|
|
* Dump this process's GC and CC logs to the provided files.
|
2012-10-16 06:12:14 +04:00
|
|
|
*
|
2014-05-13 21:13:00 +04:00
|
|
|
* For documentation on the other args, see dumpGCAndCCLogsToFile in
|
2014-03-05 06:27:13 +04:00
|
|
|
* nsIMemoryInfoDumper.idl
|
2012-10-16 06:12:14 +04:00
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async PCycleCollectWithLogs(bool dumpAllTraces,
|
|
|
|
FileDescriptor gcLog,
|
|
|
|
FileDescriptor ccLog);
|
2012-10-16 06:12:14 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PTestShell();
|
2009-08-26 03:07:22 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async RegisterChrome(ChromePackage[] packages, SubstitutionMapping[] substitutions,
|
|
|
|
OverrideMapping[] overrides, nsCString locale, bool reset);
|
|
|
|
async RegisterChromeItem(ChromeRegistryItem item);
|
2010-03-11 08:33:00 +03:00
|
|
|
|
2016-06-07 01:23:43 +03:00
|
|
|
async ClearImageCache(bool privateLoader, bool chrome);
|
|
|
|
|
2011-09-29 10:19:26 +04:00
|
|
|
async SetOffline(bool offline);
|
2015-05-02 00:14:39 +03:00
|
|
|
async SetConnectivity(bool connectivity);
|
2016-11-17 19:35:24 +03:00
|
|
|
async SetCaptivePortalState(int32_t aState);
|
2010-05-11 16:44:12 +04:00
|
|
|
|
2012-08-23 23:33:46 +04:00
|
|
|
async NotifyVisited(URIParams uri);
|
2010-07-02 19:50:41 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PreferenceUpdate(PrefSetting pref);
|
2016-08-04 21:33:42 +03:00
|
|
|
async VarUpdate(GfxVarUpdate var);
|
2010-05-26 04:13:47 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async DataStoragePut(nsString aFilename, DataStorageItem aItem);
|
|
|
|
async DataStorageRemove(nsString aFilename, nsCString aKey, DataStorageType aType);
|
|
|
|
async DataStorageClear(nsString aFilename);
|
2015-10-30 22:30:00 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async NotifyAlertsObserver(nsCString topic, nsString data);
|
2010-09-15 20:44:57 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async GeolocationUpdate(GeoPosition somewhere);
|
2010-09-21 08:16:37 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async GeolocationError(uint16_t errorCode);
|
2014-10-23 22:31:00 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async UpdateDictionaryList(nsString[] dictionaries);
|
2014-10-03 18:52:37 +04:00
|
|
|
|
Bug 1348042 - Refactor LocaleService to operate in server-client mode. r=Ehsan,qdot
LocaleService serves two main functions. It is a central place for all code in the
engine to learn about locales, but it also does the language negotiation and selection.
The former is relevant in all processes, but the latter should only be performed
by the "main" process. In case of current Desktop Firefox, the parent process
is the one performing all the language negotiation, and content processes should
operate in the "client" mode.
In Fennec, there's a Java app on top of Gecko which should work as a "server"
and then all processes, including parent process of Gecko is merely a "client" for that.
This refactor finalizes this duality making it easily configurable to define in
which mode a given LocaleService operates.
The server-client model allows all clients to stay in sync with the server,
but operate transparently for all callers just returning the right values.
In order to initialize LocaleService in the client mode in child process with the
right locales I'm adding the list of app locales to the XPCOMInitData,
and then fire LocaleService::SetAppLocales in the child process initialization.
In order to keep the list up to date, I'm adding intl:app-locales-changed to
the list of observed topics, and when triggered, I send the updated list
to the child process, which updates LocaleService::SetAppLocales with the new
list.
MozReview-Commit-ID: K9X6berF3IO
--HG--
extra : rebase_source : ca5e502d064023fddfd63fe6fe5eccefce8dee52
2017-03-26 08:09:45 +03:00
|
|
|
async UpdateAppLocales(nsCString[] appLocales);
|
|
|
|
async UpdateRequestedLocales(nsCString[] requestedLocales);
|
|
|
|
|
2010-10-09 22:07:38 +04:00
|
|
|
// nsIPermissionManager messages
|
2016-01-27 00:51:53 +03:00
|
|
|
async AddPermission(Permission permission);
|
2010-10-09 22:07:38 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async FlushMemory(nsString reason);
|
2010-12-12 01:36:08 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async GarbageCollect();
|
|
|
|
async CycleCollect();
|
2014-10-03 18:52:37 +04:00
|
|
|
|
2011-07-21 08:37:32 +04:00
|
|
|
/**
|
|
|
|
* Start accessibility engine in content process.
|
2016-10-20 21:34:16 +03:00
|
|
|
* @param aMsaaID is an a11y-specific unique id for the content process
|
|
|
|
* that is generated by the chrome process. Only used on
|
|
|
|
* Windows; pass 0 on other platforms.
|
2011-07-21 08:37:32 +04:00
|
|
|
*/
|
2016-10-20 21:34:16 +03:00
|
|
|
async ActivateA11y(uint32_t aMsaaID);
|
2011-07-21 08:37:32 +04:00
|
|
|
|
2016-08-29 18:06:48 +03:00
|
|
|
/**
|
|
|
|
* Shutdown accessibility engine in content process (if not in use).
|
|
|
|
*/
|
|
|
|
async ShutdownA11y();
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async AppInfo(nsCString version, nsCString buildID, nsCString name, nsCString UAName,
|
|
|
|
nsCString ID, nsCString vendor);
|
2011-10-05 00:31:00 +04:00
|
|
|
|
2016-11-24 18:08:31 +03:00
|
|
|
/**
|
|
|
|
* Send the remote type associated with the content process.
|
|
|
|
*/
|
|
|
|
async RemoteType(nsString aRemoteType);
|
|
|
|
|
2016-07-13 11:34:24 +03:00
|
|
|
/**
|
|
|
|
* Send ServiceWorkerRegistrationData to child process.
|
|
|
|
*/
|
|
|
|
async InitServiceWorkers(ServiceWorkerConfiguration aConfig);
|
|
|
|
|
2016-07-17 17:50:50 +03:00
|
|
|
/**
|
|
|
|
* Send BlobURLRegistrationData to child process.
|
|
|
|
*/
|
|
|
|
async InitBlobURLs(BlobURLRegistrationData[] registrations);
|
|
|
|
|
2017-02-05 08:52:38 +03:00
|
|
|
async SetXPCOMProcessAttributes(XPCOMInitData xpcomInit, StructuredCloneData initialData, LookAndFeelInt[] lookAndFeelIntCache);
|
|
|
|
|
2012-04-20 04:13:20 +04:00
|
|
|
// Notify child that last-pb-context-exited notification was observed
|
2016-01-27 00:51:53 +03:00
|
|
|
async LastPrivateDocShellDestroyed();
|
2012-04-20 04:13:20 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async NotifyProcessPriorityChanged(ProcessPriority priority);
|
|
|
|
async MinimizeMemoryUsage();
|
2013-04-26 04:53:26 +04:00
|
|
|
|
2013-08-27 21:10:39 +04:00
|
|
|
/**
|
|
|
|
* Used to manage nsIStyleSheetService across processes.
|
|
|
|
*/
|
|
|
|
async LoadAndRegisterSheet(URIParams uri, uint32_t type);
|
|
|
|
async UnregisterSheet(URIParams uri, uint32_t type);
|
|
|
|
|
2013-12-13 20:28:46 +04:00
|
|
|
/**
|
|
|
|
* Notify idle observers in the child
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async NotifyIdleObserver(uint64_t observerId, nsCString topic, nsString str);
|
2014-08-29 04:20:27 +04:00
|
|
|
|
2014-12-30 02:13:54 +03:00
|
|
|
/**
|
|
|
|
* Called during plugin initialization to map a plugin id to a child process
|
|
|
|
* id.
|
|
|
|
*/
|
|
|
|
async AssociatePluginId(uint32_t aPluginId, ProcessId aProcessId);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This call is used by async plugin initialization to notify the
|
|
|
|
* PluginModuleContentParent that the PluginModuleChromeParent's async
|
|
|
|
* init has completed.
|
|
|
|
*/
|
|
|
|
async LoadPluginResult(uint32_t aPluginId, bool aResult);
|
|
|
|
|
2014-11-18 20:50:25 +03:00
|
|
|
/**
|
|
|
|
* Control the Gecko Profiler in the child process.
|
|
|
|
*/
|
2015-08-11 21:26:27 +03:00
|
|
|
async StartProfiler(ProfilerInitParams params);
|
2014-11-18 20:50:25 +03:00
|
|
|
async StopProfiler();
|
2015-07-15 19:39:39 +03:00
|
|
|
async PauseProfiler(bool aPause);
|
2015-06-11 00:58:30 +03:00
|
|
|
|
|
|
|
async GatherProfile();
|
2014-11-18 20:50:25 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async InvokeDragSession(IPCDataTransfer[] transfers, uint32_t action);
|
2015-04-08 21:48:11 +03:00
|
|
|
|
2016-05-19 00:17:34 +03:00
|
|
|
async EndDragSession(bool aDoneDrag, bool aUserCancelled,
|
2017-02-17 06:29:42 +03:00
|
|
|
LayoutDeviceIntPoint aDragEndPoint,
|
|
|
|
uint32_t aKeyModifiers);
|
2015-01-10 21:18:59 +03:00
|
|
|
|
2015-03-24 17:29:16 +03:00
|
|
|
async DomainSetChanged(uint32_t aSetType, uint32_t aChangeType, OptionalURIParams aDomain);
|
|
|
|
|
2015-01-10 21:18:59 +03:00
|
|
|
/**
|
|
|
|
* Notify the child to shutdown. The child will in turn call FinishShutdown
|
|
|
|
* and let the parent close the channel.
|
|
|
|
*/
|
|
|
|
async Shutdown();
|
|
|
|
|
2015-02-20 04:13:02 +03:00
|
|
|
async LoadProcessScript(nsString url);
|
|
|
|
|
2015-04-07 16:17:27 +03:00
|
|
|
/**
|
|
|
|
* Requests a full native update of a native plugin child window. This is
|
|
|
|
* a Windows specific call.
|
|
|
|
*/
|
|
|
|
async UpdateWindow(uintptr_t aChildId);
|
|
|
|
|
2015-03-26 06:16:21 +03:00
|
|
|
/**
|
|
|
|
* Notify the child that presentation receiver has been launched with the
|
|
|
|
* correspondent iframe.
|
|
|
|
*/
|
|
|
|
async NotifyPresentationReceiverLaunched(PBrowser aIframe, nsString aSessionId);
|
|
|
|
|
2015-08-31 08:24:35 +03:00
|
|
|
/**
|
|
|
|
* Notify the child that the info about a presentation receiver needs to be
|
|
|
|
* cleaned up.
|
|
|
|
*/
|
|
|
|
async NotifyPresentationReceiverCleanUp(nsString aSessionId);
|
|
|
|
|
2016-08-08 06:04:55 +03:00
|
|
|
/**
|
|
|
|
* Notify the child that cache is emptied.
|
|
|
|
*/
|
|
|
|
async NotifyEmptyHTTPCache();
|
|
|
|
|
2016-01-14 08:19:51 +03:00
|
|
|
/**
|
|
|
|
* Send a `push` event without data to a service worker in the child.
|
|
|
|
*/
|
2016-03-28 21:50:39 +03:00
|
|
|
async Push(nsCString scope, Principal principal, nsString messageId);
|
2016-01-14 08:19:51 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Send a `push` event with data to a service worker in the child.
|
|
|
|
*/
|
2016-03-28 21:50:39 +03:00
|
|
|
async PushWithData(nsCString scope, Principal principal,
|
|
|
|
nsString messageId, uint8_t[] data);
|
2016-01-14 08:19:51 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Send a `pushsubscriptionchange` event to a service worker in the child.
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async PushSubscriptionChange(nsCString scope, Principal principal);
|
2016-01-14 08:19:51 +03:00
|
|
|
|
2016-03-28 23:33:20 +03:00
|
|
|
/**
|
|
|
|
* Send a Push error message to all service worker clients in the child.
|
|
|
|
*/
|
2016-05-20 05:01:34 +03:00
|
|
|
async PushError(nsCString scope, Principal principal, nsString message,
|
|
|
|
uint32_t flags);
|
2016-03-28 23:33:20 +03:00
|
|
|
|
2016-03-13 16:25:23 +03:00
|
|
|
/**
|
|
|
|
* Windows specific: associate this content process with the browsers
|
|
|
|
* audio session.
|
|
|
|
*/
|
|
|
|
async SetAudioSessionData(nsID aID,
|
|
|
|
nsString aDisplayName,
|
|
|
|
nsString aIconPath);
|
2016-07-14 10:04:21 +03:00
|
|
|
|
|
|
|
async GetFilesResponse(nsID aID, GetFilesResponseResult aResult);
|
|
|
|
|
2017-04-24 13:16:49 +03:00
|
|
|
async BlobURLRegistration(nsCString aURI, IPCBlob aBlob,
|
2016-07-17 17:50:50 +03:00
|
|
|
Principal aPrincipal);
|
|
|
|
|
|
|
|
async BlobURLUnregistration(nsCString aURI);
|
|
|
|
|
2017-02-20 06:16:48 +03:00
|
|
|
async DispatchLocalStorageChange(nsString documentURI,
|
|
|
|
nsString key,
|
|
|
|
nsString oldValue,
|
|
|
|
nsString newValue,
|
|
|
|
Principal principal,
|
|
|
|
bool isPrivate);
|
2016-11-01 06:25:19 +03:00
|
|
|
|
|
|
|
async GMPsChanged(GMPCapabilityData[] capabilities);
|
|
|
|
|
2017-01-21 07:11:35 +03:00
|
|
|
|
2017-02-08 12:19:01 +03:00
|
|
|
async FileCreationResponse(nsID aID, FileCreationResult aResult);
|
|
|
|
|
2017-01-21 07:11:35 +03:00
|
|
|
/**
|
|
|
|
* Sending an activate message moves focus to the child.
|
|
|
|
*/
|
|
|
|
async Activate(PBrowser aTab);
|
|
|
|
|
|
|
|
async Deactivate(PBrowser aTab);
|
|
|
|
|
|
|
|
async ParentActivated(PBrowser aTab, bool aActivated);
|
|
|
|
|
2017-03-14 14:29:43 +03:00
|
|
|
async PParentToChildStream();
|
|
|
|
|
2017-03-14 02:06:04 +03:00
|
|
|
async ProvideAnonymousTemporaryFile(uint64_t aID, FileDescOrError aFD);
|
|
|
|
|
2017-03-03 00:53:33 +03:00
|
|
|
async SetPermissionsWithKey(nsCString aPermissionKey, Permission[] aPermissions);
|
|
|
|
|
2017-03-09 14:30:26 +03:00
|
|
|
async RefreshScreens(ScreenDetails[] aScreens);
|
|
|
|
|
Bug 1353629 - PBlob refactoring - part 4 - IPCBlobInputStream, r=smaug
IPCBlobInputStream is a new type of nsIInputStream that is used only in content
process when a Blob is sent from parent to child. This inputStream is for now,
just cloneable.
When the parent process sends a Blob to a content process, it has the Blob and
its inputStream. With its inputStream it creates a IPCBlobInputStreamParent
actor. This actor keeps the inputStream alive for following uses (not part of
this patch).
On the child side we will have, of course, a IPCBlobInputStreamChild actor.
This actor is able to create a IPCBlobInputStream when CreateStream() is
called. This means that 1 IPCBlobInputStreamChild can manage multiple
IPCBlobInputStreams each time one of them is cloned. When the last one of this
stream is released, the child actor sends a __delete__ request to the parent
side; the parent will be deleted, and the original inputStream, on the parent
side, will be released as well.
IPCBlobInputStream is a special inputStream because each method, except for
Available() fails. Basically, this inputStream cannot be used on the content
process for nothing else than knowing the size of the original stream.
In the following patches, I'll introduce an async way to use it.
2017-04-24 13:09:40 +03:00
|
|
|
async PIPCBlobInputStream(nsID aID, uint64_t aSize);
|
|
|
|
|
2009-08-18 23:05:15 +04:00
|
|
|
parent:
|
2017-01-24 22:49:13 +03:00
|
|
|
async InitBackground(Endpoint<PBackgroundParent> aEndpoint);
|
|
|
|
|
2014-06-11 09:44:13 +04:00
|
|
|
sync CreateChildProcess(IPCTabContext context,
|
2014-10-29 21:11:00 +03:00
|
|
|
ProcessPriority priority,
|
2017-04-05 13:42:00 +03:00
|
|
|
TabId openerTabId,
|
|
|
|
TabId tabId)
|
|
|
|
returns (ContentParentId cpId, bool isForBrowser);
|
2017-01-27 01:40:17 +03:00
|
|
|
sync BridgeToChildProcess(ContentParentId cpId)
|
|
|
|
returns (Endpoint<PContentBridgeParent> endpoint);
|
2014-06-11 09:44:13 +04:00
|
|
|
|
2015-02-10 13:49:03 +03:00
|
|
|
async CreateGMPService();
|
|
|
|
|
2014-10-29 18:05:36 +03:00
|
|
|
/**
|
2017-01-26 01:17:17 +03:00
|
|
|
* This call connects the content process to a plugin process. This call
|
|
|
|
* returns an endpoint for a new PluginModuleParent. The corresponding
|
|
|
|
* PluginModuleChild will be started up in the plugin process.
|
2014-10-29 18:05:36 +03:00
|
|
|
*/
|
2017-01-26 01:17:17 +03:00
|
|
|
sync LoadPlugin(uint32_t aPluginId)
|
|
|
|
returns (nsresult aResult, uint32_t aRunID, Endpoint<PPluginModuleParent> aEndpoint);
|
2014-10-29 18:05:36 +03:00
|
|
|
|
2015-01-17 00:03:27 +03:00
|
|
|
/**
|
|
|
|
* This call is used by asynchronous plugin instantiation to notify the
|
|
|
|
* content parent that it is now safe to initiate the plugin bridge for
|
2017-01-26 01:17:17 +03:00
|
|
|
* the specified plugin id. The endpoint for the content process part of the
|
|
|
|
* bridge is returned.
|
2015-01-17 00:03:27 +03:00
|
|
|
*/
|
2017-01-26 01:17:17 +03:00
|
|
|
sync ConnectPluginBridge(uint32_t aPluginId)
|
|
|
|
returns (nsresult rv, Endpoint<PPluginModuleParent> aEndpoint);
|
2015-01-17 00:03:27 +03:00
|
|
|
|
2015-05-01 18:07:19 +03:00
|
|
|
/**
|
|
|
|
* Return the current blocklist state for a particular plugin.
|
|
|
|
*/
|
|
|
|
sync GetBlocklistState(uint32_t aPluginId) returns (uint32_t aState);
|
|
|
|
|
2014-10-29 18:05:36 +03:00
|
|
|
/**
|
|
|
|
* This call returns the set of plugins loaded in the chrome
|
|
|
|
* process. However, in many cases this set will not have changed since the
|
|
|
|
* last FindPlugins message. Consequently, the chrome process increments an
|
|
|
|
* epoch number every time the set of plugins changes. The content process
|
|
|
|
* sends up the last epoch it observed. If the epochs are the same, the
|
|
|
|
* chrome process returns no plugins. Otherwise it returns a complete list.
|
|
|
|
*
|
|
|
|
* |pluginEpoch| is the epoch last observed by the content
|
|
|
|
* process. |newPluginEpoch| is the current epoch in the chrome process. If
|
|
|
|
* |pluginEpoch == newPluginEpoch|, then |plugins| will be left empty.
|
|
|
|
*/
|
2015-11-11 07:35:00 +03:00
|
|
|
sync FindPlugins(uint32_t pluginEpoch) returns (nsresult aResult, PluginTag[] plugins, uint32_t newPluginEpoch);
|
2014-10-29 18:05:36 +03:00
|
|
|
|
2014-05-09 02:43:53 +04:00
|
|
|
async PJavaScript();
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PRemoteSpellcheckEngine();
|
2012-06-20 03:14:39 +04:00
|
|
|
|
2017-03-29 11:40:38 +03:00
|
|
|
async PMemoryStream(uint64_t aSize);
|
|
|
|
|
2017-02-17 05:44:16 +03:00
|
|
|
async InitCrashReporter(Shmem shmem, NativeThreadId tid);
|
2011-06-08 23:56:31 +04:00
|
|
|
|
2016-04-15 19:29:12 +03:00
|
|
|
/**
|
|
|
|
* Is this token compatible with the provided version?
|
|
|
|
*
|
|
|
|
* |version| The offered version to test
|
|
|
|
* Returns |True| if the offered version is compatible
|
|
|
|
*/
|
|
|
|
sync NSSU2FTokenIsCompatibleVersion(nsString version)
|
|
|
|
returns (bool result);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return whether the provided KeyHandle belongs to this Token
|
|
|
|
*
|
|
|
|
* |keyHandle| Key Handle to evaluate.
|
2017-02-02 01:21:04 +03:00
|
|
|
* |application| The FIDO Application data that is associated with this key.
|
2016-04-15 19:29:12 +03:00
|
|
|
* Returns |True| if the Key Handle is ours.
|
|
|
|
*/
|
2017-02-02 01:21:04 +03:00
|
|
|
sync NSSU2FTokenIsRegistered(uint8_t[] keyHandle, uint8_t[] application)
|
2016-04-15 19:29:12 +03:00
|
|
|
returns (bool isValidKeyHandle);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generates a public/private keypair for the provided application
|
|
|
|
* and challenge, returning the pubkey, challenge response, and
|
|
|
|
* key handle in the registration data.
|
|
|
|
*
|
|
|
|
* |application| The FIDO Application data to associate with the key.
|
|
|
|
* |challenge| The Challenge to satisfy in the response.
|
|
|
|
* |registration| An array containing the pubkey, challenge response,
|
|
|
|
* and key handle.
|
|
|
|
*/
|
|
|
|
sync NSSU2FTokenRegister(uint8_t[] application, uint8_t[] challenge)
|
|
|
|
returns (uint8_t[] registration);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a signature over the "param" arguments using the private key
|
|
|
|
* provided in the key handle argument.
|
|
|
|
*
|
|
|
|
* |application| The FIDO Application data to associate with the key.
|
|
|
|
* |challenge| The Challenge to satisfy in the response.
|
|
|
|
* |keyHandle| The Key Handle opaque object to use.
|
|
|
|
* |signature| The resulting signature.
|
|
|
|
*/
|
|
|
|
sync NSSU2FTokenSign(uint8_t[] application, uint8_t[] challenge,
|
|
|
|
uint8_t[] keyHandle)
|
|
|
|
returns (uint8_t[] signature);
|
|
|
|
|
2017-02-14 05:29:24 +03:00
|
|
|
sync IsSecureURI(uint32_t aType, URIParams aURI, uint32_t aFlags,
|
|
|
|
OriginAttributes aOriginAttributes)
|
2014-07-22 16:17:45 +04:00
|
|
|
returns (bool isSecureURI);
|
|
|
|
|
2017-02-14 05:29:24 +03:00
|
|
|
async AccumulateMixedContentHSTS(URIParams aURI, bool aActive, bool aHasHSTSPriming,
|
|
|
|
OriginAttributes aOriginAttributes);
|
2015-09-09 22:14:27 +03:00
|
|
|
|
2016-10-01 02:20:50 +03:00
|
|
|
nested(inside_cpow) async PHal();
|
2011-10-06 02:15:45 +04:00
|
|
|
|
2015-09-22 22:09:42 +03:00
|
|
|
async PHeapSnapshotTempFileHelper();
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PNecko();
|
2011-11-21 02:40:53 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PPrinting();
|
2014-10-28 18:59:08 +03:00
|
|
|
|
2017-03-14 14:28:58 +03:00
|
|
|
async PChildToParentStream();
|
2016-05-15 20:32:09 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PSpeechSynthesis();
|
2013-04-10 16:18:38 +04:00
|
|
|
|
2016-10-01 02:20:50 +03:00
|
|
|
nested(inside_cpow) async PStorage();
|
2011-10-06 02:15:45 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PMedia();
|
2015-06-18 18:46:36 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PWebrtcGlobal();
|
2015-09-09 22:14:27 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PPresentation();
|
2015-04-22 01:29:18 +03:00
|
|
|
|
2016-06-07 12:46:03 +03:00
|
|
|
async PFlyWebPublishedServer(nsString name, FlyWebPublishOptions params);
|
|
|
|
|
2016-11-19 00:54:57 +03:00
|
|
|
sync PURLClassifier(Principal principal, bool useTrackingProtection)
|
|
|
|
returns (bool success);
|
2016-11-19 00:43:28 +03:00
|
|
|
sync ClassifyLocal(URIParams uri, nsCString tables)
|
2016-11-30 21:57:48 +03:00
|
|
|
returns (nsresult rv, nsCString[] results);
|
2017-04-07 09:15:16 +03:00
|
|
|
// The async version of ClassifyLocal.
|
|
|
|
async PURLClassifierLocal(URIParams uri, nsCString tables);
|
2016-11-19 00:54:57 +03:00
|
|
|
|
2010-07-15 18:04:25 +04:00
|
|
|
// Services remoting
|
|
|
|
|
2012-08-23 23:33:46 +04:00
|
|
|
async StartVisitedQuery(URIParams uri);
|
|
|
|
async VisitURI(URIParams uri, OptionalURIParams referrer, uint32_t flags);
|
|
|
|
async SetURITitle(URIParams uri, nsString title);
|
2010-07-02 19:50:41 +04:00
|
|
|
|
2015-12-04 02:04:28 +03:00
|
|
|
async LoadURIExternal(URIParams uri, PBrowser windowContext);
|
2016-07-01 06:16:00 +03:00
|
|
|
async ExtProtocolChannelConnectParent(uint32_t registrarId);
|
2010-08-10 21:14:45 +04:00
|
|
|
|
2010-10-20 00:35:08 +04:00
|
|
|
// PrefService message
|
2016-08-04 21:33:42 +03:00
|
|
|
sync GetGfxVars() returns (GfxVarUpdate[] vars);
|
2010-07-15 18:04:25 +04:00
|
|
|
|
2011-01-13 07:04:42 +03:00
|
|
|
sync ReadFontList() returns (FontListEntry[] retValue);
|
|
|
|
|
2013-11-06 21:21:15 +04:00
|
|
|
sync SyncMessage(nsString aMessage, ClonedMessageData aData,
|
|
|
|
CpowEntry[] aCpows, Principal aPrincipal)
|
2015-09-10 23:50:58 +03:00
|
|
|
returns (StructuredCloneData[] retval);
|
2010-08-31 22:58:35 +04:00
|
|
|
|
2016-10-01 02:20:50 +03:00
|
|
|
nested(inside_sync) sync RpcMessage(nsString aMessage, ClonedMessageData aData,
|
|
|
|
CpowEntry[] aCpows, Principal aPrincipal)
|
2015-09-10 23:50:58 +03:00
|
|
|
returns (StructuredCloneData[] retval);
|
2013-10-01 20:15:06 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async ShowAlert(AlertNotificationType alert);
|
2013-03-18 17:24:53 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async CloseAlert(nsString name, Principal principal);
|
2010-09-15 20:44:57 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async DisableNotifications(Principal principal);
|
2015-10-23 00:10:14 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async OpenNotificationSettings(Principal principal);
|
2015-10-23 00:20:51 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PPSMContentDownloader(uint32_t aCertType);
|
2015-04-22 22:55:23 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PExternalHelperApp(OptionalURIParams uri,
|
|
|
|
nsCString aMimeContentType,
|
|
|
|
nsCString aContentDisposition,
|
|
|
|
uint32_t aContentDispositionHint,
|
|
|
|
nsString aContentDispositionFilename,
|
|
|
|
bool aForceSave,
|
|
|
|
int64_t aContentLength,
|
2017-01-11 04:49:16 +03:00
|
|
|
bool aWasFileChannel,
|
2016-01-27 00:51:53 +03:00
|
|
|
OptionalURIParams aReferrer,
|
|
|
|
nullable PBrowser aBrowser);
|
2012-08-23 23:33:46 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async PHandlerService();
|
2015-08-26 02:42:21 +03:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async AddGeolocationListener(Principal principal, bool highAccuracy);
|
|
|
|
async RemoveGeolocationListener();
|
|
|
|
async SetGeolocationHigherAccuracy(bool enable);
|
2010-09-16 02:55:08 +04:00
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async ConsoleMessage(nsString message);
|
|
|
|
async ScriptError(nsString message, nsString sourceName, nsString sourceLine,
|
|
|
|
uint32_t lineNumber, uint32_t colNumber, uint32_t flags,
|
|
|
|
nsCString category);
|
2010-09-24 05:39:32 +04:00
|
|
|
|
2015-04-16 22:38:12 +03:00
|
|
|
// Places the items within dataTransfer on the clipboard.
|
2016-01-27 00:51:53 +03:00
|
|
|
async SetClipboard(IPCDataTransfer aDataTransfer,
|
|
|
|
bool aIsPrivateData,
|
2016-06-30 10:12:56 +03:00
|
|
|
Principal aRequestingPrincipal,
|
2016-01-27 00:51:53 +03:00
|
|
|
int32_t aWhichClipboard);
|
2015-04-16 22:38:12 +03:00
|
|
|
|
|
|
|
// Given a list of supported types, returns the clipboard data for the
|
|
|
|
// first type that matches.
|
|
|
|
sync GetClipboard(nsCString[] aTypes, int32_t aWhichClipboard)
|
|
|
|
returns (IPCDataTransfer dataTransfer);
|
|
|
|
|
|
|
|
// Clears the clipboard.
|
2016-01-27 00:51:53 +03:00
|
|
|
async EmptyClipboard(int32_t aWhichClipboard);
|
2015-04-16 22:38:12 +03:00
|
|
|
|
|
|
|
// Returns true if data of one of the specified types is on the clipboard.
|
|
|
|
sync ClipboardHasType(nsCString[] aTypes, int32_t aWhichClipboard)
|
|
|
|
returns (bool hasType);
|
2011-03-01 08:36:43 +03:00
|
|
|
|
2012-08-22 19:56:38 +04:00
|
|
|
sync GetSystemColors(uint32_t colorsCount)
|
|
|
|
returns (uint32_t[] colors);
|
2011-03-30 22:04:41 +04:00
|
|
|
|
2012-08-22 19:56:38 +04:00
|
|
|
sync GetIconForExtension(nsCString aFileExt, uint32_t aIconSize)
|
|
|
|
returns (uint8_t[] bits);
|
2011-06-14 01:02:13 +04:00
|
|
|
|
2011-07-27 05:14:52 +04:00
|
|
|
sync GetShowPasswordSetting()
|
2011-09-29 10:19:26 +04:00
|
|
|
returns (bool showPassword);
|
2011-07-27 05:14:52 +04:00
|
|
|
|
2012-04-20 04:13:20 +04:00
|
|
|
// Notify the parent of the presence or absence of private docshells
|
2016-01-27 00:51:53 +03:00
|
|
|
async PrivateDocShellsExist(bool aExist);
|
2012-04-20 04:13:20 +04:00
|
|
|
|
2017-02-01 15:34:24 +03:00
|
|
|
// Tell the parent that the child has gone idle for the first time.
|
|
|
|
async FirstIdle();
|
|
|
|
|
2015-07-10 19:38:46 +03:00
|
|
|
async AudioChannelServiceStatus(bool aActiveTelephonyChannel,
|
|
|
|
bool aContentOrNormalChannel,
|
|
|
|
bool aAnyActiveChannel);
|
|
|
|
|
2014-04-10 21:39:20 +04:00
|
|
|
async AudioChannelChangeDefVolChannel(int32_t aChannel, bool aHidden);
|
2012-12-06 07:01:58 +04:00
|
|
|
|
2013-08-16 21:59:31 +04:00
|
|
|
sync KeywordToURI(nsCString keyword)
|
2017-03-09 16:10:49 +03:00
|
|
|
returns (nsString providerName, OptionalIPCStream postData, OptionalURIParams uri);
|
2014-09-11 17:50:55 +04:00
|
|
|
|
|
|
|
sync NotifyKeywordSearchLoading(nsString providerName, nsString keyword);
|
2013-08-16 21:59:31 +04:00
|
|
|
|
2015-11-25 00:31:57 +03:00
|
|
|
async CopyFavicon(URIParams oldURI, URIParams newURI, Principal aLoadingPrincipal, bool isPrivate);
|
2015-04-29 11:57:24 +03:00
|
|
|
|
2014-06-11 09:44:39 +04:00
|
|
|
// Tell the compositor to allocate a layer tree id for nested remote mozbrowsers.
|
2016-01-08 22:17:39 +03:00
|
|
|
sync AllocateLayerTreeId(ContentParentId cpId, TabId tabId)
|
2014-06-11 09:44:39 +04:00
|
|
|
returns (uint64_t id);
|
|
|
|
async DeallocateLayerTreeId(uint64_t id);
|
|
|
|
|
2013-11-24 13:06:27 +04:00
|
|
|
/**
|
|
|
|
* Notifies the parent about a recording device is starting or shutdown.
|
|
|
|
* @param recordingStatus starting or shutdown
|
|
|
|
* @param pageURL URL that request that changing the recording status
|
|
|
|
* @param isAudio recording start with microphone
|
|
|
|
* @param isVideo recording start with camera
|
|
|
|
*/
|
|
|
|
async RecordingDeviceEvents(nsString recordingStatus,
|
|
|
|
nsString pageURL,
|
|
|
|
bool isAudio,
|
|
|
|
bool isVideo);
|
|
|
|
|
2016-02-17 02:07:37 +03:00
|
|
|
// Graphics errors
|
|
|
|
async GraphicsError(nsCString aError);
|
|
|
|
|
2015-08-12 06:22:20 +03:00
|
|
|
// Driver crash guards. aGuardType must be a member of CrashGuardType.
|
|
|
|
sync BeginDriverCrashGuard(uint32_t aGuardType) returns (bool crashDetected);
|
|
|
|
sync EndDriverCrashGuard(uint32_t aGuardType);
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async AddIdleObserver(uint64_t observerId, uint32_t idleTimeInS);
|
|
|
|
async RemoveIdleObserver(uint64_t observerId, uint32_t idleTimeInS);
|
2014-02-05 20:37:26 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This message is only used on X11 platforms.
|
|
|
|
*
|
|
|
|
* Send a dup of the plugin process's X socket to the parent
|
|
|
|
* process. In theory, this scheme keeps the plugin's X resources
|
|
|
|
* around until after both the plugin process shuts down *and* the
|
|
|
|
* parent process closes the dup fd. This is used to prevent the
|
|
|
|
* parent process from crashing on X errors if, e.g., the plugin
|
|
|
|
* crashes *just before* a repaint and the parent process tries to
|
|
|
|
* use the newly-invalid surface.
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async BackUpXResources(FileDescriptor aXSocketFd);
|
2014-02-05 20:37:26 +04:00
|
|
|
|
2017-03-14 02:06:04 +03:00
|
|
|
async RequestAnonymousTemporaryFile(uint64_t aID);
|
|
|
|
|
2014-11-27 01:28:28 +03:00
|
|
|
/**
|
|
|
|
* Keygen requires us to call it after a <keygen> element is parsed and
|
|
|
|
* before one is submitted. This is urgent because an extension might use
|
|
|
|
* a CPOW to synchronously submit a keygen element.
|
|
|
|
*/
|
2016-10-01 02:20:50 +03:00
|
|
|
nested(inside_cpow) sync KeygenProcessValue(nsString oldValue,
|
|
|
|
nsString challenge,
|
|
|
|
nsString keytype,
|
|
|
|
nsString keyparams)
|
2014-11-27 01:28:28 +03:00
|
|
|
returns (nsString newValue);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called to provide the options for <keygen> elements.
|
|
|
|
*/
|
2014-12-19 20:07:04 +03:00
|
|
|
sync KeygenProvideContent()
|
|
|
|
returns (nsString aAttribute, nsString[] aContent);
|
2014-11-27 01:28:28 +03:00
|
|
|
|
2017-04-05 13:42:00 +03:00
|
|
|
/** Clear RemoteFrameInfo of the given tab id. */
|
|
|
|
async UnregisterRemoteFrame(TabId tabId,
|
|
|
|
ContentParentId cpId,
|
|
|
|
bool aMarkedDestroying);
|
2014-10-29 21:11:00 +03:00
|
|
|
|
2015-08-28 10:18:00 +03:00
|
|
|
/**
|
|
|
|
* Tell the chrome process there is a destruction of PBrowser(Tab)
|
|
|
|
*/
|
|
|
|
async NotifyTabDestroying(TabId tabId,
|
|
|
|
ContentParentId cpId);
|
2017-03-01 01:22:02 +03:00
|
|
|
|
|
|
|
async TabChildNotReady(TabId tabId);
|
|
|
|
|
2014-11-13 03:31:00 +03:00
|
|
|
/**
|
|
|
|
* Starts an offline application cache update.
|
|
|
|
* @param manifestURI
|
|
|
|
* URI of the manifest to fetch, the application cache group ID
|
|
|
|
* @param documentURI
|
|
|
|
* URI of the document that referred the manifest
|
2015-10-02 19:13:52 +03:00
|
|
|
* @param loadingPrincipal
|
|
|
|
* Principal of the document that referred the manifest
|
2014-11-13 03:31:00 +03:00
|
|
|
* @param stickDocument
|
|
|
|
* True if the update was initiated by a document load that referred
|
|
|
|
* a manifest.
|
|
|
|
* False if the update was initiated by applicationCache.update() call.
|
|
|
|
*
|
|
|
|
* Tells the update to carry the documentURI to a potential separate
|
|
|
|
* update of implicit (master) items.
|
|
|
|
*
|
|
|
|
* Why this argument? If the document was not found in an offline cache
|
|
|
|
* before load and refers a manifest and this manifest itself has not
|
|
|
|
* been changed since the last fetch, we will not do the application
|
|
|
|
* cache group update. But we must cache the document (identified by the
|
|
|
|
* documentURI). This argument will ensure that a previously uncached
|
|
|
|
* document will get cached and that we don't re-cache a document that
|
|
|
|
* has already been cached (stickDocument=false).
|
|
|
|
* @param tabId
|
|
|
|
* To identify which tab owns the app.
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async POfflineCacheUpdate(URIParams manifestURI, URIParams documentURI,
|
|
|
|
PrincipalInfo loadingPrincipal, bool stickDocument);
|
2014-11-13 03:31:00 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets "offline-app" permission for the principal. Called when we hit
|
|
|
|
* a web app with the manifest attribute in <html> and
|
|
|
|
* offline-apps.allow_by_default is set to true.
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async SetOfflinePermission(Principal principal);
|
2014-11-13 03:31:00 +03:00
|
|
|
|
2015-01-10 21:18:59 +03:00
|
|
|
/**
|
|
|
|
* Notifies the parent to continue shutting down after the child performs
|
|
|
|
* its shutdown tasks.
|
|
|
|
*/
|
|
|
|
async FinishShutdown();
|
|
|
|
|
2016-01-27 00:51:53 +03:00
|
|
|
async UpdateDropEffect(uint32_t aDragAction, uint32_t aDropEffect);
|
2015-04-14 04:08:00 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Initiates an asynchronous request for permission for the
|
|
|
|
* provided principal.
|
|
|
|
*
|
|
|
|
* @param aRequests
|
|
|
|
* The array of permissions to request.
|
|
|
|
* @param aPrincipal
|
|
|
|
* The principal of the request.
|
|
|
|
* @param tabId
|
|
|
|
* To identify which tab issues this request.
|
|
|
|
*
|
|
|
|
* NOTE: The principal is untrusted in the parent process. Only
|
|
|
|
* principals that can live in the content process should
|
|
|
|
* provided.
|
|
|
|
*/
|
2016-01-27 00:51:53 +03:00
|
|
|
async PContentPermissionRequest(PermissionRequest[] aRequests, Principal aPrincipal,
|
|
|
|
TabId tabId);
|
2015-04-14 04:08:00 +03:00
|
|
|
|
2017-04-12 23:44:31 +03:00
|
|
|
async Profile(nsCString aProfile, bool aIsExitProfile);
|
2015-06-11 00:58:30 +03:00
|
|
|
|
2015-08-02 23:59:33 +03:00
|
|
|
/**
|
|
|
|
* Request graphics initialization information from the parent.
|
|
|
|
*/
|
|
|
|
sync GetGraphicsDeviceInitData()
|
2016-08-21 06:59:11 +03:00
|
|
|
returns (ContentDeviceData aData);
|
2015-08-02 23:59:33 +03:00
|
|
|
|
2015-10-30 02:30:57 +03:00
|
|
|
sync CreateWindow(nullable PBrowser aThisTab,
|
2015-10-30 02:30:57 +03:00
|
|
|
PBrowser aNewTab,
|
2016-03-29 21:32:41 +03:00
|
|
|
PRenderFrame aRenderFrame,
|
2015-10-30 02:30:57 +03:00
|
|
|
uint32_t aChromeFlags,
|
|
|
|
bool aCalledFromJS,
|
|
|
|
bool aPositionSpecified,
|
|
|
|
bool aSizeSpecified,
|
|
|
|
nsCString aFeatures,
|
2016-02-18 11:33:07 +03:00
|
|
|
nsCString aBaseURI,
|
2017-01-12 19:38:48 +03:00
|
|
|
OriginAttributes aOpenerOriginAttributes,
|
2016-03-21 20:55:55 +03:00
|
|
|
float aFullZoom)
|
2015-10-30 02:30:57 +03:00
|
|
|
returns (nsresult rv,
|
|
|
|
bool windowOpened,
|
|
|
|
FrameScriptInfo[] frameScripts,
|
2016-03-29 21:32:41 +03:00
|
|
|
nsCString urlToLoad,
|
|
|
|
TextureFactoryIdentifier textureFactoryIdentifier,
|
2017-04-10 00:30:27 +03:00
|
|
|
uint64_t layersId,
|
|
|
|
CompositorOptions compositorOptions);
|
2015-10-30 02:30:57 +03:00
|
|
|
|
2016-11-24 18:08:31 +03:00
|
|
|
async CreateWindowInDifferentProcess(
|
|
|
|
PBrowser aThisTab,
|
|
|
|
uint32_t aChromeFlags,
|
|
|
|
bool aCalledFromJS,
|
|
|
|
bool aPositionSpecified,
|
|
|
|
bool aSizeSpecified,
|
|
|
|
URIParams aURIToLoad,
|
|
|
|
nsCString aFeatures,
|
|
|
|
nsCString aBaseURI,
|
2017-01-12 19:38:48 +03:00
|
|
|
OriginAttributes aOpenerOriginAttributes,
|
2016-11-24 18:08:31 +03:00
|
|
|
float aFullZoom);
|
|
|
|
|
2015-11-04 22:08:14 +03:00
|
|
|
sync GetAndroidSystemInfo()
|
|
|
|
returns (AndroidSystemInfo info);
|
|
|
|
|
2015-11-05 00:46:10 +03:00
|
|
|
/**
|
|
|
|
* Tells the parent to ungrab the pointer on the default display.
|
|
|
|
*
|
|
|
|
* This is for GTK platforms where we have to ensure the pointer ungrab happens in the
|
|
|
|
* chrome process as that's the process that receives the pointer event.
|
|
|
|
*/
|
|
|
|
sync UngrabPointer(uint32_t time);
|
2016-03-03 00:09:48 +03:00
|
|
|
|
|
|
|
sync RemovePermission(Principal principal, nsCString permissionType) returns (nsresult rv);
|
2016-03-17 09:18:35 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tell the parent that a decoder's' benchmark has been completed.
|
|
|
|
* The result can then be stored in permanent storage.
|
|
|
|
*/
|
|
|
|
async NotifyBenchmarkResult(nsString aCodecName, uint32_t aDecodeFPS);
|
|
|
|
|
2016-04-21 21:11:03 +03:00
|
|
|
/**
|
|
|
|
* Notify `push-message` observers without data in the parent.
|
|
|
|
*/
|
2016-05-02 19:38:47 +03:00
|
|
|
async NotifyPushObservers(nsCString scope, Principal principal,
|
|
|
|
nsString messageId);
|
2016-04-21 21:11:03 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify `push-message` observers with data in the parent.
|
|
|
|
*/
|
2016-05-02 19:38:47 +03:00
|
|
|
async NotifyPushObserversWithData(nsCString scope, Principal principal,
|
|
|
|
nsString messageId, uint8_t[] data);
|
2016-04-21 21:11:03 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify `push-subscription-change` observers in the parent.
|
|
|
|
*/
|
2016-05-02 19:38:47 +03:00
|
|
|
async NotifyPushSubscriptionChangeObservers(nsCString scope,
|
|
|
|
Principal principal);
|
2016-04-21 21:11:03 +03:00
|
|
|
|
2016-06-21 21:45:25 +03:00
|
|
|
/**
|
|
|
|
* Tell the parent process that the child process is low on memory. This
|
|
|
|
* allows the parent process to save a memory report that can potentially be
|
|
|
|
* sent with a crash report from the content process.
|
|
|
|
*/
|
|
|
|
async NotifyLowMemory();
|
|
|
|
|
2016-07-14 10:04:21 +03:00
|
|
|
async GetFilesRequest(nsID aID, nsString aDirectory, bool aRecursiveFlag);
|
|
|
|
async DeleteGetFilesRequest(nsID aID);
|
|
|
|
|
2017-02-08 12:19:01 +03:00
|
|
|
async FileCreationRequest(nsID aID, nsString aFullPath, nsString aType,
|
|
|
|
nsString aName, bool lastModifiedPassed,
|
2017-03-03 11:42:54 +03:00
|
|
|
int64_t lastModified, bool aExistenceCheck,
|
|
|
|
bool aIsFromNsIFile);
|
2017-02-08 12:19:01 +03:00
|
|
|
|
2017-04-24 13:16:49 +03:00
|
|
|
async StoreAndBroadcastBlobURLRegistration(nsCString url, IPCBlob blob,
|
2016-07-17 17:50:50 +03:00
|
|
|
Principal principal);
|
|
|
|
|
|
|
|
async UnstoreAndBroadcastBlobURLUnregistration(nsCString url);
|
|
|
|
|
2017-02-20 06:16:48 +03:00
|
|
|
async BroadcastLocalStorageChange(nsString documentURI,
|
|
|
|
nsString key,
|
|
|
|
nsString oldValue,
|
|
|
|
nsString newValue,
|
|
|
|
Principal principal,
|
|
|
|
bool isPrivate);
|
|
|
|
|
2016-06-22 17:16:40 +03:00
|
|
|
/**
|
|
|
|
* Messages for communicating child Telemetry to the parent process
|
|
|
|
*/
|
2017-02-15 18:25:40 +03:00
|
|
|
async AccumulateChildHistograms(Accumulation[] accumulations);
|
|
|
|
async AccumulateChildKeyedHistograms(KeyedAccumulation[] accumulations);
|
2017-01-16 07:12:00 +03:00
|
|
|
async UpdateChildScalars(ScalarAction[] updates);
|
|
|
|
async UpdateChildKeyedScalars(KeyedScalarAction[] updates);
|
2017-02-14 16:43:51 +03:00
|
|
|
async RecordChildEvents(ChildEventData[] events);
|
2016-06-22 17:16:40 +03:00
|
|
|
|
2016-10-27 21:40:50 +03:00
|
|
|
sync GetA11yContentId() returns (uint32_t aContentId);
|
Bug 1303060: Changes to a11y to enable the serving of a COM handler; r=tbsaunde
MozReview-Commit-ID: GTQF3x1pBtX
A general outline of the COM handler (a.k.a. the "smart proxy"):
COM handlers are pieces of code that are loaded by the COM runtime along with
a proxy and are layered above that proxy. This enables the COM handler to
interpose itself between the caller and the proxy, thus providing the
opportunity for the handler to manipulate an interface's method calls before
those calls reach the proxy.
Handlers are regular COM components that live in DLLs and are declared in the
Windows registry. In order to allow for the specifying of a handler (and an
optional payload to be sent with the proxy), the mscom library allows its
clients to specify an implementation of the IHandlerProvider interface.
IHandlerProvider consists of 5 functions:
* GetHandler returns the CLSID of the component that should be loaded into
the COM client's process. If GetHandler returns a failure code, then no
handler is loaded.
* GetHandlerPayloadSize and WriteHandlerPayload are for obtaining the payload
data. These calls are made on a background thread but need to do their work
on the main thread. We declare the payload struct in IDL. MIDL generates two
functions, IA2Payload_Encode and IA2Payload_Decode, which are used by
mscom::StructToStream to read and write that struct to and from buffers.
* The a11y payload struct also includes an interface, IGeckoBackChannel, that
allows the handler to communicate directly with Gecko. IGeckoBackChannel
currently provides two methods: one to allow the handler to request fresh
cache information, and the other to provide Gecko with its IHandlerControl
interface.
* MarshalAs accepts an IID that specifies the interface that is about to be
proxied. We may want to send a more sophisticated proxy than the one that
is requested. The desired IID is returned by this function. In the case of
a11y interfaces, we should always return IAccessible2_3 if we are asked for
one of its parent interfaces. This allows us to eliminate round trips to
resolve more sophisticated interfaces later on.
* NewInstance, which is needed to ensure that all descendent proxies are also
imbued with the same handler code.
The main focus of this patch is as follows:
1. Provide an implementation of the IHandlerProvider interface;
2. Populate the handler payload (ie, the cache) with data;
3. Modify CreateHolderFromAccessible to specify the HandlerPayload object;
4. Receive the IHandlerControl interface from the handler DLL and move it
into the chrome process.
Some more information about IHandlerControl:
There is one IHandlerControl per handler DLL instance. It is the interface that
we call in Gecko when we need to dispatch an event to the handler. In order to
ensure that events are dispatched in the correct order, we need to dispatch
those events from the chrome main thread so that they occur in sequential order
with calls to NotifyWinEvent.
--HG--
extra : rebase_source : acb44dead7cc5488424720e1bf58862b7b30374f
2017-04-05 00:23:55 +03:00
|
|
|
async A11yHandlerControl(uint32_t aPid,
|
|
|
|
IHandlerControlHolder aHandlerControl);
|
2016-10-27 21:40:50 +03:00
|
|
|
|
2017-01-27 03:35:54 +03:00
|
|
|
async AddMemoryReport(MemoryReport aReport);
|
|
|
|
async FinishMemoryReport(uint32_t aGeneration);
|
|
|
|
|
2017-04-27 05:18:06 +03:00
|
|
|
async AllocPipelineId() returns (PipelineId pipelineId);
|
|
|
|
|
2016-05-15 02:54:51 +03:00
|
|
|
both:
|
|
|
|
async AsyncMessage(nsString aMessage, CpowEntry[] aCpows,
|
|
|
|
Principal aPrincipal, ClonedMessageData aData);
|
|
|
|
|
2016-04-21 22:04:15 +03:00
|
|
|
/**
|
2016-05-15 02:54:51 +03:00
|
|
|
* Notify `push-subscription-modified` observers in the parent and child.
|
2016-04-21 22:04:15 +03:00
|
|
|
*/
|
2016-05-02 18:20:14 +03:00
|
|
|
async NotifyPushSubscriptionModifiedObservers(nsCString scope,
|
|
|
|
Principal principal);
|
2009-07-11 10:33:10 +04:00
|
|
|
};
|
|
|
|
|
2009-09-10 02:00:14 +04:00
|
|
|
}
|
2012-08-29 16:24:48 +04:00
|
|
|
}
|