Commit Graph

5160 Commits

Author SHA1 Message Date
Alex Gaynor
9ab68ebc8e Bug 1514225 - remove unused functionality from ExprCast AST node in IPDL; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D14551

--HG--
extra : moz-landing-system : lando
2018-12-14 20:59:45 +00:00
Sylvestre Ledru
6f45c666bc Bug 1513205 - Also update the tests to match the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D14595

--HG--
extra : moz-landing-system : lando
2018-12-14 18:10:35 +00:00
Razvan Maries
1fcf888246 Backed out changeset 15f8b27f1305 (bug 1511557) for build bustages on a CLOSED TREE.
--HG--
extra : rebase_source : a1303dfa4c9475ea43f2fedfa2031c455d8bab7a
extra : amend_source : d11c65e735d78a8d7b70c1be52439ad61904ccd5
2018-12-14 11:54:33 +02:00
Gabriele Svelto
b177dcc7d5 Bug 1511557 - Do not leak the pipe used for sending crash annotations when hitting errors during startup r=jld
Differential Revision: https://phabricator.services.mozilla.com/D13999

--HG--
extra : moz-landing-system : lando
2018-12-14 02:47:03 +00:00
Alex Gaynor
56e2d0f48d Bug 1512673 - convert several fields in the IPDL compiler from integers to bools; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D13981

--HG--
extra : moz-landing-system : lando
2018-12-13 15:45:25 +00:00
Alex Gaynor
483d20764e Bug 1513034 - delete dead code from IPDL's lower.py identified by coverage; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D14091

--HG--
extra : moz-landing-system : lando
2018-12-12 14:59:37 +00:00
Dorel Luca
cbad78f7c3 Backed out changeset 985505cc1347 (bug 1512673) for build bustage. CLOSED TREE
--HG--
extra : amend_source : 42af9870b9a3d5aa78290b79c8c93c39ca2738db
2018-12-12 00:14:25 +02:00
Alex Gaynor
effad83dac Bug 1512673 - convert several fields in the IPDL compiler from integers to bools; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D13981

--HG--
extra : moz-landing-system : lando
2018-12-11 21:16:11 +00:00
Alex Gaynor
79c450dbdb Bug 1513073 - make the IPDL compiler's code python3 syntax friendly; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D14102

--HG--
extra : moz-landing-system : lando
2018-12-11 18:12:22 +00:00
Jean-Yves Avenard
48517afae6 Bug 1512298 - Make IPDL MozPromise exclusive. r=gerald,froydnj
MozPromise most common use is to have an single or exclusive listener. By making the MozPromise generated by IPDL exclusive we can also use move semantics.

While at it, we also use move semantics for the ResponseRejectReason and via the callback's reject method so that the lambda used with the MozPromise::Then can be identical to the one used by the IPDL callback.
As it currently is, it provides no advantage over a copy as it's just an enum; however, this will facilitate future changes where it may not be.

Differential Revision: https://phabricator.services.mozilla.com/D13906

--HG--
extra : moz-landing-system : lando
2018-12-11 19:22:26 +00:00
Ted Campbell
57f49debb6 Bug 1511672 - Fix dependent base lookups in AsyncInvoker.h r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D13633

--HG--
extra : moz-landing-system : lando
2018-12-06 16:34:17 +00:00
Sylvestre Ledru
ad75e912fb Bug 1512961 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D14060

--HG--
extra : moz-landing-system : lando
2018-12-10 19:23:16 +00:00
Alex Gaynor
80387730b1 Bug 1512455 - removed some dead code from the IPDL compiler; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D13922

--HG--
extra : moz-landing-system : lando
2018-12-06 20:27:04 +00:00
Nika Layzell
e1e08d3d11 Bug 1512085 - Don't overlap IDs between content and middleman process, r=bhackett
Differential Revision: https://phabricator.services.mozilla.com/D13763
2018-12-05 10:18:46 -05:00
Nika Layzell
c82214c322 Bug 1509362 - Don't crash when constructing actor during content shutdown, r=jld
When shutting down a content process, we call `Close` on the
`IToplevelProtocol`. This causes the MessageChannel to be `Close`-ed,
which in turn sends a `GOODBYE_MESSAGE`:
https://searchfox.org/mozilla-central/rev/876022232b15425bb9efde189caf747823b39567/ipc/glue/MessageChannel.cpp#2852

This message is intercepted on the I/O thread in the content process,
before any code is informed in content, and used to set the
`mChannelState` property to `ChannelClosing`:
https://searchfox.org/mozilla-central/rev/876022232b15425bb9efde189caf747823b39567/ipc/glue/MessageChannel.cpp#1176

Once this state has been set, which is performed as soon as the
message is received, whether or not other messages have been processed
yet, no messages can be sent back to the parent process. This is
usually what causes the 'Too late to send/recv' message spam in the
console, as we're still trying to send messages at this time.

Usually this is fine - the message send fails, but we gracefully
recover, and the process begins shutting down like normal.
Unfortunately, child actor constructors currently have code
automatically generated in them which causes a process crash if the
send fails. As it's impossible for the main thread to know that the
channel has been closed ahead of time (due to this happening
out-of-band), we can then cause random content process crashes
during shutdown due to actor construction.

Unfortunately, we can't just destroy the actor, as our caller may
(and often do) depend on the actor reference they gave us still being valid
after calling Send*Constructor. Fortunately, if a message send failed, it means
we're in the process of being shut down.

This patch handles this by ignoring ctor send errors, and treating them like
messages which successfully were queued to send, but got lost due to the other
side hanging up. The actor will be gracefully destroyed in DestroySubtree when
its manager is destroyed.

Differential Revision: https://phabricator.services.mozilla.com/D12695
2018-12-05 10:18:41 -05:00
Nika Layzell
b4954ede43 Bug 1500944 - Part 1: Store the set of active WindowGlobalParent objects in ChromeBrowsingContext, r=farre
This allows getting the set of all window globals for a given browsing context.
This is less useful at the moment as the active window global is not exposed as
such. That will be added as a follow-up.

Differential Revision: https://phabricator.services.mozilla.com/D9393
2018-12-05 10:18:33 -05:00
Nika Layzell
4e07a0c5f9 Bug 1487249 - Part 3: Add the WindowGlobal actor representing a single window global, r=bzbarsky
This actor can be used for communicating with individual frames, without
depending on walking the tree in the content process.

This is not yet complete. No tests have been written for it, the
WindowGlobalParent objects need to be exposed to chrome JS, and a form of JS
actors should be installed under them.

In addition, BrowsingContextChrome objects should be updated to allow access to
the current WindowGlobalParent in that context.

Differential Revision: https://phabricator.services.mozilla.com/D4623
2018-12-05 10:18:31 -05:00
Nika Layzell
8791515adb Bug 1487249 - Part 2: Add a new PInProcess actor to manage intra-thread actors, r=mccr8
This will be useful as a basis for asynchronous actors which would like to exist
both when crossing the process boundary (managed by PContent), and when
displaying an in-process window.

Differential Revision: https://phabricator.services.mozilla.com/D4622
2018-12-05 10:18:29 -05:00
Nika Layzell
54f24a9804 Bug 1487249 - Part 1: Allow MessageChannel objects to be created within a thread, r=mccr8
To create a more generic interface for interacting both within the main thread
of the parent process and between the parent and child processes, it would be
nice to support IPDL actors within the main thread of the parent process. This
requires the underlying MessageChannel actor to support intra-thread links.

This change adds support for intra-thread links to the underlying MessageChannel
object using ThreadLink, and an extra boolean flag.

Differential Revision: https://phabricator.services.mozilla.com/D4620
2018-12-05 10:18:28 -05:00
Andrea Marchesini
7f4916b08b Bug 1508310 - Implement Report-to header support - part 6 - Remove endpoints, r=smaug 2018-12-01 21:26:09 +01:00
Andrea Marchesini
ace9fa800a Bug 1508310 - Implement Report-to header support - part 4 - IPC to get endpoint from content process, r=smaug 2018-12-01 21:26:09 +01:00
Jan Varga
811dea257a Bug 1511468 - make OnChannelReceivedMessage unconditionally defined; r=froydnj 2018-11-30 22:23:30 +01:00
Tooru Fujisawa
7983faeb5d Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
Benjamin Bouvier
a7f1d173a0 Bug 1511383: Update vim modelines after clang-format; r=sylvestre
- modify line wrap up to 80 chars; (tw=80)
- modify size of tab to 2 chars everywhere; (sts=2, sw=2)

--HG--
extra : rebase_source : 7eedce0311b340c9a5a1265dc42d3121cc0f32a0
extra : amend_source : 9cb4ffdd5005f5c4c14172390dd00b04b2066cd7
2018-11-30 16:39:55 +01:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Ted Campbell
119fd6e9b9 Bug 1506475 - Add JS::AutoSuppressWarningReporter. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D11586

--HG--
extra : moz-landing-system : lando
2018-11-30 04:01:10 +00:00
Razvan Maries
77d87d9972 Merge mozilla-central to autoland. a=merge on a CLOSED TREE 2018-11-30 05:13:14 +02:00
Razvan Maries
d696b8eb57 Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE 2018-11-29 23:46:52 +02:00
Michael Froman
b6e960b34c Bug 1498624 - pt2 - Implement Win sandbox for RDD process. r=bobowen
Differential Revision: https://phabricator.services.mozilla.com/D13101

--HG--
extra : moz-landing-system : lando
2018-11-29 17:02:16 +00:00
Jed Davis
42c1262dfd Bug 1474991 - Add new and improved performance telemetry for child process launching. r=mccr8,mconley,janerik
This patch adds some telemetry histograms:

* CONTENT_PROCESS_LAUNCH_IS_SYNC - boolean, true if the content process
was launched synchronously (blocking the main thread)

* CONTENT_PROCESS_SYNC_LAUNCH_MS - the time consumed by sync launch;
the main thread will be busy or blocked for this entire time

* CONTENT_PROCESS_LAUNCH_TOTAL_MS - the total time elapsed from the
start of async content process launch until the launch promise is
resolved and the ContentParent can be sent IPDL messages

* CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS - the time consumed on the parent
process main thread during async content process launch; typically this
is due to ContentParent::Init.

* CHILD_PROCESS_LAUNCH_MS - for any kind of Gecko child process
(including plugins, GPU, etc.), the time taken in the common process
launch code (which is run off-main-thread)

The probes restricted to async content process launch don't have "async"
in the name because that will eventually become the only kind of content
process launch.

Depends on D8943

Differential Revision: https://phabricator.services.mozilla.com/D8944

--HG--
extra : moz-landing-system : lando
2018-11-28 20:42:33 +00:00
Jed Davis
4fe96e3d18 Bug 1446161 - Asynchronously launch preallocated content processes using MozPromise. r=mccr8
There are several layers to this patch:

1. GeckoChildProcessHost now exposes a promise that's resolved when
the process handle is available (or rejected if launch failed), as a
nonblocking alternative to LaunchAndWaitForProcessHandle.

2. ContentParent builds on this with the private method
LaunchSubprocessAsync and the public method PreallocateProcessAsync;
synchronous launch continues to exist for the regular on-demand launch
path, for the time being.

3. PreallocatedProcessManager now uses async launch, and handles the new
"launch in progress" state appropriately.

Depends on D8942

Differential Revision: https://phabricator.services.mozilla.com/D8943

--HG--
extra : moz-landing-system : lando
2018-11-28 20:42:31 +00:00
Jed Davis
231d5adb97 Bug 1446161 - Remove the earlier attempt at async launch. r=spohl,mccr8
The first attempt at async launch tried to hide the asynchrony inside
IPC, by making the process seem to be launched enough to construct new
channels and send it messages, and lazily blocking on the pid/handle.
Unfortunately, in practice we wind up needing the pid/handle immediately,
and this requirement is too deeply embedded in IPC for that to be viable.

(The alternative that will be used instead -- exposing process launch via
an explicitly asynchronous promise interface -- is made simpler by
Project Fission's upcoming rewrite of how the DOM requests new content
processes.)

Depends on D8941

Differential Revision: https://phabricator.services.mozilla.com/D8942

--HG--
extra : moz-landing-system : lando
2018-11-28 20:42:24 +00:00
Sylvestre Ledru
ef05004811 Bug 1503537 - Get rid of the pdfium & mortar code r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D10352

--HG--
extra : moz-landing-system : lando
2018-11-28 19:31:21 +00:00
Ehsan Akhgari
ca162bee20 Bug 1508472 - Part 4: Fourth batch of comment fix-ups in preparation for the tree reformat r=sylvestre
This is a best effort attempt at ensuring that the adverse impact of
reformatting the entire tree over the comments would be minimal.  I've used a
combination of strategies including disabling of formatting, some manual
formatting and some changes to formatting to work around some clang-format
limitations.

Differential Revision: https://phabricator.services.mozilla.com/D13193

--HG--
extra : moz-landing-system : lando
2018-11-28 09:16:55 +00:00
Ehsan Akhgari
e8df714b7c Bug 1509555 - Part 3: Remove reporting of tracker statistics to docshell which was added for fastblock r=valentin,baku
Depends on D12829

Differential Revision: https://phabricator.services.mozilla.com/D12830

--HG--
extra : moz-landing-system : lando
2018-11-27 08:55:36 +00:00
Ehsan Akhgari
15bf246249 Bug 1509555 - Part 1: Remove the telemetry probe for measuring the rate at which popular analytics providers get blocked by fastblock r=baku,valentin
Differential Revision: https://phabricator.services.mozilla.com/D12828

--HG--
extra : moz-landing-system : lando
2018-11-27 08:50:36 +00:00
Gabriele Svelto
566f669d07 Bug 1509450 - Remove unnecessary inclusions of ContentParent.h and ContentChild.h r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D12728

--HG--
extra : moz-landing-system : lando
2018-11-26 14:49:44 +00:00
Andreea Pavel
74cd2bf73e Backed out 8 changesets (bug 1446161, bug 1487287, bug 1488993, bug 1474991, bug 1496608) for very frequent automation.py crashes on a CLOSED TREE
Backed out changeset 8b1f88d7bfeb (bug 1487287)
Backed out changeset 8fa5e81ad801 (bug 1487287)
Backed out changeset 7a480161fa0f (bug 1474991)
Backed out changeset 80116391b7fe (bug 1446161)
Backed out changeset 1bdf64b29121 (bug 1446161)
Backed out changeset 37bf52f0e9cf (bug 1446161)
Backed out changeset 8ede2ebe6b7a (bug 1496608)
Backed out changeset cea43bc88c7a (bug 1488993)
2018-11-27 08:53:18 +02:00
Jed Davis
15e4267fae Bug 1487287 - Move child process launch off the I/O thread. r=mccr8
Launching processes takes enough time that we should avoid blocking the
parent process's IPC I/O thread for it; it's less bad for responsiveness
than blocking the main thread, but it's not good.

On Windows we need to use a dedicated thread, because the sandbox isn't
thread-safe and it asserts that the same thread is used for every
launch.  Otherwise, a thread pool is used.

Depends on D8945

Differential Revision: https://phabricator.services.mozilla.com/D8946

--HG--
extra : moz-landing-system : lando
2018-11-22 00:06:22 +00:00
Jed Davis
8782927375 Bug 1487287 - Set profiler env vars in child processes without side-effecting the parent process. r=mstange
We can directly set environment variables for the child process on
all platforms now, instead of changing the parent's environment and
inheriting the changes.  This simplifies memory management, but more
importantly it's necessary for thread safety to allow launching
processes from a thread pool.

Depends on D8944

Differential Revision: https://phabricator.services.mozilla.com/D8945

--HG--
extra : moz-landing-system : lando
2018-11-22 00:06:20 +00:00
Jed Davis
4a53512dbe Bug 1474991 - Add new and improved performance telemetry for child process launching. r=mccr8,mconley,janerik
This patch adds some telemetry histograms:

* CONTENT_PROCESS_LAUNCH_IS_SYNC - boolean, true if the content process
was launched synchronously (blocking the main thread)

* CONTENT_PROCESS_SYNC_LAUNCH_MS - the time consumed by sync launch;
the main thread will be busy or blocked for this entire time

* CONTENT_PROCESS_LAUNCH_TOTAL_MS - the total time elapsed from the
start of async content process launch until the launch promise is
resolved and the ContentParent can be sent IPDL messages

* CONTENT_PROCESS_LAUNCH_MAINTHREAD_MS - the time consumed on the parent
process main thread during async content process launch; typically this
is due to ContentParent::Init.

* CHILD_PROCESS_LAUNCH_MS - for any kind of Gecko child process
(including plugins, GPU, etc.), the time taken in the common process
launch code (which is run off-main-thread)

The probes restricted to async content process launch don't have "async"
in the name because that will eventually become the only kind of content
process launch.

Depends on D8943

Differential Revision: https://phabricator.services.mozilla.com/D8944

--HG--
extra : moz-landing-system : lando
2018-11-22 00:06:17 +00:00
Jed Davis
dececcae11 Bug 1446161 - Asynchronously launch preallocated content processes using MozPromise. r=mccr8
There are several layers to this patch:

1. GeckoChildProcessHost now exposes a promise that's resolved when
the process handle is available (or rejected if launch failed), as a
nonblocking alternative to LaunchAndWaitForProcessHandle.

2. ContentParent builds on this with the private method
LaunchSubprocessAsync and the public method PreallocateProcessAsync;
synchronous launch continues to exist for the regular on-demand launch
path, for the time being.

3. PreallocatedProcessManager now uses async launch, and handles the new
"launch in progress" state appropriately.

Depends on D8942

Differential Revision: https://phabricator.services.mozilla.com/D8943

--HG--
extra : moz-landing-system : lando
2018-11-22 00:35:53 +00:00
Jed Davis
5379e8a375 Bug 1446161 - Remove the earlier attempt at async launch. r=spohl,mccr8
The first attempt at async launch tried to hide the asynchrony inside
IPC, by making the process seem to be launched enough to construct new
channels and send it messages, and lazily blocking on the pid/handle.
Unfortunately, in practice we wind up needing the pid/handle immediately,
and this requirement is too deeply embedded in IPC for that to be viable.

(The alternative that will be used instead -- exposing process launch via
an explicitly asynchronous promise interface -- is made simpler by
Project Fission's upcoming rewrite of how the DOM requests new content
processes.)

Depends on D8941

Differential Revision: https://phabricator.services.mozilla.com/D8942

--HG--
extra : moz-landing-system : lando
2018-11-22 00:06:14 +00:00
Valentin Gosu
e823bab3cc Bug 1487964 - Do not report resource-timing subdocument loads triggered by that subdocument r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D9503

--HG--
extra : moz-landing-system : lando
2018-11-21 16:28:20 +00:00
Cosmin Sabou
79b7d9fe91 Backed out changeset 395b95afd795 (bug 1487964) for mochitest failures on test_resource_timing_nocors. 2018-11-21 17:14:29 +02:00
Valentin Gosu
a80d7bf63e Bug 1487964 - Do not report resource-timing subdocument loads triggered by that subdocument r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D9503

--HG--
extra : moz-landing-system : lando
2018-11-17 19:30:36 +00:00
Aaron Klotz
c084ff85e4 Bug 1508468: Convert launcher process to use mozilla::Result for error propagation; r=mhowell
This patch does a couple of things:

* I added a new class, |WindowsError| to WinHeaderOnlyUtils. The idea here is
  to encapsulate as much of the Windows error gamut as possible into one class.
  Since Win32 errors and NTSTATUS codes may both be encoded as HRESULTs, I
  used the latter type to store the error. It also contains functions for
  converting between the various error code formats, as well as stringification
  via FormatMessage.

* I added |LauncherError| which also includes file and line number information,
  which I believe will be important for launcher process failure diagnostics.
  (Instantiation of LauncherErrors obviously must be done via macros to capture
  __FILE__ and __LINE__).

* I then converted all of the launcher process code (and its few depenencies) to
  utilize this new functionality via the new |LauncherResult| type.

* If we detect an error in one of the top-level launcher process functions, we
  pass it to |HandleLauncherError| for processing. This function currently just
  throws up a |MessageBox| like the previous code did, with the intention of
  enhancing that further in the future.

Differential Revision: https://phabricator.services.mozilla.com/D12365

--HG--
extra : moz-landing-system : lando
2018-11-20 23:49:36 +00:00
Narcis Beleuzu
b18d13eb15 Backed out changeset be8383028bc0 (bug 1508468) for windows build bustage
--HG--
extra : rebase_source : b86532be5abaafa05a3b96a99bff5eccecbb3b20
2018-11-21 01:30:52 +02:00
Aaron Klotz
6be5837934 Bug 1508468: Convert launcher process to use mozilla::Result for error propagation; r=mhowell
This patch does a couple of things:

* I added a new class, |WindowsError| to WinHeaderOnlyUtils. The idea here is
  to encapsulate as much of the Windows error gamut as possible into one class.
  Since Win32 errors and NTSTATUS codes may both be encoded as HRESULTs, I
  used the latter type to store the error. It also contains functions for
  converting between the various error code formats, as well as stringification
  via FormatMessage.

* I added |LauncherError| which also includes file and line number information,
  which I believe will be important for launcher process failure diagnostics.
  (Instantiation of LauncherErrors obviously must be done via macros to capture
  __FILE__ and __LINE__).

* I then converted all of the launcher process code (and its few depenencies) to
  utilize this new functionality via the new |LauncherResult| type.

* If we detect an error in one of the top-level launcher process functions, we
  pass it to |HandleLauncherError| for processing. This function currently just
  throws up a |MessageBox| like the previous code did, with the intention of
  enhancing that further in the future.

Differential Revision: https://phabricator.services.mozilla.com/D12365

--HG--
extra : moz-landing-system : lando
2018-11-20 22:12:53 +00:00
Brindusan Cristian
26aca84b41 Backed out changeset 0ff2e89a1819 (bug 1508468) for windows build bustages on ntstatus.h. CLOSED TREE 2018-11-20 23:08:11 +02:00