Commit Graph

1655 Commits

Author SHA1 Message Date
Sebastian Hengst
203795675b Backed out changeset 2577afd226ff (bug 1358113) 2017-04-24 15:43:00 +02:00
Andrea Marchesini
2ac27118f9 Bug 1358113 - Use IPCBlob in File.createFromNsIFile/createFromFileName, r=smaug 2017-04-24 12:16:50 +02:00
Andrea Marchesini
da5c3e054f Bug 1358114 - Use IPCBlob in BlobURL, r=smaug 2017-04-24 12:16:49 +02:00
Andrea Marchesini
b87a2a73d2 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 12:09:40 +02:00
Michael Layzell
0a199fa342 Bug 1355608 - Part 2: Eagerly transmit permissions to the content process for service worker registrations, r=catalinb
This requires running code which checks whether or not the permissions have
arrived, potentially delaying a fetch request for a very short period of time if
the permissions are still in-flight.

MozReview-Commit-ID: E6OTY6IDThb
2017-04-27 13:41:15 -04:00
Wes Kocher
f8d2845e66 Merge inbound to m-c a=merge
MozReview-Commit-ID: DQDuEiYLWCO
2017-04-20 15:30:43 -07:00
Sebastian Hengst
bd3f706f8c Backed out changeset 2b53bdd61d64 (bug 1353629) 2017-04-20 18:37:09 +02:00
Andrea Marchesini
4c695eb67b 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-20 15:20:38 +02:00
Ehsan Akhgari
8329a6cea1 Bug 1356913 - Remove support for the mozapptype attribute; r=billm
This is dead functionality now that mozapp support has been removed.
2017-04-20 01:09:28 -04:00
Valentin Gosu
b8463f9e7c Bug 1354349 - Use channel.isDocument in ContentParent::TransmitPermissionsFor r=mystor
MozReview-Commit-ID: L9b6UeXJ8o5
2017-04-20 10:15:16 +08:00
Blake Kaplan
8c9d8ec6fa Bug 1349363 - Centralize pref-checking code for e10s-multi control. r=Felipe
This patch centralizes all of the pref-checking code for e10s-multi in a
single function. It is intended to be used throughout the codebase to see if
e10s-multi is "on". It also introduces dom.ipc.multiOptOut, which can be set
by the user to indicate that they do not want to participate in the e10s-multi
experiment.

MozReview-Commit-ID: Kyq1fqNzwue
2017-04-17 14:36:04 -07:00
Carsten "Tomcat" Book
81b505ad3a Backed out changeset a28aa86d1ffe (bug 1354349) 2017-04-18 08:51:03 +02:00
Valentin Gosu
ef0dc53564 Bug 1354349 - Use channel.isDocument in ContentParent::TransmitPermissionsFor r=mystor
MozReview-Commit-ID: L9b6UeXJ8o5
2017-04-18 14:17:58 +08:00
Kartikaya Gupta
a1df68e319 Merge m-c to graphics
MozReview-Commit-ID: 7iqIrSl2VpU
2017-04-15 17:05:27 -04:00
sotaro
111d213410 Bug 1356190 - Fix GetNextExternalImageId() r=jrmuizel 2017-04-14 17:06:09 +09:00
Markus Stange
85eb6f4cac Bug 1321617 - Tell the CrossProcessProfilerController whether a profile is a response to a GatherProfile request or whether it was sent because the process was exiting. r=mconley
MozReview-Commit-ID: BLkaeZqtRhv
2017-04-12 16:44:31 -04:00
Phil Ringnalda
a7b8be002a Backed out changeset e8efc3c5d61f (bug 1337062) for crashes in mozilla::gfx::gfxVars::ApplyUpdate(mozilla::gfx::GfxVarUpdate
CLOSED TREE
2017-04-11 18:49:21 -07:00
Gerald Squelart
0f32970999 Bug 1337062 - Transfer initial gfxVars with SendSetXPCOMProcessAttributes - r=dvander
MozReview-Commit-ID: EUnwXkDwBTZ
2017-04-11 15:36:56 +12:00
Gerald Squelart
4721e073a4 Bug 1337063 - Transfer child's initial ContentDeviceData with SendSetXPCOMProcessAttributes - r=dvander
MozReview-Commit-ID: IWCgL9aCusW
2017-04-12 09:37:35 +12:00
Ehsan Akhgari
4cacf9ca9d Bug 1347461 - Part 2: Always initialize all DataStorage classes in the content process at initialization time; r=keeler 2017-04-10 22:44:36 -04:00
Ehsan Akhgari
ca86a94c9f Bug 1347461 - Part 1: Add a C++ API for the list of DataStorage classes; r=keeler 2017-04-10 22:44:32 -04:00
Kartikaya Gupta
1bcda612ce Bug 1350638 - Remove sync GetCompositorOptions call in TabChild::InitRenderingState. r=dvander
The goal of this patch is to remove the call to the sync IPC
GetCompositorOptions message from TabChild::InitRenderingState. In order
to this, we have InitRenderingState take the CompositorOptions as an
argument instead, and propagate that backwards through the call sites.
Eventually we can propagate it back to a set of already-sync IPC
messages in PCompositorBridge that are used during layers id
registration (NotifyChildCreated, NotifyChildRecreated, etc.). Therefore
this patch effectively piggybacks the CompositorOptions sync IPC onto
these pre-existing sync IPC messages.

The one exception is when we propagate it back to the AdoptChild call.
If this message were sync we could just use it like the others and have
it return a CompositorOptions. However, it is async, so instead we add
another call to GetCompositorOptions here temporarily. This will be
removed in the next patch.

MozReview-Commit-ID: AtdYOuXmHu4
2017-04-09 17:30:27 -04:00
Henry Chang
7141f6bb42 Bug 1343425 - Supports nsIURIClassifier.asyncClassifyLocalWithTables. r=baku
We add a new "on-off" protocol PURLClassifierLocal which calls
nsIURIClassifier.asyncClassifyLocalWithTables on construction and
calls back on destruction. Pretty much the same design as PURLClassifier.

In order to avoid code duplication, the actor implementation is templatized
and |MaybeInfo| in PURLClassifier.ipdl is moved around.

Test case is included and the custom event target is not in place for labelling.
The custom event target will be done in Bug 1353701.

MozReview-Commit-ID: IdHYgdnBV7S
2017-04-07 14:15:16 +08:00
Phil Ringnalda
db75670f90 Backed out changeset 4f7947062b4f (bug 1337062) for assertion failures in gfxVars.cpp 2017-04-06 20:11:19 -07:00
Gerald Squelart
ca72719491 Bug 1337062 - Transfer initial gfxVars over command line - r=blassey
When a subprocess is launched, gfxVars updates (for non-default values) are
serialized and passed on the command line, up to a limit of 1023 characters,
and ensuring it should not overflow the command line size.

When the child starts, the command line parameter is given to gfxVars, so the
updates can be used during gfxVars::Initialize(), instead of doing a sync
request to the parent.

In case the updates are not sent, or in the unlikely case the child cannot
parse them, we fallback to the sync request -- The former case should be rare
enough that a slow sync request is acceptable: It should only happen if D3D
block-list is *modified* (most people would either use the default, or just
overwrite these prefs with short strings.)

MozReview-Commit-ID: 6MoJC0fe59Q
2017-03-28 12:16:41 +11:00
Aaron Klotz
f9d4c14477 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.
2017-04-04 15:23:55 -06:00
Phil Ringnalda
d2dd2a664f Backed out changeset 2d7ef036a01f (bug 1337062) for making browser_net_open_request_in_tab.js nearly permaorange on Win7 debug e10s, and causing Windows e10s shutdown crashes whenever anything else goes wrong 2017-04-13 20:13:31 -07:00
Wes Kocher
e18b7d684a Merge inbound to central, a=merge 2017-04-13 17:24:01 -07:00
Gerald Squelart
63e7e2cf9a Bug 1337062 - Transfer initial gfxVars with SendSetXPCOMProcessAttributes - r=dvander
MozReview-Commit-ID: EUnwXkDwBTZ
2017-04-11 15:36:56 +12:00
Bill McCloskey
a65d2f94ad Bug 1354249 - Use same TabGroup as original tab for print preview (r=mystor)
MozReview-Commit-ID: 5wmjLgq2j5m
2017-04-12 20:17:50 -07:00
Geoff Brown
c5fa0c1820 Bug 1348547 - ReleaseCachedProcesses() between aboutdebugging tests; r=gabor 2017-04-04 09:45:20 -06:00
Gabor Krizsanits
5cf666789b Bug 1346288 - Setting e10sMultiBlockedByAddons for bootrapped add-on users. r=felipe 2017-03-30 18:44:27 +02:00
Gabor Krizsanits
7550a252f5 Bug 1346288 - Block e10s-multi if e10sMultiBlockedByAddons is set. r=mrbkap 2017-03-30 18:44:20 +02:00
Andrea Marchesini
4bb8d9c667 Bug 1340921 - Introduce PMemoryStream for having PBlob and Multi-e10s happy - part 2 - PMemoryStream actor, r=mrbkap 2017-03-29 10:40:38 +02:00
Kan-Ru Chen
f338a740fd Bug 1194751 - Part 6. Use mozilla::widget::ScreenManager in content process. r=mconley
This is the most important part of the patch series. It removes the
PScreenManager protocol and use ScreenManager directly in the content
processes.

Initial and subsequent updates are sent via PContent::RefreshScreens.
struct ScreenDetails are kept to serialize Screen over IPC.

nsIScreenManager::ScreenForNativeWidget is removed because
nsIWidget::GetWidgetScreen can replace it. nsIScreen::GetId is removed
because it's not useful for the more general Screen class.

MozReview-Commit-ID: 5dJO3isgBuQ
2017-03-09 19:30:26 +08:00
Kan-Ru Chen
4adb5cec0c Bug 1194751 - Part 1. Remove nsIScreenManager::GetNumberOfScreens. r=jimm
It's not used anywhere. Remove it will make removing PScreenManager
easier.

MozReview-Commit-ID: 5dn8kDhTZVl
2017-03-09 19:16:24 +08:00
Markus Stange
ba275e84c4 Bug 1321907 - Move cross process profiler controlling code from ContentParent and PluginModuleParent into a new class called CrossProcessProfilerController. r=mconley,njn
MozReview-Commit-ID: HY2iWHlDaEy
2017-03-22 21:44:59 -04:00
Michael Layzell
6620072ae3 Bug 1337056 - Part 12: Send down permissions when calling createAboutBlankContentViewer, r=baku
MozReview-Commit-ID: LigZnHM34CC
2017-03-21 11:08:03 -04:00
Michael Layzell
34e7741b23 Bug 1337056 - Part 11: Change the permission key assertion to a fatal assert on debug builds, r=ehsan
MozReview-Commit-ID: HTxvlomRKWy
2017-03-21 11:08:03 -04:00
Michael Layzell
90eeeb398a Bug 1345573 - Part 1: Key http, https, and ftp URIs on origin instead of eTLD+1, r=baku
MozReview-Commit-ID: Gihc4QFf11R
2017-03-21 11:08:03 -04:00
Michael Layzell
a292bf9523 Bug 1337056 - Part 9: Check LOAD_HTML_OBJECT_DATA in ContentParent::TransmitPermsFor, r=ehsan
MozReview-Commit-ID: 5MBAUe5zbvU
2017-03-21 11:08:03 -04:00
Michael Layzell
56a9e6779b Bug 1337056 - Part 5: Add support for finer-grained permission update messages to ContentParent, r=baku
MozReview-Commit-ID: 6y6eBLWPTue
2017-03-21 11:08:03 -04:00
Michael Layzell
3932b49e36 Bug 1337056 - Part 3: Send down http[s] and ftp permissions as they are needed. Send down other permissions at startup, r=baku
MozReview-Commit-ID: CUKPvFp6zpF
2017-03-21 11:08:03 -04:00
Michael Layzell
c7c33e5535 Bug 1337056 - Part 2: Replace the synchronous ReadPermissions API with async APIs, r=baku
These APIs are intended to use the mechanism defined in Part 1.

Part 3 implements the usage of these APIs to synchronize permissions.

MozReview-Commit-ID: HNKyDPtoaHl
2017-03-21 11:08:03 -04:00
Ehsan Akhgari
1f06c7a749 Bug 1346583 - Remove the PContent::Msg_OpenAnonymousTemporaryFile sync IPC; r=billm 2017-03-21 09:27:48 -04:00
Andrea Marchesini
324466725b Bug 1344957 - Enabling File.createFromNsIFile and File.createFromFileName only for testing and file-content-process, r=ehsan, r=bobowen 2017-03-21 11:11:06 +01:00
Ehsan Akhgari
a2728b8eba Bug 1346987 - Part 1: Introduce the asynchronous ContentChild::AsyncOpenAnonymousTemporaryFile() API; r=billm 2017-03-19 01:42:00 -04:00
Sebastian Hengst
cf2bcc4fac Backed out changeset 8a1c36e9ba80 (bug 1341008) 2017-03-16 17:29:18 +01:00
Gabor Krizsanits
32d2781726 Bug 1341008 - Use the preallocated process manager by default. r=billm, r=kmag 2017-03-16 11:22:37 +01:00
Andrea Marchesini
2f07689108 Bug 1344415 - Introduce a security check about which files can be opened by a content process, r=ehsan
Entries API gives access to the filesystem. With this patch we allow that only
to patches, previously shared by a FilePicker or a DataTransfer event.
2017-03-16 08:53:49 +01:00