New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 678155 link

Starred by 7 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 695727

Blocking:
issue 675631



Sign in to add a comment

Allow mojo interfaces/bindings to live on a SequencedTaskRunner

Project Member Reported by sa...@chromium.org, Jan 4 2017

Issue description

SequencedTaskRunner seems to provide the mutual exclusion properties necessary for mojo bindings. Supporting this would allow mojo bindings to live on a blocking pool sequence. See  issue 676960  for an example where that would be useful.

Implementation-wise, this gets a bit complicated if we want to support sync IPCs to/from a sequence, since it would require sequence-local storage for SyncHandleRegistry. Also missing is an equivalent to MessageLoop::DestructionObserver.
 
Cc: gab@chromium.org robliao@chromium.org fdoray@chromium.org
Components: Internals>TaskScheduler

Comment 2 by gab@chromium.org, Jan 5 2017

Blocking: 675631
Components: -Internals>Mojo Internals>Mojo>Bindings
Project Member

Comment 4 by bugdroid1@chromium.org, Jan 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc

commit 14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc
Author: sammc <sammc@chromium.org>
Date: Mon Jan 30 22:07:33 2017

Remove the MessageLoop::DestructionObserver from mojo bindings.

Mojo connection error handlers running during browser shutdown have been
a cause of several crashes due to the error handlers running after their
dependency (e.g. a KeyedService or a RenderProcessHost) has shut down.
From a brief survey of users of StrongBinding, none appear to perform
any tear-down that is necessary during process shutdown. Further, the
vast majority of threads (and thread pools) run for close to the life of
the process, so any these connection error handlers will generally only
be triggered during shutdown. Thus, in production this causes slower,
less-stable browser shutdowns without any real benefit.

Additionally, SequencedTaskRunner does not have a MessageLoop and is not
expected to support a similar destruction observer. Thus, to improve
compatibility with future support for running mojo bindings on
SequencedTaskRunners, this removes MessageLoop::DestructionObserver from
mojo bindings.

BUG= 678155 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2633053002
Cr-Commit-Position: refs/heads/master@{#447085}

[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/android_webview/native/aw_contents_client_bridge.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/ash/common/cast_config_controller.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/ash/common/media_controller.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/chrome/browser/media/router/presentation_service_delegate_observers.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/browser/battery_status/battery_monitor_integration_browsertest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/browser/browser_main_loop.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/browser/gpu/browser_gpu_channel_host_factory.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/browser/gpu/browser_gpu_channel_host_factory.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/browser/renderer_host/offscreen_canvas_surface_manager_unittest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/child/service_worker/service_worker_dispatcher_unittest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/renderer/gpu/compositor_external_begin_frame_source.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/renderer/media/render_media_log_unittest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/content/renderer/presentation/presentation_dispatcher.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/device/bluetooth/device_unittest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/device/usb/mojo/device_impl_unittest.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/gpu/ipc/service/gpu_channel_manager.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/ipc/ipc_test_base.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/mojo/android/system/watcher_impl.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/mojo/public/cpp/bindings/interface_endpoint_client.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/mojo/public/cpp/bindings/strong_associated_binding.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/mojo/public/cpp/bindings/strong_binding.h
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/services/service_manager/public/cpp/lib/interface_registry.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/services/service_manager/standalone/context.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/services/video_capture/device_factory_media_to_mojo_adapter.cc
[modify] https://crrev.com/14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc/services/video_capture/test/mock_device_test.h

Comment 5 by gab@chromium.org, Jan 31 2017

This is awesome! Thanks Sam :)! This will help tremendously in the ongoing transition to TaskScheduler.

PS: Are you or anyone from Mojo @ BlinkOn this week by any chance? Would love to chat in person about opportunities here.

Comment 6 by tibell@chromium.org, Jan 31 2017

Both Sam and I from the Sydney-part of the Mojo team are at BlinkOn.

Comment 7 by sa...@chromium.org, Feb 24 2017

Blockedon: 695727
Project Member

Comment 8 by bugdroid1@chromium.org, Mar 1 2017

Labels: merge-merged-2987
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/85b81b128baf1166e8e604077e3da81fc2ffc1c3

commit 85b81b128baf1166e8e604077e3da81fc2ffc1c3
Author: Sam McNally <sammc@chromium.org>
Date: Wed Mar 01 00:40:17 2017

Remove the MessageLoop::DestructionObserver from mojo bindings.

Mojo connection error handlers running during browser shutdown have been
a cause of several crashes due to the error handlers running after their
dependency (e.g. a KeyedService or a RenderProcessHost) has shut down.
From a brief survey of users of StrongBinding, none appear to perform
any tear-down that is necessary during process shutdown. Further, the
vast majority of threads (and thread pools) run for close to the life of
the process, so any these connection error handlers will generally only
be triggered during shutdown. Thus, in production this causes slower,
less-stable browser shutdowns without any real benefit.

Additionally, SequencedTaskRunner does not have a MessageLoop and is not
expected to support a similar destruction observer. Thus, to improve
compatibility with future support for running mojo bindings on
SequencedTaskRunners, this removes MessageLoop::DestructionObserver from
mojo bindings.

BUG= 678155 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2633053002
Cr-Commit-Position: refs/heads/master@{#447085}
(cherry picked from commit 14e09ca425d1ee9572f69d29cdd00cff1a1b2bfc)

Review-Url: https://codereview.chromium.org/2720403003 .
Cr-Commit-Position: refs/branch-heads/2987@{#726}
Cr-Branched-From: ad51088c0e8776e8dcd963dbe752c4035ba6dab6-refs/heads/master@{#444943}

[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/android_webview/native/aw_contents_client_bridge.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/ash/common/cast_config_controller.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/ash/common/media_controller.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/chrome/browser/media/router/presentation_service_delegate_observers.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/browser/battery_status/battery_monitor_integration_browsertest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/browser/browser_main_loop.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/browser/gpu/browser_gpu_channel_host_factory.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/browser/gpu/browser_gpu_channel_host_factory.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/browser/renderer_host/offscreen_canvas_surface_manager_unittest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/child/service_worker/service_worker_dispatcher_unittest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/renderer/gpu/compositor_external_begin_frame_source.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/renderer/media/render_media_log_unittest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/content/renderer/presentation/presentation_dispatcher.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/device/bluetooth/device_unittest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/device/usb/mojo/device_impl_unittest.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/gpu/ipc/service/gpu_channel_manager.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/ipc/ipc_test_base.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/mojo/android/system/watcher_impl.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/mojo/public/cpp/bindings/interface_endpoint_client.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/mojo/public/cpp/bindings/strong_associated_binding.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/mojo/public/cpp/bindings/strong_binding.h
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/services/service_manager/public/cpp/lib/interface_registry.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/services/service_manager/standalone/context.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/services/video_capture/device_factory_media_to_mojo_adapter.cc
[modify] https://crrev.com/85b81b128baf1166e8e604077e3da81fc2ffc1c3/services/video_capture/test/mock_device_test.h

Comment 9 by noel@chromium.org, Mar 1 2017

◕‿◕

Comment 10 by gab@chromium.org, May 4 2017

Hey Sam, what's missing here? Do you need SequenceLocalStorage or could you do without it? If we provide that could you complete the work required for this?

As many things are moving to TaskScheduler, it's a big hinderance that many services are forced to use base::CreateSingleThreadTaskRunnerWithTraits() instead of base::CreateSequencedTaskRunnerWithTraits() because of Mojo, the latter API is waaayyyy preferred.

Thanks,
Gab and the TaskScheduler team :)
I was waiting for SequenceLocalStorage; that's the only blocker that I know of.

I do have a CL floating around that works-around the lack of SequenceLocalStorage with maps from base::SequenceToken and base::SequencedWorkerPool::SequenceToken to per-sequence instances with a thread-local for when neither token is set. I can try to get that landed in the mean time.

Comment 12 by gab@chromium.org, May 8 2017

Labels: -Pri-3 M-60 Pri-2
Ok, we hope to have SequenceLocalStorage at some point this summer (australian winter ;-)) but not immediately. If you think it'll be performant enough for your use case, please go ahead and land that. Getting Mojo to be sequence-friendly is a huge requirement for sequencification.

Comment 13 by gab@chromium.org, Jun 14 2017

Labels: -M-60 M-61
FYI, base::SequenceLocalStorageSlot and support for it for any thread bound to a MessageLoop or running in TaskScheduler just landed at r479458, all yours Sam. Please consider this high priority for M61 as it will be a blocker so much of the ongoing migration to TaskScheduler, thank you!

Comment 14 by sa...@chromium.org, Jun 20 2017

Status: Fixed (was: Started)

Comment 15 by gab@chromium.org, Jun 20 2017

Awesome thanks :)!! Is there a user of this that confirms this doesn't hit any ThreadTaskRunnerHandle::Get() or SingleThreadTaskRunner dependencies left behind?

Comment 16 by sa...@chromium.org, Jun 21 2017

r480731 migrates utility process users that hopped to a thread as a workaround. r481028 migrates the pref service.
Project Member

Comment 17 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1b223e58f3b21a754542a49d2109454101f8f997

commit 1b223e58f3b21a754542a49d2109454101f8f997
Author: Sam McNally <sammc@chromium.org>
Date: Wed Jun 21 00:49:29 2017

Remove unused includes in mojo bindings.

https://crrev.com/480682 left behind some includes no longer needed by
mojo bindings to avoid updating clients that relied on those transitive
includes in that CL. This removes those includes and updates those
clients.

TBR=piman@chromium.org,imcheng@chromium.org,emircan@chromium.org

Bug:  678155 
Change-Id: Id5ed5671bd58b8c91b3e7cb2edab827e819e1f5b
Reviewed-on: https://chromium-review.googlesource.com/541116
Commit-Queue: Sam McNally <sammc@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Cr-Commit-Position: refs/heads/master@{#481050}
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/chrome/gpu/gpu_arc_video_decode_accelerator.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/chrome/utility/media_router/dial_device_description_parser_impl.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/device/sensors/device_sensor_host.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/media/capture/video/fake_video_capture_device.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/mojo/public/cpp/bindings/lib/multiplex_router.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/services/video_capture/device_media_to_mojo_adapter.h
[modify] https://crrev.com/1b223e58f3b21a754542a49d2109454101f8f997/services/video_capture/service_impl.h

Sam: could you please also update the comments of bindings classes, interface_ptr.h/binding.h/etc., to reflect this change?

Thanks!

Comment 19 by vabr@chromium.org, Jul 3 2017

Also https://chromium.googlesource.com/chromium/src/+/master/docs/task_scheduler_migration.md needs an update in the very last section.

Comment 20 by gab@chromium.org, Jul 6 2017

Thanks, docs updated (in CQ).
Project Member

Comment 21 by bugdroid1@chromium.org, Jul 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93

commit d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93
Author: Sam McNally <sammc@chromium.org>
Date: Mon Jul 17 03:45:03 2017

Mojo: restrict user-provided task runners to SingleThreadTaskRunners.

Allowing user-provided SequencedTaskRunners does not provide a clear
benefit if they run on the same sequence and binding to a task runner
that is not sequenced with the current task runner is not threadsafe so
restrict user-provided task runners to SingleThreadTaskRunners that run
on the current thread.

Bug:  678155 
Change-Id: I5472e39f688f47a8abdda516a6e2902fe18eee36
Reviewed-on: https://chromium-review.googlesource.com/544717
Commit-Queue: Sam McNally <sammc@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Wu-Cheng Li <wuchengli@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Yuzhu Shen <yzshen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487024}
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/components/viz/host/host_frame_sink_manager.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/components/viz/host/host_frame_sink_manager.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/components/viz/service/frame_sinks/frame_sink_manager_impl.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/content/browser/compositor/surface_utils.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/content/browser/compositor/surface_utils.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/media/capture/video/chromeos/camera_hal_dispatcher_impl_unittest.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/BUILD.gn
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/README.md
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/associated_binding.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/associated_group_controller.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/associated_interface_ptr.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/binding.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/binding_set.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/connector.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/interface_endpoint_client.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/interface_endpoint_controller.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/interface_ptr.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/interface_request.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/associated_binding.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/associated_interface_ptr_state.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/associated_interface_ptr_state.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/binding_state.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/binding_state.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/connector.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/interface_ptr_state.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/interface_ptr_state.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/multiplex_router.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/multiplex_router.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.cc
[add] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/task_runner_helper.cc
[add] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/lib/task_runner_helper.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/pipe_control_message_proxy.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/sync_call_restrictions.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/sync_event_watcher.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/sync_handle_watcher.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/bindings/thread_safe_interface_ptr.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/README.md
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/simple_watcher.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/wait.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/wait.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/wait_set.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/mojo/public/cpp/system/wait_set.h
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/services/ui/gpu/gpu_main.cc
[modify] https://crrev.com/d482b4bc21a00db35ee1c9a29bb9f53cddcbdd93/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp

Sign in to add a comment