This CL changes the shared memory handle switch logic to allow the
browser process to retain its handle in order to properly dispose of it
when the child process assumes ownership and/or terminates.
On Windows, in particular, we are seeing evidence that these handles are
being leaked and/or perhaps being inadvertently being mapped twice.
Ownership of the handles is shared between the child process host and
the child process launcher/helper, which operate asynchronously to one
another. As such, the handles are managed as refcounted data.
Note: The handles are not accessed asynchronously. Either the launcher
(via command line) or the host (via IPC) passes the handle to the child,
but their destruction order is non-deterministic.
This is a reland of commit f9fc4f9fc7
It fixes a bug the original CL which prevented the histogram shared
memory from being passed to the browser child process via IPC when
passing it via shared memory is disabled.
Original change's description:
> Change-Id: Ie4d17ad7ce0d29218f926f137dda61d94983d22a
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6098050
> Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
> Commit-Queue: Roger McFarlane <rogerm@chromium.org>
> Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
> Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1408794}
Bug: 351671612, 40109064, 40818143
Change-Id: I638e7b47acd35188782588abf425ed867bb71dc1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6187263
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Commit-Queue: Roger McFarlane <rogerm@chromium.org>
Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1409683}
This reverts commit f9fc4f9fc7.
Reason for revert: LUCI Bisection has identified this change as the cause of a test failure. See the analysis: https://ci.chromium.org/ui/p/chromium/bisection/test-analysis/b/5717672433025024
Sample build with failed test: https://ci.chromium.org/b/8725182265256599073
Affected test(s):
ninja://chrome/test:browser_tests/AdHeuristicTPCDBrowserTestSkipTopLevelTrialGrant.CookieBlocked
ninja://chrome/test:browser_tests/AdHeuristicTPCDBrowserTestSkipTrialGrant.CookieBlocked
ninja://chrome/test:browser_tests/EligibilityServiceBrowserTest.EligibilityChanged_NetworkContextUpdated/All.1
ninja://chrome/test:browser_tests/RequestStorageAccessForWithFirstPartySetsBrowserTest.AllowedByStorageAccessTypeUma_kStorageAccessOnly
Original change's description:
> Improve management of command-line passed shared memory handle.
>
> This CL changes the shared memory handle switch logic to allow the
> browser process to retain its handle in order to properly dispose of it
> when the child process assumes ownership and/or terminates.
>
> On Windows, in particular, we are seeing evidence that these handles are
> being leaked and/or perhaps being inadvertently being mapped twice.
>
> Ownership of the handles is shared between the child process host and
> the child process launcher/helper, which operate asynchronously to one
> another. As such, the handles are managed as refcounted data.
>
> Note: The handles are not accessed asynchronously. Either the launcher
> (via command line) or the host (via IPC) passes the handle to the child,
> but their destruction order is non-deterministic.
>
> Bug: 351671612, 40109064, 40818143
> Change-Id: Ie4d17ad7ce0d29218f926f137dda61d94983d22a
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6098050
> Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
> Commit-Queue: Roger McFarlane <rogerm@chromium.org>
> Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
> Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1408794}
Bug: 351671612, 40109064, 40818143
Change-Id: Ifcdf686f4db214d44c35f952e8e481acefc0819f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6174715
Reviewed-by: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
Reviewed-by: Keishi Hattori <keishi@chromium.org>
Owners-Override: Minoru Chikamune <chikamune@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1408841}
This CL changes the shared memory handle switch logic to allow the
browser process to retain its handle in order to properly dispose of it
when the child process assumes ownership and/or terminates.
On Windows, in particular, we are seeing evidence that these handles are
being leaked and/or perhaps being inadvertently being mapped twice.
Ownership of the handles is shared between the child process host and
the child process launcher/helper, which operate asynchronously to one
another. As such, the handles are managed as refcounted data.
Note: The handles are not accessed asynchronously. Either the launcher
(via command line) or the host (via IPC) passes the handle to the child,
but their destruction order is non-deterministic.
Bug: 351671612, 40109064, 40818143
Change-Id: Ie4d17ad7ce0d29218f926f137dda61d94983d22a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6098050
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Commit-Queue: Roger McFarlane <rogerm@chromium.org>
Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1408794}
Files are moved from //base/mac to //base/apple as they support both Mac and iOS.
Peer process validation will introduce more platform-specific APIs and
behavior into both the server and client. This refactoring makes it
easier to identify which code is platform-specific and which platform it
belongs to without having to search for the nearest `#if`.
The platform-specific subclasses of `MachPortRendezvousServerBase` are
renamed to include the platform. This makes it easier to see which code
in the implementation belongs to each platform, and better reflects the fact they provide different interfaces to callers.
`MachPortRendezvousClient` is split into a platform-independent base
class containing the API and implementation logic that is common to both
platforms. The platform-specific interfaces are exposed as static
methods on each subclass. These will diverge further when peer
validation is introduced.
Change-Id: I5435e91571eba7f751cc1d76262c1cf2fb2066a2
Bug: 362302761
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5905986
Commit-Queue: Mark Rowe <markrowe@chromium.org>
Reviewed-by: Alex Gough <ajgo@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1365816}
This is a reland of 18905f7828
Reland changes: The change was reverted because
ChildProcessLancher::Notify was not called after a policy error,
causing the launch to hang. Now, the FinishStartSandboxedProcess
callback will always run ensuring that Notify will always run, too.
Also, a test was added to show that a failed launch will not hang.
Original change's description:
> Parallel process launching
>
> This change adds support for parallel process launching on Windows.
>
> Background: Processes are launched on a launcher thread, but this thread
> can become bottlenecked if launching multiple processes simultaneously.
> Most of the time spent in the launcher thread is observed to be in the
> CreateProcess call.
>
> This change makes process launching async by moving the target creation
> work to the thread pool. This frees up the launcher thread so it can
> accept tasks more quickly, and multiple target creations can now run in
> parallel.
>
> --enable-features=WinSboxParallelProcessLaunch
>
> Bug: 1499551
> Tests: sbox_integration_tests ParallelLaunchTest.*
> Change-Id: I7add6a6a68d31868a41fb433b223695ff36d8769
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5015584
> Reviewed-by: Will Harris <wfh@chromium.org>
> Commit-Queue: Ben Bamesberger <benb@microsoft.com>
> Reviewed-by: Alex Gough <ajgo@chromium.org>
> Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
> Reviewed-by: Bo Liu <boliu@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1348194}
content_browsertests
BrowserChildProcessObserverBrowserTest.LaunchPreSpawnFailed
Bug: 40287847
Change-Id: Ia200ec065a9540f9d4790e2c6e0ae98178fdf747
Tests: sbox_integration_tests ParallelLaunchTest.*,
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5852357
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Will Harris <wfh@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Reviewed-by: Alex Gough <ajgo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1365065}
This reverts commit 18905f7828.
Reason for revert: suspected cause of https://issues.chromium.org/362910001
Original change's description:
> Parallel process launching
>
> This change adds support for parallel process launching on Windows.
>
> Background: Processes are launched on a launcher thread, but this thread
> can become bottlenecked if launching multiple processes simultaneously.
> Most of the time spent in the launcher thread is observed to be in the
> CreateProcess call.
>
> This change makes process launching async by moving the target creation
> work to the thread pool. This frees up the launcher thread so it can
> accept tasks more quickly, and multiple target creations can now run in
> parallel.
>
> --enable-features=WinSboxParallelProcessLaunch
>
> Bug: 1499551
> Tests: sbox_integration_tests ParallelLaunchTest.*
> Change-Id: I7add6a6a68d31868a41fb433b223695ff36d8769
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5015584
> Reviewed-by: Will Harris <wfh@chromium.org>
> Commit-Queue: Ben Bamesberger <benb@microsoft.com>
> Reviewed-by: Alex Gough <ajgo@chromium.org>
> Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
> Reviewed-by: Bo Liu <boliu@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1348194}
Bug: 1499551, 362910001
Change-Id: I0f1a61945b48d4877d044a988f35b58a05076ac5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5836201
Reviewed-by: Bo Liu <boliu@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
Cr-Commit-Position: refs/heads/main@{#1350864}
This change adds support for parallel process launching on Windows.
Background: Processes are launched on a launcher thread, but this thread
can become bottlenecked if launching multiple processes simultaneously.
Most of the time spent in the launcher thread is observed to be in the
CreateProcess call.
This change makes process launching async by moving the target creation
work to the thread pool. This frees up the launcher thread so it can
accept tasks more quickly, and multiple target creations can now run in
parallel.
--enable-features=WinSboxParallelProcessLaunch
Bug: 1499551
Tests: sbox_integration_tests ParallelLaunchTest.*
Change-Id: I7add6a6a68d31868a41fb433b223695ff36d8769
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5015584
Reviewed-by: Will Harris <wfh@chromium.org>
Commit-Queue: Ben Bamesberger <benb@microsoft.com>
Reviewed-by: Alex Gough <ajgo@chromium.org>
Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
Reviewed-by: Bo Liu <boliu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1348194}
This change adds timing histograms to ChildProcessLauncher on Windows.
The first measurement records the total launch time from launch
requested to Notify() on the UI thread. The second measurement records
the time it takes from the launch request to start running on the
launcher thread.
Bug: 40287847
Change-Id: I0c56af891fb45e25ad7611dfe3af2a06aaf816bc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5699425
Reviewed-by: Alex Gough <ajgo@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Caitlin Fischer <caitlinfischer@google.com>
Commit-Queue: Ben Bamesberger <benb@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1334515}
Using base::shared_memory::AddToLaunchParameters() to
send config in a shmem at child process creation.
Related changes:
- Some reordering of operations in early startup to ensure dependencies
are in place.
- TraceStartupConfig holds a perfetto::TraceConfig instead of
a base::TraceConfig
Change-Id: Ic10f5e7cda39cd953bda5f08b617c4e4568a7773
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5581006
Reviewed-by: Mikhail Khokhlov <khokhlov@google.com>
Reviewed-by: Eric Seckler <eseckler@chromium.org>
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1320942}
The canonical bug format is TODO(crbug.com/<id>). TODOs of the
following forms will all be migrated to the new format:
- TODO(crbug.com/<old id>)
- TODO(https://crbug.com/<old id>)
- TODO(crbug/<old id>)
- TODO(crbug/monorail/<old id>)
- TODO(<old id>)
- TODO(issues.chromium.org/<old id>)
- TODO(https://issues.chromium.org/<old id>)
- TODO(https://issues.chromium.org/u/1/issues/<old id>)
- TODO(bugs.chromium.org/<old id>)
Bug id mapping is sourced from go/chrome-on-buganizer-prod-issues.
See go/crbug-todo-migration for details.
#crbug-todo-migration
Bug: b/321899722
Change-Id: Ifd155bbeff882ea939f74cf8b8f847f42847940b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5468156
Reviewed-by: Darryl James <dljames@chromium.org>
Owners-Override: Alison Gale <agale@chromium.org>
Commit-Queue: Alison Gale <agale@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1290297}
DBusSchedqosStateHandler caches the latest process priority in its
internal map because base::Process::GetPriority() is a synchronous API.
To prevent leak of cache, processes need to call
`base::Process::InitializePriority()` and
`base::Process::ForgetPriority()` explicitly. The browser process itself
and processes launched by `content::ChildProcessLauncher` support the
calls.
The examples of processes not launched by
`content::ChildProcessLauncher` are the second zygote process in sandbox
and broker processes launched by
`sandbox::policy::SandboxLinux::StartBrokerProcess()`. But they don't
update their scheduler settings anyway.
Bug: b:306246041
Change-Id: I2afe68fea1cbe981fced9520691a55a49d7e80a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5294979
Reviewed-by: Brian Geffon <bgeffon@chromium.org>
Commit-Queue: Shin Kawamura <kawasin@google.com>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1279444}
This is a reland of commit b80a478f9f
Previously win_asan failed ContentBrowserTest.RendererCrashCallStack
as the stack was not being sent out on stderr. The Sanitizer
machinery in llvm only allows a single output handle to be provided
and the change caused a file rather than stderr to be used. This
is fixed by adding `--enable-logging=stderr` as an option that
content_shell understands (it does the same thing as chrome, and only
logs to stderr and any internal debuglog). Passing this argument from
the test launcher now allows the test to pass.
Original change's description:
> Allow child processes to inherit logging file handle on Windows
>
> Child processes on Windows cannot always open their log file
> (for instance if they cannot determine the user-data-dir) making
> configuration of logging complicated. Child processes also need
> a sandbox exception to open their log files.
>
> This CL replaces logging related flags to pass a handle to children
> in cases where a file would have been passed, allowing a later CL
> to remove the sandbox rule allowing direct access to the log file.
>
> If the browser is run with `--enable-logging --log-file=file`,
> children will now be run with `--enable-logging=handle --log-file=N`.
> It is not possible to mix stderr logging with file logging (it will
> still work for the browser process), but this already does not work
> in official builds as std handles are not passed into children.
>
> This also allows the CHROME_LOG_FILE to be useful again for renderer
> processes if Chrome is run using:
>
> $env:CHROME_LOG_FILE="d:\temp\env-log.log"
> chrome.exe --enable-logging
>
> the browser will inspect the env var and provide a handle to that
> file when starting renderer processes.
>
> Running the browser with --enable-logging=handle directly is not
> supported, these flags should only be provided by the browser when
> starting child processes.
>
> Tests: Manually tested results https://docs.google.com/document/d/1Hq37YReGM91fmcCcqkRbjtjwP62FVH_zpZtfpSPlLeY/edit?usp=sharing
> Bug: 328285906, 40270808
> Change-Id: Id79731b2d35ab3ee58f6c1612990bdec1485da68
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5337202
> Commit-Queue: Alex Gough <ajgo@chromium.org>
> Reviewed-by: Greg Thompson <grt@chromium.org>
> Reviewed-by: Peter Boström <pbos@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1272538}
Bug: 328285906, 40270808
Change-Id: I4a4f994e8afa22da84c81c02e9e786b94eec9aad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5373414
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Greg Thompson <grt@chromium.org>
Reviewed-by: Peter Boström <pbos@chromium.org>
Commit-Queue: Alex Gough <ajgo@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1274336}
This reverts commit b80a478f9f.
Reason for revert: ContentBrowserTest.RendererCrashCallStack failing
on asan builds.
Original change's description:
> Allow child processes to inherit logging file handle on Windows
>
> Child processes on Windows cannot always open their log file
> (for instance if they cannot determine the user-data-dir) making
> configuration of logging complicated. Child processes also need
> a sandbox exception to open their log files.
>
> This CL replaces logging related flags to pass a handle to children
> in cases where a file would have been passed, allowing a later CL
> to remove the sandbox rule allowing direct access to the log file.
>
> If the browser is run with `--enable-logging --log-file=file`,
> children will now be run with `--enable-logging=handle --log-file=N`.
> It is not possible to mix stderr logging with file logging (it will
> still work for the browser process), but this already does not work
> in official builds as std handles are not passed into children.
>
> This also allows the CHROME_LOG_FILE to be useful again for renderer
> processes if Chrome is run using:
>
> $env:CHROME_LOG_FILE="d:\temp\env-log.log"
> chrome.exe --enable-logging
>
> the browser will inspect the env var and provide a handle to that
> file when starting renderer processes.
>
> Running the browser with --enable-logging=handle directly is not
> supported, these flags should only be provided by the browser when
> starting child processes.
>
> Tests: Manually tested results https://docs.google.com/document/d/1Hq37YReGM91fmcCcqkRbjtjwP62FVH_zpZtfpSPlLeY/edit?usp=sharing
> Bug: 328285906, 40270808
> Change-Id: Id79731b2d35ab3ee58f6c1612990bdec1485da68
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5337202
> Commit-Queue: Alex Gough <ajgo@chromium.org>
> Reviewed-by: Greg Thompson <grt@chromium.org>
> Reviewed-by: Peter Boström <pbos@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1272538}
Bug: 328285906, 40270808
Change-Id: Ib1cc6f5438ac4bae5cccfd7b83f9acebdd017594
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5373504
Owners-Override: Daniel Cheng <dcheng@chromium.org>
Auto-Submit: Alex Gough <ajgo@chromium.org>
Reviewed-by: Alex Gough <ajgo@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1273128}
Child processes on Windows cannot always open their log file
(for instance if they cannot determine the user-data-dir) making
configuration of logging complicated. Child processes also need
a sandbox exception to open their log files.
This CL replaces logging related flags to pass a handle to children
in cases where a file would have been passed, allowing a later CL
to remove the sandbox rule allowing direct access to the log file.
If the browser is run with `--enable-logging --log-file=file`,
children will now be run with `--enable-logging=handle --log-file=N`.
It is not possible to mix stderr logging with file logging (it will
still work for the browser process), but this already does not work
in official builds as std handles are not passed into children.
This also allows the CHROME_LOG_FILE to be useful again for renderer
processes if Chrome is run using:
$env:CHROME_LOG_FILE="d:\temp\env-log.log"
chrome.exe --enable-logging
the browser will inspect the env var and provide a handle to that
file when starting renderer processes.
Running the browser with --enable-logging=handle directly is not
supported, these flags should only be provided by the browser when
starting child processes.
Tests: Manually tested results https://docs.google.com/document/d/1Hq37YReGM91fmcCcqkRbjtjwP62FVH_zpZtfpSPlLeY/edit?usp=sharing
Bug: 328285906, 40270808
Change-Id: Id79731b2d35ab3ee58f6c1612990bdec1485da68
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5337202
Commit-Queue: Alex Gough <ajgo@chromium.org>
Reviewed-by: Greg Thompson <grt@chromium.org>
Reviewed-by: Peter Boström <pbos@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1272538}
This CL refactors where logging related command line switches
are propagated to child processes. Rather than being done by
process specific hosts these flags are centralized in the
child process launcher helper. This change may allow logging
from more process types but otherwise should have no functional
changes.
Affected flags:
--disable-logging
--enable-logging
--log-file
--log-level
--v
--vmodule
Bug: 328285906
Change-Id: Ib387839cb3f296b28cdecdc30b30572adf94c268
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5347180
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Alex Gough <ajgo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1269097}
Reuse the MachPortRendezvous code for iOS, but each content
process launch will instantiate its own server and there will
only be one set of ports registered for it. This avoids the
bootstrap code that isn't used on iOS and binds the mach send
port to the one passed across the initial XPC connection.
The motivation behind this is that we've been running the
rendezvous code on Mac for some time and we'd ideally like
to have common code passing the initial shared memory and
ports across on MacOS and iOS.
Introduce the handling of command line args and the initial
bootstrap mach send port across the initial XPC connection
with the renderer.
In summary, process launches and content renderers in the simulator.
It is untested on a device since I do not have a setup
that allows that.
Bug: 40254930
Change-Id: I0bdd770f46ec35b63b9b1d2d20afd4e38734f252
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5328946
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Ali Juma <ajuma@chromium.org>
Reviewed-by: Mark Rowe <markrowe@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1267128}
This CL extracts the serialization and deserialization of shared memory regions to/from command-line parameters into a helper module. The common code is sourced from:
* base/metrics/field_trial.cc
* base/metrics/histogram_shared_memory.cc
This CL also refactors field_trial.cc and histogram_shared_memory.cc,
and their clients, to use the histogram shared memory switch helper
functions.
Bug: 1028263
Change-Id: Ib044c66f71e66fb8b393a9b5cd3bd17236036521
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5254137
Reviewed-by: Brendon Tiszka <tiszka@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Mark Seaborn <mseaborn@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Roger McFarlane <rogerm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1261301}
This CL, behind a flag, updates the create/share flow for the histogram shared memory region between the browser process and its child processes. This allows the child processes to immediately allocate metrics from the shared memory region instead of waiting until the first browser/child IPC.
For the renderer, the shared memory region and allocator are created before the child is launched. This was already the case for the other child processes.
In the browser, the child process hosts expose the shared memory region to the ChildProcessLauncher/Helper so that the handle to the shared memory region passed to the child process on launch.
In the child, the metrics service initializes its histogram allocator to use the shared memory, on seeing the --histogram-shared-memory-region parameter.
See:
* go/improve-chrome-subprocess-metrics
Bug: 1028263, 1290457
Change-Id: I3dc7d59c42b6588dbf8ea31ca05254470d0a8b30
Low-Coverage-Reason: COVERAGE_UNDERREPORTED (crbug.com/1512202)
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4568968
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Camille Lamy <clamy@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Mark Seaborn <mseaborn@chromium.org>
Commit-Queue: Roger McFarlane <rogerm@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1251503}
On Lacros, Chrome is not always the broker. Therefore,
ContentBrowserClient provides a BindBrowserControlInterface to provide
an interface for communication between external processes and the
browser process. However, in ipcz mode, using this function will cause
the child process to be unable to establish a connection with the
browser process.
Bug: 1447576
Change-Id: I0d27cfe88e7d94685787c7936a510d5652a4c849
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4929586
Commit-Queue: Bo Liu <boliu@chromium.org>
Reviewed-by: Bo Liu <boliu@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1209418}
The previous change (https://crrev.com/c/4757080) added the crash key
for the browser crashes only. This adds a command line switch to pass
the seed version form the browser process to child processes. Child
processes use the command line switch value to report the value
of the variations seed version crash key.
Bug: 1445117
Change-Id: Idcb159933a41cc0436eb552fe252fd53f93cf4eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4900181
Commit-Queue: Ziad Youssef <ziadyoussef@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Bo Liu <boliu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1206435}
With this CL, we enable field trial initialization which is required
for the content_browsertests which use multiprocess in the simulator.
For the base/* code,
!BUILDFLAG(IS_IOS) -> BUILDFLAG(USE_BLINK)
BUILDFLAG(IS_MAC) -> BUILDFLAG(IS_APPLE) && BUILDFLAG(USE_BLINK)
For content/browser/* since this code will only be use for multi-
process, the ios conditional has been removed.
credit: dtapuska@ noticed that this was disabled and suggested the
approach.
Bug: 1413706
Change-Id: I3e2d238ab85798c39e991b1217adaa010722bc5c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4480670
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Ian Vollick <vollick@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1136734}
Now that the circular dependency between browser_thread.h and
browser_task_traits.h has been resolved, browser_thread.h can include
browser_task_traits.h and provide a default ({}) for BrowserTaskTraits.
A bunch of includes in other files needed to be updated.
Bug: 1424788, 1026641, 1429044
Change-Id: Ibc44e495f743eee029fb45832b1084f03ca47555
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4402191
Reviewed-by: Gabriel Charette <gab@chromium.org>
Owners-Override: Gabriel Charette <gab@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1127199}
This CL adds a sequence checker that verifies if a command line
is being modified, it is done in on its owning sequence, since
multiple sequences modifying the same instance is unsafe.
Note: This CL does not make base::CommandLine entirely safe
as simultaneous reads across multiple sequences when the
owning sequence is performing a modification is still unsafe,
but adding a full sequence checker on every base::CommandLine
instance caused too many DCHECKs to be reasonable to land,
for now.
The one remaining instance when writes are done to a command
line instance on multiple sequences was updated to detach from
the current sequence in the constructor, all other instances
have already been fixed in previous CLs.
This CL also fixes a comment that had accidentally migrated
to the wrong place in the header file.
BUG=1344948
Change-Id: I2e2250ce739222ea143b5021f383720614d4bb90
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4241879
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1112451}
Renderer processes use the MOJO_SEND_INVITATION_FLAG_UNTRUSTED_PROCESS
flag on their mojo invitation to ensure security constraints related to
Windows handles are respected by mojo.
Before this CL, this flag was being set in the renderer process host
code unconditionally, on all platforms.
This CL moves the decision on whether or not to set this flag to the
SandboxedProcessLauncherDelegate implementation specific to the
sandboxed process.
This allows more flexibility going forward about applying this
mitigation to more sandboxed process types.
This CL makes no functional changes as the same flag is just being
set in a different place, and still only for renderers, but now just
on Windows.
This CL also contains some cleanups for header files to specify
which interface is being implemented by which class, as well as
passing a const ref base::CommandLine to the Windows sandboxed
process launcher delegate to make it clear that it does not
modify the command line in the constructor.
BUG=1419544
Change-Id: I1df21dc0663a6cf541ab85fb08e66484b8155e96
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4291989
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1109927}
The Named Platform Channel code manipulates the command line
but the command_line_ member is logically bound to the
launcher thread.
base::CommandLine will soon dcheck for unsafe accesses such
as these.
This CL moves all accesses of the command line member to the
launcher thread, so that there is no potential for a race.
BUG=1344948
Change-Id: I055cda5bf1c392c803a4e4202219e6dd86a13177
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4250178
Reviewed-by: Bo Liu <boliu@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1105447}
- Rudimentary implementation that allows touch events and keyboard
events to be delivered to a renderer.
- For each RenderWidgetHostViewIOS we create a BrowserCompositorIOS
which will attach the layers to a parent ui::Compositor. This
architecture is similar to how Mac works and is sufficient for
the initial prototype now.
- Provide a stub for a ChildProcessLauncher for iOS since we do not
have fork everything runs in process for now.
Bug: 1411704
Change-Id: I5f498dff7866f0c728bb593eb993235afb94a143
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4221595
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1101174}
This includes a number of cleanups to remove sharp edges from
child_process_launcher_helper:
1. Not all processes are launched with base::LaunchProcess, but
base::LaunchOptions* is passed to every function. This has led to
misunderstandings; for example Android adds
`file_data_->additional_remapped_fds` to `options->fds_to_remap`, but
Android never uses `options` and so this is pointless (Android
has to use the app zygote and so it cannot use `options` or even
remap FDs).
In addition, on Linux, processes launched with a zygote do not
use base::LaunchProcess().
This CL adds an IsUsingLaunchOptions() to the
child_process_launcher_helper* implementations and passes nullptr
as `options` if IsUsingLaunchOptions() returns false.
2. `ChildProcessLauncherFileData::additional_remapped_fds` is removed
entirely. It didn't work on Android as mentioned above, and nobody
else uses it now that the Lacros startup data logic has changed.
3. `ChildProcessLauncherFileData::files_to_preload` is no longer
#ifdef'd for Mac as it is ignored. (Unclear why it is ignored)
4. DCHECKs that `delegate_->GetEnvironment()` is empty on Linux when
using the zygote, it isn't supported, though it could eventually be.
Change-Id: If805117bdf888cbcc21432aab665c66ea31fa3ae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4141863
Reviewed-by: Luc Nguyen <lucnguyen@google.com>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Bo Liu <boliu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1091562}
Without this change it is possible to have a sequence as follows:
1. Request termination of child process
2. Destroy sandbox_policy_
3. Additional FIDL calls that fail because of missing sandbox_policy_
3. Process actually terminates
Moving the sandbox_policy object to the child process object forces
that sequence to be:
1. Request termination of child process
2. Wait for termination to complete, during which additional FIDL calls
will be successful
3. Destroy sandbox_policy_
Bug: 1369665
Change-Id: Idceb021f95f35de6cd8dad23a233ea3a73a06b86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4009118
Auto-Submit: Bryant Chandler <bryantchandler@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1068907}
Adds a few additional bits of state to the MojoIpcz transport
implementation, in particular to track relative trust level across the
transport independent of broker/non-broker status.
Also introduces new Mojo invitation API flags to indicate when the
caller is inviting a process (or accepting an invitation as a process)
that is trustworthy, e.g. an elevated Windows process.
Combined these changes allow trusted non-broker nodes to transfer
pre-duplicated handles to brokers, rendering elevated processes
fully functional in a network of MojoIpcz processes. This turns out
to be necessary for existing elevated process usage in Chrome due
to how ipcz communication is bootstrapped.
TEST=browser_tests for ImageWriterUtilityClient* on Windows with MojoIpcz enabled
Bug: 1374611
Change-Id: Id9a6056e239c6ec0f258cd053489fd1771e3c850
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3963307
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Alex Gough <ajgo@chromium.org>
Commit-Queue: Ken Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/main@{#1061775}
This CL passes BrowserInitParams to Utility process as Memory FD.
FD map is contained in BrowserChildProcessHost::DataToPassAsFD with
files_to_preload.
This CL also changes files_to_preload field to limit only on posix
platforms.
Note that files_to_preload value was only used from posix even without
this CL, so it won't affect the behavior.
This change aims to let utility process be able to obtain ash dir from BrowserInitParams. This feature will be implemented in the later CL.
This is a part of resource file sharing work and doesn't affect the
behavior for now.
Bug: 1253280
Change-Id: Ibd92217974e2e763c58ab71af85ee50a13d2c03e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3599393
Reviewed-by: Bo Liu <boliu@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Eriko Kurimoto <elkurin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1001877}
This is a reland of 893230151e
The previous version of this CL mistakenly removed a default
case statement for an 'int' field, so an expected compile error
was not generated but instead an early return was skipped.
Original change's description:
> Add launch failure notifications to BrowserChildProcessObserver
>
> Also, fix a bug where the Windows sandbox would return SBOX_ALL_OK
> even if base::LaunchProcess failed, and launch_result was not
> being set for elevated processes.
>
> Add reporting of GetLastError on Windows in the
> ChildProcessTerminationInfo for failed launches.
>
> Also, clean up some switch statements to remove default cases.
>
> BUG=1280005
>
> Change-Id: I1001fc950b8456b78ef1a9a985ca07cf288e8a04
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3340072
> Reviewed-by: John Abd-El-Malek <jam@chromium.org>
> Commit-Queue: Will Harris <wfh@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#952182}
Bug: 1280005, 1280541
Change-Id: I81f3354e9870a455644e77144a40c4acbdf14ebe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3345720
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#952667}
This reverts commit 893230151e.
Reason for revert: "browser_tests" failing on builder "Linux ChromiumOS MSan Tests"
Original change's description:
> Add launch failure notifications to BrowserChildProcessObserver
>
> Also, fix a bug where the Windows sandbox would return SBOX_ALL_OK
> even if base::LaunchProcess failed, and launch_result was not
> being set for elevated processes.
>
> Add reporting of GetLastError on Windows in the
> ChildProcessTerminationInfo for failed launches.
>
> Also, clean up some switch statements to remove default cases.
>
> BUG=1280005
>
> Change-Id: I1001fc950b8456b78ef1a9a985ca07cf288e8a04
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3340072
> Reviewed-by: John Abd-El-Malek <jam@chromium.org>
> Commit-Queue: Will Harris <wfh@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#952182}
Bug: 1280005, 1280541
Change-Id: I368d0c89ca6911cb4145bcec13edf2ad8bd4d829
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3344787
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Kush Sinha <sinhak@chromium.org>
Reviewed-by: Aya Elsayed <ayaelattar@chromium.org>
Commit-Queue: Kush Sinha <sinhak@chromium.org>
Owners-Override: Kush Sinha <sinhak@chromium.org>
Cr-Commit-Position: refs/heads/main@{#952303}
Also, fix a bug where the Windows sandbox would return SBOX_ALL_OK
even if base::LaunchProcess failed, and launch_result was not
being set for elevated processes.
Add reporting of GetLastError on Windows in the
ChildProcessTerminationInfo for failed launches.
Also, clean up some switch statements to remove default cases.
BUG=1280005
Change-Id: I1001fc950b8456b78ef1a9a985ca07cf288e8a04
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3340072
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#952182}
For case where remote process is running elevated or in another
session the code would fallback to using a named pipe.
This CL changes this to be explicit by passing a null process
handle into the SendInvitation call and updating mojo to
cater for this gracefully
BUG=1268087
Change-Id: Ie40836ece3f246e475cb55154ee6fb404bd230d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3308391
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#948875}
This is logged once per renderer launch. It gives the time from when
the browser started the process launch, to time the renderer message
loop starts.
BUG=1271338
TEST=none
Change-Id: Ifb466ac86423057ea2ac5fd1523c2b4c70efaab4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3297170
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/main@{#946029}
This refactors FieldTrial to simplify its public API and unify it
across all platforms so every public method has the same signature on
every platform.
This simplifies the call sites in the content layer by removing
per-platform specific call sites in favor of unified calls and moving
some of the logic done in //content to //base. In particular, command
line switches used only by FieldTrial have been moved to //base, from
//content. They are also no longer passed as parameters to the public
API of FieldTrial.
In addition, this adds supports for shared-memory distribution of
FieldTrial configuration to child processes on Fuchsia. This is
achieved by duplicating the handle for the VMO backing the FieldTrial
configuration in the parent process and passing it to the child
process startup handles.
This also changes the Windows child process launcher logic to make use
of the provided LaunchOptions argument, rather than initializing a new
object.
Finally, this cleans up header usage in //base/metrics/field_trial.h
and fixes missing includes in various parts of the code base.
Bug: 752368, 1262370
Change-Id: I9b0836b467790f1da96d85fe16a6e2c6d334f709
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3230582
Commit-Queue: Fabrice de Gans <fdegans@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Primiano Tucci <primiano@chromium.org>
Reviewed-by: Theresa <twellington@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Will Harris <wfh@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#938902}
This CL was generated by using tools/git/move_source_file.py to change
the includes for those files:
base/bind_post_task.h
base/deferred_sequenced_task_runner.h
base/post_task_and_reply_with_result_internal.h
base/sequenced_task_runner.h
base/sequenced_task_runner_helpers.h
base/single_thread_task_runner.h
base/task_runner.h
base/task_runner_util.h
base/updateable_sequenced_task_runner.h
Then formatted using "git cl format". DEPS files were fixed with a
simple search and replace script.
Bug: 1255932
Change-Id: I0d9b5ddd9260fde5e4581e6c6e0080bdb0ed2c44
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3209175
Reviewed-by: Gabriel Charette <gab@chromium.org>
Owners-Override: Gabriel Charette <gab@chromium.org>
Commit-Queue: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/main@{#929867}
This reverts commit 881a65d746.
Reason for revert: breaks graphics on some Chrome OS devices.
Original change's description:
> Move Renderer processes off Service Manager
>
> Migrates Renderer processes to use the simpler ChildProcess IPC
> interface in place of deprecated Service Manager IPC.
>
> Support for preloaded files in service manifest definitions is
> effectively removed in favor of explicit parameters on
> BrowserChildProcessHost and ChildProcessLauncher. The only use case (V8
> snapshot files) has been migrated from manifest data to a simple map
> definition, and it's used during renderer and utility process
> launching.
>
> After this CL, only utility processes remain to be moved off of
> Service
> Manager IPC.
>
> NOPRESUBMIT=true
>
> Bug: 977637
> Change-Id: I1d8205cb73ead904aa21b85d6cbee11cb3fc84f5
> Tbr: boliu@chromium.org
> Tbr: yucliu@chromium.org
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1918375
> Reviewed-by: Martin Barbella <mbarbella@chromium.org>
> Reviewed-by: Robert Sesek <rsesek@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Commit-Queue: Ken Rockot <rockot@google.com>
> Cr-Commit-Position: refs/heads/master@{#717920}
NOPRESUBMIT=true
Bug: 1028852
Bug: 977637
Tbr: rockot@google.com
Tbr: boliu@chromium.org
Tbr: yucliu@chromium.org
Tbr: mbarbella@chromium.org
Tbr: rsesek@chromium.org
Tbr: avi@chromium.org
Change-Id: I30a52d825cc156b066d7c2ec455c8fb588a408af
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1948663
Commit-Queue: Shuhei Takahashi <nya@chromium.org>
Reviewed-by: Shuhei Takahashi <nya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#720939}
This is a reland of 45cef59a78
Original change's description:
> Move Renderer processes off Service Manager
>
> Migrates Renderer processes to use the simpler ChildProcess IPC
> interface in place of deprecated Service Manager IPC.
>
> Support for preloaded files in service manifest definitions is
> effectively removed in favor of explicit parameters on
> BrowserChildProcessHost and ChildProcessLauncher. The only use case (V8
> snapshot files) has been migrated from manifest data to a simple map
> definition, and it's used during renderer and utility process launching.
>
> After this CL, only utility processes remain to be moved off of Service
> Manager IPC.
>
> NOPRESUBMIT=true
>
> Bug: 977637
> Change-Id: I1d8205cb73ead904aa21b85d6cbee11cb3fc84f5
> Tbr: boliu@chromium.org
> Tbr: yucliu@chromium.org
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1918375
> Reviewed-by: Martin Barbella <mbarbella@chromium.org>
> Reviewed-by: Robert Sesek <rsesek@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Commit-Queue: Ken Rockot <rockot@google.com>
> Cr-Commit-Position: refs/heads/master@{#717920}
NOPRESUBMIT=true
Bug: 977637
Change-Id: I9dd89104626ef73f81abd93c8a35310a2d6997a2
Tbr: boliu@chromium.org
Tbr: yucliu@chromium.org
Tbr: mbarbella@chromium.org
Tbr: avi@chromium.org
Tbr: rsesek@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1930104
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Ken Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/master@{#718334}