Граф коммитов

6660 Коммитов

Автор SHA1 Сообщение Дата
Tom Ritter 1b9b6b72db Bug 1666222: Cut over a ton of NowUnfuzzed calls -> Now 4/5 r=smaug,extension-reviewers,zombie
With Fuzzyfox removed, Now() does what NowUnfuzzed() did.

Differential Revision: https://phabricator.services.mozilla.com/D119639
2021-07-14 18:18:17 +00:00
Tom Ritter 42c0ec86b4 Bug 1666222: Rip fuzzyfox out of the timestamp classes 2/5 r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D119637
2021-07-14 18:18:16 +00:00
Tooru Fujisawa 8f6310e25c Bug 1708450 - Move call and construct functions into js/public/CallAndConstruct.h. r=nbp
Depends on D119619

Differential Revision: https://phabricator.services.mozilla.com/D119620
2021-07-13 11:52:43 +00:00
Tooru Fujisawa cc92ef732d Bug 1708448 - Move property and element functions into js/public/PropertyAndElement.h. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D119619
2021-07-13 11:52:42 +00:00
Nika Layzell 80d5716044 Bug 1717728 - Hold MessageChannel's monitor when creating PortLink, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D118562
2021-07-12 20:36:20 +00:00
Paul Bone 5cbb4adf3a Bug 1718415 - GetMainThreadIdleScheduler checks if scheduler is destroyed r=smaug
If GetMainThreadIdleScheduler is called after IPC is destroyed it can
attempt to start it as if it's the first use, which crashes. Instead check
if we've already destroyed the scheduler once and if so then return early.

Differential Revision: https://phabricator.services.mozilla.com/D119251
2021-07-07 23:43:01 +00:00
Doug Thayer b5f7314e3e Bug 1714212 - Ensure COM initialized prior to showing skeleton UI r=Jamie,aklotz,tkikuchi
This implements Jamie's suggested fixes for a screenreader issue when the
skeleton UI is enabled. Most of the work here is just pulling out pieces from the
files we needed to include in mozglue so that any references to, say, nsString
or other pieces from libxul either no longer exist or are only included when
building libxul. In a few cases this meant creating whole files to house single
functions, which isn't so pretty, but it was the best I could come up with to
get the job done.

Differential Revision: https://phabricator.services.mozilla.com/D117663
2021-07-07 22:37:14 +00:00
Narcis Beleuzu 1ff027d763 Backed out changeset acf2d74efbbc (bug 1714212) for SM bustages on NativeNt.h 2021-07-07 23:13:42 +03:00
Doug Thayer dc9c284076 Bug 1714212 - Ensure COM initialized prior to showing skeleton UI r=Jamie,aklotz,tkikuchi
This implements Jamie's suggested fixes for a screenreader issue when the
skeleton UI is enabled. Most of the work here is just pulling out pieces from the
files we needed to include in mozglue so that any references to, say, nsString
or other pieces from libxul either no longer exist or are only included when
building libxul. In a few cases this meant creating whole files to house single
functions, which isn't so pretty, but it was the best I could come up with to
get the job done.

Differential Revision: https://phabricator.services.mozilla.com/D117663
2021-07-07 18:17:36 +00:00
Niklas Goegge a527e368f3 Bug 1714645: Remove NullPrincipalURI. r=ckerschb,nika
Differential Revision: https://phabricator.services.mozilla.com/D118490
2021-07-06 08:23:12 +00:00
Makoto Kato f912325645 Bug 1719115 - Add riscv64 defines to build/build_config.h. r=firefox-build-system-reviewers,andi
mozilla-central has some imported files of build_config.h from Chromium.
Actually although they doesn't have riscv64 defines yet, I would like to
add it to build Firefox for riscv64.

Differential Revision: https://phabricator.services.mozilla.com/D119051
2021-07-06 08:05:40 +00:00
Jed Davis 2257145e1c Bug 1635451 - Minimize content processes' connections to the X server. r=jgilbert,stransky,nika
This patch launches content processes with the `MOZ_HEADLESS` env var set
if they're using GTK with an X11 display (and there's no other reason
they'd need GTK).

The goal is to avoid exhausting Xorg's default limit of 256 clients if
there are many content processes due to Fission.  If these conditions
are met, the content process doesn't need to eagerly connect to the X
server.  This does not affect the sandbox policy, and content processes
can still use X if needed for, e.g.,  WebGL.

The boolean pref `dom.ipc.avoid-gtk`, set by default, controls this
feature.  In the future it could also be extended to minimize GTK use
with Wayland displays.

Note that disabling `widget.non-native-theme.enabled`, which is also
enabled by default, will restore the use of X11 in all content processes
even if this pref is set; the alternative is that widgets wouldn't render
in that case.

This change will also save some memory for now-unnecessary instances of
GTK's global state, and improve content process startup time.

Remove also the temp pref dom.ipc.remote-mozIcon because it cannot work
anymore with the content process being headless.

Differential Revision: https://phabricator.services.mozilla.com/D112197
2021-07-06 07:42:42 +00:00
Eden Chuang 4ce2d06b79 Bug 1714299 - Correct the opaque response judgment for opaque response blocking. r=necko-reviewers,annevk,dragana
An opaque response should be not only cross-origin but also be request with no_cors request mode.

To filter out the request with mode Same_origin, navigate, and cors. This patch reuses the algorithm in InternalRequest/FetchDriver to decide whether a response is an opaque response.

https://searchfox.org/mozilla-central/rev/da5d08750e504f3710f7ea051327d9c311c39902/dom/fetch/InternalRequest.cpp#331
https://searchfox.org/mozilla-central/rev/da5d08750e504f3710f7ea051327d9c311c39902/dom/fetch/FetchDriver.cpp#1153,1157

Differential Revision: https://phabricator.services.mozilla.com/D117086
2021-07-02 23:11:55 +00:00
Dorel Luca bc6f2486e2 Backed out changeset 11d1710e481f (bug 1714212) for Browser-chrome failures in toolkit/xre/test/browser_checkdllblockliststate.js. CLOSED TREE 2021-06-26 09:45:29 +03:00
Doug Thayer c3702a9447 Bug 1714212 - Ensure COM initialized prior to showing skeleton UI r=Jamie,aklotz,tkikuchi
This implements Jamie's suggested fixes for a screenreader issue when the
skeleton UI is enabled. Most of the work here is just pulling out pieces from the
files we needed to include in mozglue so that any references to, say, nsString
or other pieces from libxul either no longer exist or are only included when
building libxul. In a few cases this meant creating whole files to house single
functions, which isn't so pretty, but it was the best I could come up with to
get the job done.

Differential Revision: https://phabricator.services.mozilla.com/D117663
2021-06-26 04:10:50 +00:00
Nika Layzell 25ecbccf4f Bug 1717993 - Hold a WeakPtr to mExistingListener in NodeChannel, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D118868
2021-06-25 21:30:49 +00:00
Florian Quèze cd399a71a2 Bug 1717991 - Remove ifdefs around code that adds profiler markers with custom marker schemas, r=gerald.
Differential Revision: https://phabricator.services.mozilla.com/D118680
2021-06-25 13:28:01 +00:00
Nika Layzell aa2b0966b8 Bug 1713148 - Part 6: Release sChannelCountMutex before calling report callback, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D118431
2021-06-22 18:17:26 +00:00
Nika Layzell 5cc51fa13f Bug 1713148 - Part 5: Remove ThreadLink, r=handyman
This removes the last form of unique link between two MessageChannels so that
all MessageChannels communicate using PortLink, as it is fairly straightforward
to use PortLink to communicate between two threads in-process.

Differential Revision: https://phabricator.services.mozilla.com/D116672
2021-06-22 18:17:25 +00:00
Nika Layzell 7dba3a39f8 Bug 1713148 - Part 4: Remove ProcessLink, r=handyman
After the changes in part 3, this type is now dead code and can be fully
removed.

Differential Revision: https://phabricator.services.mozilla.com/D116671
2021-06-22 18:17:25 +00:00
Nika Layzell 620418372a Bug 1713148 - Part 3: Use ports for Endpoint-created actors, r=handyman
This adjusts how all actors created using `Endpoint` behave so that they now
use ports instead of creating a unique native channel connection between each
pair of processes.

Differential Revision: https://phabricator.services.mozilla.com/D116670
2021-06-22 18:17:25 +00:00
Nika Layzell c5447d3d6a Bug 1713148 - Part 2: Support port attachments on IPC messages, r=handyman
These port attachments are stored directly on the IPC::Message until the
message is ready to be routed to another process, at which point they will be
attached to the port in WillBeRoutedExternally. When the message is then
received on the other side, the ports will be re-extracted from the
UserMessageEvent before it is discarded and re-added to the IPC::Message so
that serializers only need to interact directly with the IPC::Message type.

Differential Revision: https://phabricator.services.mozilla.com/D116669
2021-06-22 18:17:24 +00:00
Nika Layzell cd803f0116 Bug 1713148 - Part 1: Expose UserMessageEvent to WillBeRoutedExternally, r=handyman
This is used because, unlike in Mojo, we cannot get from the IPC::Message
object to its enclosing UserMessageEvent object to attach more ports to it, and
this extra parameter makes that easy to do.

Differential Revision: https://phabricator.services.mozilla.com/D116668
2021-06-22 18:17:24 +00:00
Nika Layzell 599b58f458 Bug 1706374 - Part 13: Remove the event footer from an IPC::Message when deserializing, r=handyman,glandium
This unfortunately requires a new method to be added to BufferList to
support truncating the buffer to a particular iterator.

Differential Revision: https://phabricator.services.mozilla.com/D116666
2021-06-22 18:17:23 +00:00
Nika Layzell 7802bbb486 Bug 1706374 - Part 12b: Use NodeController for primary process channels, r=handyman
This extends on the changes in part 12a and consumes the new PortRef-based API
in all existing process types other than the fork server. The IPDL C++ unit
tests were already broken before this change, and were not updated.

Differential Revision: https://phabricator.services.mozilla.com/D112777
2021-06-22 18:17:23 +00:00
Nika Layzell 4527652311 Bug 1706374 - Part 12a: Initialize NodeController when creating IO thread, r=handyman
This also consumes the existing channel created when launching a process to
create the the conneciton required by NodeController for communicating between
processes. In part 12b, consumers of the broken APIs will be adjusted to use
the new interface.

The new routing approach is not used for the fork server process, as an IO
thread and the NodeController object cannot be initialized before the fork has
been performed, and the IPC requirements of that process are fairly minimal.

Differential Revision: https://phabricator.services.mozilla.com/D112776
2021-06-22 18:17:22 +00:00
Nika Layzell 985adb750c Bug 1706374 - Part 11: Add NodeController component bridging IPC and Ports, r=handyman
The NodeController and NodeChannel types act as the backbone connecting the
existing IPC logic and driving the ports routing code. Individual NodeChannel
objects wrap and respond to messages from IPC::Channel, and the NodeController
orchestrates all messaging for a process.

The design of these types are inspired by the types with the same names from
Mojo but have been simplified and streamlined to only support features used by
Gecko.

Support for attaching ports or handles to messages hasn't been added yet, but
can be added in follow-up patches.

Differential Revision: https://phabricator.services.mozilla.com/D112775
2021-06-22 18:17:22 +00:00
Nika Layzell 9ae1129462 Bug 1706374 - Part 10: Remove unnecessary IToplevelProtocol::OnChannelConnected, r=handyman,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D116665
2021-06-22 18:17:21 +00:00
Nika Layzell 58c8c1a2c1 Bug 1706374 - Part 9: Allow reading OtherPid() from an opened IPC::Channel, r=handyman
This will be used to handle pre-opened channels more reliably in ports code.

Differential Revision: https://phabricator.services.mozilla.com/D112774
2021-06-22 18:17:21 +00:00
Nika Layzell 7771beab66 Bug 1706374 - Part 8: Add support for separate footers to IPC::Message, r=handyman
These will be used to serialize extra event metadata into IPC messages when
they're sent over the ports infrastructure. In the future better integration
may be used to reduce the overhead of this if necessary.

Differential Revision: https://phabricator.services.mozilla.com/D112773
2021-06-22 18:17:20 +00:00
Nika Layzell d59f87aea5 Bug 1706374 - Part 7: Add owning helpers for working with transport descriptors, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112772
2021-06-22 18:17:20 +00:00
Nika Layzell da31167de5 Bug 1706374 - Part 6: Add Mozilla extensions to the Name type, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112771
2021-06-22 18:17:20 +00:00
Nika Layzell 3dbeb59016 Bug 1706374 - Part 5b: Apply suggested clang-tidy fixes to ports, r=handyman
Mechanical change applying clang-tidy fixes

Differential Revision: https://phabricator.services.mozilla.com/D112770
2021-06-22 18:17:19 +00:00
Nika Layzell c73b73620e Bug 1706374 - Part 5a: Apply suggested clang-tidy fixes to the ports code, r=handyman
Mechanical change applying clang-tidy fixes

Differential Revision: https://phabricator.services.mozilla.com/D112769
2021-06-22 18:17:19 +00:00
Nika Layzell 42952972ef Bug 1706374 - Part 4: Run ports gtests in tree, r=handyman
The ports library import came with 2 gtests. This patch gets them running under
our gtest runner to ensure we don't break the ports functionality.

Differential Revision: https://phabricator.services.mozilla.com/D112768
2021-06-22 18:17:19 +00:00
Nika Layzell 03f4afa8fb Bug 1706374 - Part 3: Get mojo/core/ports building in libxul, r=handyman
This involves replacing a number of types normally provided by chromium's
`base` with their XPCOM counterparts etc.

Differential Revision: https://phabricator.services.mozilla.com/D112767
2021-06-22 18:17:18 +00:00
Nika Layzell d1f7ecf8e1 Bug 1706374 - Part 2: Format mojo/core/ports with clang-format, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112766
2021-06-22 18:17:18 +00:00
Nika Layzell 12a9501583 Bug 1706374 - Part 1: Import the mojo/core/ports directory from Chromium, r=handyman
This initial import does not build, and will be made to build in following
parts.

Differential Revision: https://phabricator.services.mozilla.com/D112765
2021-06-22 18:17:17 +00:00
Mike Hommey 744db845c6 Bug 1700534 - Coalesce RLBox wasmboxed libraries. r=firefox-build-system-reviewers,shravanrn,bholley,andi,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D116440
2021-06-22 05:31:33 +00:00
Butkovits Atila 83f57b5c69 Backed out 22 changesets (bug 1714226, bug 1706374, bug 1713148) for causing build bustages on MessageChannel.cpp. CLOSED TREE
Backed out changeset ea469eaa54ca (bug 1713148)
Backed out changeset fd8523d5126e (bug 1713148)
Backed out changeset f2e5309c914c (bug 1713148)
Backed out changeset 2da57973ed55 (bug 1713148)
Backed out changeset 677e1ee99bb2 (bug 1713148)
Backed out changeset b4c0619e79bf (bug 1706374)
Backed out changeset c02fa459e77d (bug 1706374)
Backed out changeset 72dc6537cf0b (bug 1706374)
Backed out changeset 48088463c656 (bug 1706374)
Backed out changeset b09ae4c3a94b (bug 1706374)
Backed out changeset 04422175004b (bug 1706374)
Backed out changeset 110b2384e7d1 (bug 1706374)
Backed out changeset ab2b086abbd4 (bug 1706374)
Backed out changeset ffde07f73249 (bug 1706374)
Backed out changeset c6303af17ff4 (bug 1706374)
Backed out changeset 02249671c2f9 (bug 1706374)
Backed out changeset a6a5d05b5636 (bug 1706374)
Backed out changeset e21b6defb805 (bug 1706374)
Backed out changeset c72c5be9ddb1 (bug 1706374)
Backed out changeset 23cd961575a6 (bug 1706374)
Backed out changeset b412d6e9e145 (bug 1706374)
Backed out changeset a8ec285d6472 (bug 1714226)
2021-06-22 04:03:56 +03:00
Nika Layzell 8e8aa56ee2 Bug 1713148 - Part 5: Remove ThreadLink, r=handyman
This removes the last form of unique link between two MessageChannels so that
all MessageChannels communicate using PortLink, as it is fairly straightforward
to use PortLink to communicate between two threads in-process.

Differential Revision: https://phabricator.services.mozilla.com/D116672
2021-06-21 21:53:13 +00:00
Nika Layzell 03646b0682 Bug 1713148 - Part 4: Remove ProcessLink, r=handyman
After the changes in part 3, this type is now dead code and can be fully
removed.

Differential Revision: https://phabricator.services.mozilla.com/D116671
2021-06-21 21:53:13 +00:00
Nika Layzell 758f8f7d8f Bug 1713148 - Part 3: Use ports for Endpoint-created actors, r=handyman
This adjusts how all actors created using `Endpoint` behave so that they now
use ports instead of creating a unique native channel connection between each
pair of processes.

Differential Revision: https://phabricator.services.mozilla.com/D116670
2021-06-21 21:53:13 +00:00
Nika Layzell ddf32ef8de Bug 1713148 - Part 2: Support port attachments on IPC messages, r=handyman
These port attachments are stored directly on the IPC::Message until the
message is ready to be routed to another process, at which point they will be
attached to the port in WillBeRoutedExternally. When the message is then
received on the other side, the ports will be re-extracted from the
UserMessageEvent before it is discarded and re-added to the IPC::Message so
that serializers only need to interact directly with the IPC::Message type.

Differential Revision: https://phabricator.services.mozilla.com/D116669
2021-06-21 21:53:12 +00:00
Nika Layzell 0bfe790a38 Bug 1713148 - Part 1: Expose UserMessageEvent to WillBeRoutedExternally, r=handyman
This is used because, unlike in Mojo, we cannot get from the IPC::Message
object to its enclosing UserMessageEvent object to attach more ports to it, and
this extra parameter makes that easy to do.

Differential Revision: https://phabricator.services.mozilla.com/D116668
2021-06-21 21:53:12 +00:00
Nika Layzell 344d8d6622 Bug 1706374 - Part 13: Remove the event footer from an IPC::Message when deserializing, r=handyman,glandium
This unfortunately requires a new method to be added to BufferList to
support truncating the buffer to a particular iterator.

Differential Revision: https://phabricator.services.mozilla.com/D116666
2021-06-21 21:53:11 +00:00
Nika Layzell 1d4aba6770 Bug 1706374 - Part 12b: Use NodeController for primary process channels, r=handyman
This extends on the changes in part 12a and consumes the new PortRef-based API
in all existing process types other than the fork server. The IPDL C++ unit
tests were already broken before this change, and were not updated.

Differential Revision: https://phabricator.services.mozilla.com/D112777
2021-06-21 21:53:11 +00:00
Nika Layzell 68c606d1e5 Bug 1706374 - Part 12a: Initialize NodeController when creating IO thread, r=handyman
This also consumes the existing channel created when launching a process to
create the the conneciton required by NodeController for communicating between
processes. In part 12b, consumers of the broken APIs will be adjusted to use
the new interface.

The new routing approach is not used for the fork server process, as an IO
thread and the NodeController object cannot be initialized before the fork has
been performed, and the IPC requirements of that process are fairly minimal.

Differential Revision: https://phabricator.services.mozilla.com/D112776
2021-06-21 21:53:10 +00:00
Nika Layzell 6de2add6d7 Bug 1706374 - Part 11: Add NodeController component bridging IPC and Ports, r=handyman
The NodeController and NodeChannel types act as the backbone connecting the
existing IPC logic and driving the ports routing code. Individual NodeChannel
objects wrap and respond to messages from IPC::Channel, and the NodeController
orchestrates all messaging for a process.

The design of these types are inspired by the types with the same names from
Mojo but have been simplified and streamlined to only support features used by
Gecko.

Support for attaching ports or handles to messages hasn't been added yet, but
can be added in follow-up patches.

Differential Revision: https://phabricator.services.mozilla.com/D112775
2021-06-21 21:53:10 +00:00
Nika Layzell 4a956a2673 Bug 1706374 - Part 10: Remove unnecessary IToplevelProtocol::OnChannelConnected, r=handyman,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D116665
2021-06-21 21:53:10 +00:00
Nika Layzell 1811e3331a Bug 1706374 - Part 9: Allow reading OtherPid() from an opened IPC::Channel, r=handyman
This will be used to handle pre-opened channels more reliably in ports code.

Differential Revision: https://phabricator.services.mozilla.com/D112774
2021-06-21 21:53:09 +00:00
Nika Layzell 56bc256e42 Bug 1706374 - Part 8: Add support for separate footers to IPC::Message, r=handyman
These will be used to serialize extra event metadata into IPC messages when
they're sent over the ports infrastructure. In the future better integration
may be used to reduce the overhead of this if necessary.

Differential Revision: https://phabricator.services.mozilla.com/D112773
2021-06-21 21:53:09 +00:00
Nika Layzell 4945c6bfd3 Bug 1706374 - Part 7: Add owning helpers for working with transport descriptors, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112772
2021-06-21 21:53:08 +00:00
Nika Layzell 681d4a66f5 Bug 1706374 - Part 6: Add Mozilla extensions to the Name type, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112771
2021-06-21 21:53:08 +00:00
Nika Layzell d02a8a14cc Bug 1706374 - Part 5b: Apply suggested clang-tidy fixes to ports, r=handyman
Mechanical change applying clang-tidy fixes

Differential Revision: https://phabricator.services.mozilla.com/D112770
2021-06-21 21:53:08 +00:00
Nika Layzell 050548d334 Bug 1706374 - Part 5a: Apply suggested clang-tidy fixes to the ports code, r=handyman
Mechanical change applying clang-tidy fixes

Differential Revision: https://phabricator.services.mozilla.com/D112769
2021-06-21 21:53:07 +00:00
Nika Layzell 12db5b7e19 Bug 1706374 - Part 4: Run ports gtests in tree, r=handyman
The ports library import came with 2 gtests. This patch gets them running under
our gtest runner to ensure we don't break the ports functionality.

Differential Revision: https://phabricator.services.mozilla.com/D112768
2021-06-21 21:53:07 +00:00
Nika Layzell 8381830670 Bug 1706374 - Part 3: Get mojo/core/ports building in libxul, r=handyman
This involves replacing a number of types normally provided by chromium's
`base` with their XPCOM counterparts etc.

Differential Revision: https://phabricator.services.mozilla.com/D112767
2021-06-21 21:53:06 +00:00
Nika Layzell 2a2037d8e9 Bug 1706374 - Part 2: Format mojo/core/ports with clang-format, r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D112766
2021-06-21 21:53:06 +00:00
Nika Layzell 8008933c20 Bug 1706374 - Part 1: Import the mojo/core/ports directory from Chromium, r=handyman
This initial import does not build, and will be made to build in following
parts.

Differential Revision: https://phabricator.services.mozilla.com/D112765
2021-06-21 21:53:06 +00:00
Andi-Bogdan Postelnicu f07c975367 Bug 1519636 - Reformat recent changes to the Google coding style. r=necko-reviewers,emilio
Updated with clang-format version 12.0.0 (taskcluster-FZRqPXamQIOU_i4hF0cAcg)

Differential Revision: https://phabricator.services.mozilla.com/D117905
2021-06-17 11:00:22 +00:00
Florian Quèze dfeb53e219 Bug 1715257 - Remove Task Tracer code from the profiler, r=gerald,necko-reviewers.
Differential Revision: https://phabricator.services.mozilla.com/D117996
2021-06-17 09:33:00 +00:00
Iulian Moraru b02492de66 Backed out changeset 617a466d0cce (bug 1715257) for causing build bustages. CLOSED TREE 2021-06-17 10:58:16 +03:00
Florian Quèze 7b4906a6bd Bug 1715257 - Remove Task Tracer code from the profiler, r=gerald,necko-reviewers.
Differential Revision: https://phabricator.services.mozilla.com/D117996
2021-06-17 06:12:10 +00:00
Aaron Klotz 93f41e2170 Bug 1707954: Part 3 - Add eager MTA creation to mscom::EnsureMTA; r=Jamie
* We make `EnsureMTA`'s default constructor `private`, and `ProcessRuntime` a friend.
  `ProcessRuntime` calls this to eagerly create the MTA.
* The default constructor uses the new-ish `CoIncrementMTAUsage` to create the
  MTA without requiring a dedicated thread (when available). Otherwise we
  fall back to the traditional method. In the latter case, we synchronously
  wait for the initialization to complete so that we are guaranteed to have
  an MTA when we return.
* Some minor refactoring to make it easier to do the sync wait in the
  default constructor. I also renamed a couple of things just to make them
  more clear.

Differential Revision: https://phabricator.services.mozilla.com/D113562
2021-06-14 21:53:18 +00:00
Aaron Klotz 0785438543 Bug 1707954: Part 1 - Change mscom::ProcessRuntime to ensure MTA creation during startup; r=Jamie
This patch does the following:

* General cleanup:
  * More explicit restrictions of how/when the various constructors are available.
  * `InitializeSecurity` is made `static`, since it doesn't really manipulate instance variables.
  * We move some logic for resolving `CoInitializeEx` flags into `GetDesiredApartmentType`.
* Addition of `PostInit`:
  * This doesn't do anything at the moment, but since I'm already making a bunch
    of changes, I wanted to add this too. `PostInit` is a static method that
    is invoked once the `ProcessRuntime` is finished initializing, and, when
    present, the sandbox is fully enabled.
* We call `EnsureMTA`'s default constructor to eagerly bring up the MTA. This
  causes all background threads to implicitly become members of the MTA, which
  means that we can eliminate `CoInitializeEx` calls throughout our codebase,
  since they're slow and most developers do not have a clear understanding of
  what those functions actually do.
  * This also simplifies the COM initialization in sandboxed content processes
    with Win32K lockdown, since if our main thread is in the implicit MTA, we
    can immediately initialize ourselves without needing to punt that work
    over to the persistent MTA thread.

Differential Revision: https://phabricator.services.mozilla.com/D113560
2021-06-14 21:53:17 +00:00
Alexandre Lissy 59f1595f14 Bug 1651133 - Double-check the build ID to avoid spurious about:restartrequired r=jld
Differential Revision: https://phabricator.services.mozilla.com/D115593
2021-06-14 10:33:19 +00:00
Gabriele Svelto a7c337103a Bug 1697895 - Register the WER runtime exception module in child processes r=KrisWright
This patch sets up a few different things that will be used by the WER runtime
exception module when it needs to notify the main process of a child process
crash.

For every child process we allocate a structure in the main process called
WindowsErrorReportingData that contains three things:
- The address of the function used to notify the main process that there's a
  pending minidump for a given child process
- The PID of said child process
- The name of the minidump that has been generated

The first field is filled up by the main process and will be read by the WER
process when running the runtime exception module, the second and third fields
on the other hand start empty and will be written into by the runtime exception
module after it has generated a minidump.

I know this sounds scary. It is. But bear with me please.

When we register the runtime exception module we can pass it a single
pointer-sized parameter but we need to pass it at least another pointer that
includes data coming from the child process itself (this one is called
InProcessWindowsErrorReportingData). This data currently includes only the
process type but will also include certain annotations in the future
(e.g. bug 1711418). So here's what we do: we store a pointer to the parent
data structure in the child process command-line (cringe) and we read it
from the runtime exception module by reading the crashed process command-line
arguments and parsing them (double-cringe).

Armed with this information the WER runtime exception module can populate
the info for the generated minidump and then push it into the main process
by calling CreateRemoteThread() (which creates a new thread in the main
process, triple-cringe at this point).

Differential Revision: https://phabricator.services.mozilla.com/D115379
2021-06-11 09:59:49 +00:00
Iulian Moraru d5be2d4af2 Backed out 5 changesets (bug 1682518, bug 1703761, bug 1711418, bug 1697895) for causing build bustages on nsEmbedFunctions.cpp. CLOSED TREE
Backed out changeset d747dd950198 (bug 1711418)
Backed out changeset 58092e594233 (bug 1711418)
Backed out changeset d9b5dd9f7307 (bug 1703761)
Backed out changeset 345c36d8e46b (bug 1682518)
Backed out changeset a9be55acfd91 (bug 1697895)
2021-06-11 07:08:38 +03:00
Gabriele Svelto 1a86d1dee4 Bug 1697895 - Register the WER runtime exception module in child processes r=KrisWright
This patch sets up a few different things that will be used by the WER runtime
exception module when it needs to notify the main process of a child process
crash.

For every child process we allocate a structure in the main process called
WindowsErrorReportingData that contains three things:
- The address of the function used to notify the main process that there's a
  pending minidump for a given child process
- The PID of said child process
- The name of the minidump that has been generated

The first field is filled up by the main process and will be read by the WER
process when running the runtime exception module, the second and third fields
on the other hand start empty and will be written into by the runtime exception
module after it has generated a minidump.

I know this sounds scary. It is. But bear with me please.

When we register the runtime exception module we can pass it a single
pointer-sized parameter but we need to pass it at least another pointer that
includes data coming from the child process itself (this one is called
InProcessWindowsErrorReportingData). This data currently includes only the
process type but will also include certain annotations in the future
(e.g. bug 1711418). So here's what we do: we store a pointer to the parent
data structure in the child process command-line (cringe) and we read it
from the runtime exception module by reading the crashed process command-line
arguments and parsing them (double-cringe).

Armed with this information the WER runtime exception module can populate
the info for the generated minidump and then push it into the main process
by calling CreateRemoteThread() (which creates a new thread in the main
process, triple-cringe at this point).

Differential Revision: https://phabricator.services.mozilla.com/D115379
2021-06-10 22:01:32 +00:00
Brindusan Cristian df90ffe9bc Backed out 5 changesets (bug 1697895, bug 1682518, bug 1703761, bug 1711418) for causing Windows 2012 x64 asan buid bustages.
CLOSED TREE

Backed out changeset 4cc2cb3653f2 (bug 1711418)
Backed out changeset 02cf2dc4c3c8 (bug 1711418)
Backed out changeset ca35e73d9445 (bug 1703761)
Backed out changeset 43c12d3f5c4f (bug 1682518)
Backed out changeset d75aef90ac53 (bug 1697895)
2021-06-10 16:30:44 +03:00
Gabriele Svelto 1ebc33d4a4 Bug 1697895 - Register the WER runtime exception module in child processes r=KrisWright
This patch sets up a few different things that will be used by the WER runtime
exception module when it needs to notify the main process of a child process
crash.

For every child process we allocate a structure in the main process called
WindowsErrorReportingData that contains three things:
- The address of the function used to notify the main process that there's a
  pending minidump for a given child process
- The PID of said child process
- The name of the minidump that has been generated

The first field is filled up by the main process and will be read by the WER
process when running the runtime exception module, the second and third fields
on the other hand start empty and will be written into by the runtime exception
module after it has generated a minidump.

I know this sounds scary. It is. But bear with me please.

When we register the runtime exception module we can pass it a single
pointer-sized parameter but we need to pass it at least another pointer that
includes data coming from the child process itself (this one is called
InProcessWindowsErrorReportingData). This data currently includes only the
process type but will also include certain annotations in the future
(e.g. bug 1711418). So here's what we do: we store a pointer to the parent
data structure in the child process command-line (cringe) and we read it
from the runtime exception module by reading the crashed process command-line
arguments and parsing them (double-cringe).

Armed with this information the WER runtime exception module can populate
the info for the generated minidump and then push it into the main process
by calling CreateRemoteThread() (which creates a new thread in the main
process, triple-cringe at this point).

Differential Revision: https://phabricator.services.mozilla.com/D115379
2021-06-10 11:58:37 +00:00
Marian-Vasile Laza 5c483b46df Backed out 4 changesets (bug 1707954) for causing bc failures in ClearOnShutdown.cpp.
CLOSED TREE

Backed out changeset 7cb0db27236c (bug 1707954)
Backed out changeset fd52d202d10b (bug 1707954)
Backed out changeset 55586d8f7bf4 (bug 1707954)
Backed out changeset 49406bdac5ec (bug 1707954)
2021-06-10 09:13:45 +03:00
Aaron Klotz b16f77c62b Bug 1707954: Part 3 - Add eager MTA creation to mscom::EnsureMTA; r=Jamie
* We make `EnsureMTA`'s default constructor `private`, and `ProcessRuntime` a friend.
  `ProcessRuntime` calls this to eagerly create the MTA.
* The default constructor uses the new-ish `CoIncrementMTAUsage` to create the
  MTA without requiring a dedicated thread (when available). Otherwise we
  fall back to the traditional method. In the latter case, we synchronously
  wait for the initialization to complete so that we are guaranteed to have
  an MTA when we return.
* Some minor refactoring to make it easier to do the sync wait in the
  default constructor. I also renamed a couple of things just to make them
  more clear.

Differential Revision: https://phabricator.services.mozilla.com/D113562
2021-06-09 21:38:14 +00:00
Aaron Klotz 6ff70a37d9 Bug 1707954: Part 1 - Change mscom::ProcessRuntime to ensure MTA creation during startup; r=Jamie
This patch does the following:

* General cleanup:
  * More explicit restrictions of how/when the various constructors are available.
  * `InitializeSecurity` is made `static`, since it doesn't really manipulate instance variables.
  * We move some logic for resolving `CoInitializeEx` flags into `GetDesiredApartmentType`.
* Addition of `PostInit`:
  * This doesn't do anything at the moment, but since I'm already making a bunch
    of changes, I wanted to add this too. `PostInit` is a static method that
    is invoked once the `ProcessRuntime` is finished initializing, and, when
    present, the sandbox is fully enabled.
* We call `EnsureMTA`'s default constructor to eagerly bring up the MTA. This
  causes all background threads to implicitly become members of the MTA, which
  means that we can eliminate `CoInitializeEx` calls throughout our codebase,
  since they're slow and most developers do not have a clear understanding of
  what those functions actually do.
  * This also simplifies the COM initialization in sandboxed content processes
    with Win32K lockdown, since if our main thread is in the implicit MTA, we
    can immediately initialize ourselves without needing to punt that work
    over to the persistent MTA thread.

Differential Revision: https://phabricator.services.mozilla.com/D113560
2021-06-09 21:38:14 +00:00
Noemi Erli 90b8bc9a03 Backed out 4 changesets (bug 1707954) for causing bustages in rules.mk CLOSED TREE
Backed out changeset fa23f9293250 (bug 1707954)
Backed out changeset e1b37839487b (bug 1707954)
Backed out changeset f72b810472fd (bug 1707954)
Backed out changeset fb4829011104 (bug 1707954)
2021-06-10 00:29:29 +03:00
Aaron Klotz 2bac3c5a84 Bug 1707954: Part 3 - Add eager MTA creation to mscom::EnsureMTA; r=Jamie
* We make `EnsureMTA`'s default constructor `private`, and `ProcessRuntime` a friend.
  `ProcessRuntime` calls this to eagerly create the MTA.
* The default constructor uses the new-ish `CoIncrementMTAUsage` to create the
  MTA without requiring a dedicated thread (when available). Otherwise we
  fall back to the traditional method. In the latter case, we synchronously
  wait for the initialization to complete so that we are guaranteed to have
  an MTA when we return.
* Some minor refactoring to make it easier to do the sync wait in the
  default constructor. I also renamed a couple of things just to make them
  more clear.

Differential Revision: https://phabricator.services.mozilla.com/D113562
2021-06-09 20:28:06 +00:00
Aaron Klotz e6aba31a8f Bug 1707954: Part 1 - Change mscom::ProcessRuntime to ensure MTA creation during startup; r=Jamie
This patch does the following:

* General cleanup:
  * More explicit restrictions of how/when the various constructors are available.
  * `InitializeSecurity` is made `static`, since it doesn't really manipulate instance variables.
  * We move some logic for resolving `CoInitializeEx` flags into `GetDesiredApartmentType`.
* Addition of `PostInit`:
  * This doesn't do anything at the moment, but since I'm already making a bunch
    of changes, I wanted to add this too. `PostInit` is a static method that
    is invoked once the `ProcessRuntime` is finished initializing, and, when
    present, the sandbox is fully enabled.
* We call `EnsureMTA`'s default constructor to eagerly bring up the MTA. This
  causes all background threads to implicitly become members of the MTA, which
  means that we can eliminate `CoInitializeEx` calls throughout our codebase,
  since they're slow and most developers do not have a clear understanding of
  what those functions actually do.
  * This also simplifies the COM initialization in sandboxed content processes
    with Win32K lockdown, since if our main thread is in the implicit MTA, we
    can immediately initialize ourselves without needing to punt that work
    over to the persistent MTA thread.

Differential Revision: https://phabricator.services.mozilla.com/D113560
2021-06-09 20:28:05 +00:00
Nika Layzell 1aaeb179e2 Bug 1715144 - Part 1: Stop adding /ipc/glue to LOCAL_INCLUDES when including chromium-config.mozbuild, r=ipc-reviewers,necko-reviewers,mccr8,valentin
Differential Revision: https://phabricator.services.mozilla.com/D117103
2021-06-09 04:56:48 +00:00
Yaron Tausky dde1fe54eb Bug 1496997 - Remove a chunk of child intercept code from dom/serviceworkers r=asuth,dom-workers-and-storage-reviewers,sg
Differential Revision: https://phabricator.services.mozilla.com/D101632
2021-06-08 21:02:54 +00:00
Andreas Farre 03d1f5a511 Bug 1710004 - Part 2: Make it possible to pre load data into BackgroundSessionStorageManager. r=asuth
This makes it possible to do the session storage restoration for
session restore from the parent process.

Differential Revision: https://phabricator.services.mozilla.com/D116007
2021-06-08 13:42:33 +00:00
Nika Layzell d3e5a4039d Bug 1713294 - Use atomics for Unsound_IsClosed and Unsound_NumQueuedMessages, r=ipc-reviewers,mccr8
Differential Revision: https://phabricator.services.mozilla.com/D117039
2021-06-07 22:00:35 +00:00
Rob Lemley c11976792a Bug 1714658 - Add missing nsString include to process_util_linux.cc. r=gsvelto
Fixes coverage builds (--enable-coverage) when MOZ_ENABLE_FORKSERVER is not
set. This is the case for Thunderbird.

Differential Revision: https://phabricator.services.mozilla.com/D116885
2021-06-07 14:29:12 +00:00
Tim Huang d7220a241a Bug 1706615 - Part 1: Add a UnstrippedURI into the LoadInfo. r=valentin,necko-reviewers
This patch adds a UnstrippedURI into the LoadInfo. This attribute
represents the channel's URI has been stripped if this attributes is not
a nullptr.

Having this attribute allows us to be able to revert the query stripping
in the case where the loading channel is in the content blocking allow
list in the parent process.

In addition, this patch removes the main thread assertion in URIUtils
given that we've made the URL construction thread-safe. This will allow
us to be able to use nsIURI directly in ParentLoadInfoForwarderArgs.

Differential Revision: https://phabricator.services.mozilla.com/D116108
2021-06-02 19:46:19 +00:00
Andreas Farre 3dd66dc912 Part 9: Bug 1700623 - Notify main thread about storage updates periodically. r=asuth
This is used to update session store storage contents continuously.

Depends on D111435

Differential Revision: https://phabricator.services.mozilla.com/D114586
2021-05-26 07:14:07 +00:00
Andreas Farre 1e98905bd8 Part 6: Bug 1700623 - Add data querying to SessionStorageManager in parent process. r=nika,dom-storage-reviewers,asuth
To collect session storage data for session store, we make it possible
to query the background session storage managar for data.

Depends on D111432

Differential Revision: https://phabricator.services.mozilla.com/D111433
2021-05-26 07:14:05 +00:00
Olli Pettay e5eb74b09d Bug 1708042, add support for 'control' priority in ipdl, r=jld,ipc-reviewers
Depends on D115404

Differential Revision: https://phabricator.services.mozilla.com/D115405
2021-05-21 15:46:46 +00:00
Iulian Moraru e0b2722506 Backed out 3 changesets (bug 1708042) for causing wr failures on background-color-animation-in-body.html.
Backed out changeset f8febc2db198 (bug 1708042)
Backed out changeset a0fccd7121b5 (bug 1708042)
Backed out changeset ddc6d95f0601 (bug 1708042)
2021-05-21 16:39:38 +03:00
Alexandru Michis 84d8f14b41 Backed out 9 changesets (bug 1700623) for causing bc failures in browser_history_menu.js
CLOSED TREE

Backed out changeset 5eae296ad8b5 (bug 1700623)
Backed out changeset 97c3add3b00a (bug 1700623)
Backed out changeset 7ab483627a27 (bug 1700623)
Backed out changeset a4e673640de5 (bug 1700623)
Backed out changeset 513ea16be430 (bug 1700623)
Backed out changeset 88b4add342df (bug 1700623)
Backed out changeset c13bdee1b526 (bug 1700623)
Backed out changeset 26df421dac02 (bug 1700623)
Backed out changeset 6cd0b7a269e5 (bug 1700623)
2021-05-21 11:43:54 +03:00
Andreas Farre a0d376b551 Part 9: Bug 1700623 - Notify main thread about storage updates periodically. r=asuth
This is used to update session store storage contents continuously.

Depends on D111435

Differential Revision: https://phabricator.services.mozilla.com/D114586
2021-05-20 12:48:24 +00:00
Andreas Farre d1e7d2a409 Part 6: Bug 1700623 - Add data querying to SessionStorageManager in parent process. r=nika,dom-storage-reviewers,asuth
To collect session storage data for session store, we make it possible
to query the background session storage managar for data.

Depends on D111432

Differential Revision: https://phabricator.services.mozilla.com/D111433
2021-05-20 12:48:22 +00:00
Olli Pettay d147cf8e03 Bug 1708042, add support for 'control' priority in ipdl, r=jld,ipc-reviewers
Depends on D115404

Differential Revision: https://phabricator.services.mozilla.com/D115405
2021-05-20 12:42:31 +00:00
Dorel Luca 3416acf7b4 Backed out changeset af367782bea4 (bug 1677509) for multipe failures. CLOSED TREE 2021-05-20 02:26:36 +03:00
Doug Thayer 3a691cdda6 Bug 1677509 - Use GetQueuedCompletionStatusEx in win message pump r=handyman
This is almost certainly a very small optimization, and likely won't address
the frequency of hangs from bug 1677509. However, it still should be an
improvement, and will work on anything Vista or later.

We observed as part of trying to diagnose the somewhat mysterious bug 1677509
that sometimes multiple messages would be queued, and yet the IPC I/O thread
would go idle in between servicing them in GetQueuedCompletionStatusEx. Given
that we send frequent sync ipc messages for mouse move events, it seems prudent
to be able to service multiple at a time.

Differential Revision: https://phabricator.services.mozilla.com/D114287
2021-05-19 21:44:36 +00:00
Paul Bone 782bfdaa70 Bug 1710989 - Apply linter fixes in IdleScheduler code r=smaug DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D115328
2021-05-19 02:30:24 +00:00
Nika Layzell 2bec103be8 Bug 1708500 - Reduce the size of ManagedContainer types, r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D114786
2021-05-17 20:53:51 +00:00
Butkovits Atila b1cdcda434 Backed out changeset 0909ed8ac5a9 (bug 1707499) for causing multiple failures. CLOSED TREE 2021-05-13 06:49:49 +03:00
Paul Bone 4abb3dad5a Bug 1707499 - Fix uninitialised member r=jld
Differential Revision: https://phabricator.services.mozilla.com/D113470
2021-05-13 03:07:40 +00:00
Nicolas B. Pierron a4aef929a1 Bug 1698045 part 1 - Add xpc::SelfHostedShmem to hold shared memory for JS initialization. r=smaug,tcampbell,ipc-reviewers,jld
This change adds the ground work to share content provided by the JS engine of
the Parent process to initialize the JS engine of other threads and Content
processes.

The singleton class xpc::SelfHostedShmem is used to wrap the logic behind
holding the memory. The memory is initialized with `InitFromParent` or
`InitFromChild`. The memory is accessible using either the `Content` or
`Handle`.

The shared memory is transfered through the command line using
`mozilla::ipc::ExportSharedJSInit` and read using
`mozilla::ipc::ImportSharedJSInit` functions. The command line is used, as we
need the shared memory to be avilable for the JS engine initialization. The
command line is composed of a single command named `-jsInit` which is followed
by the handle (on Windows) and the length of the shared content.

The memory associated with the shared memory is cleared in `ShutdownXPCOM` after
closing all threads, and shuting down the JS engine. This is necessary as we
expect the JS engine to borrow content from the shared memory.

Differential Revision: https://phabricator.services.mozilla.com/D110576
2021-05-12 13:57:55 +00:00
Paul Bone 1aec99356d Bug 1629064 - pt 10. Add telemetry r=smaug
We'd like to know if there are any problems with starving content processes
of cleaning up memory in a timely way.  Add some telemetry to get a sense of
this.

Differential Revision: https://phabricator.services.mozilla.com/D113275
2021-05-12 06:46:11 +00:00