New issue
Advanced search Search tips

Issue 704027 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug

Blocking:
issue 554299



Sign in to add a comment

Support base::OnceClosure as the parameter of TaskRunner::PostTask()

Project Member Reported by tzik@chromium.org, Mar 22 2017

Issue description

This is a issue to track OnceClosure support in TaskRunner::PostTask().

The motivation to use base::OnceClosure instead of base::Closure is to achieve predictable destruction sequence of Callback object and its bound parameters.
As of 2017-03-22, following code snippet has a race:

struct Foo : base::RefCounted<Foo> {};
void Bar(Foo*);
base::PostTask(FROM_HERE, base::Bind(&Foo, RetainedRef(new Foo)));

It's unpredictable on which thread the `Foo` instance is destroyed, since the temporary Callback object created by Bind leaves a reference on the original thread, and another reference is brought to the foreign thread. The destruction happens when the last reference to the Callback is released on either thread.

OnceCallback is a solution for this. Since it has unique ownership for its internal storage, it will be destroyed always on the destination thread.

There are in-flight or planned changes to mitigate or solve the situation.
 * Add assertions to RefCount to detect unsafe ref count bump. http://crrev.com/2666423002
   - All data race bugs detected by the assertions are fixed.
   - Needs a gadget to opt-out from the assertion, which is under discussion on the CL.
 * Support OnceCallback on PostTaskAndReply. http://crrev.com/2657603004
   - This is the behavior changing part. In the previous code, both of the `post` part and `reply` part of the task are destroyed on the original thread, and in the proposed new code, `post` part is destroyed on the destination thread.
   - There were only few caller that depends on the destruction thread of `post` part, and all of them are fixed already.
 * Make base::Closure parameter on PostTask() pass-by-value. http://crrev.com/2726523002
   - This is a mitigation of the issue. In the previous code, there was no way to call PostTask without leaving a reference to the original thread. And in the new code, the caller can pass the callback with its ownership.
 * Support OnceCallback on PastTask http://crrev.com/2637843002
   - The next step to the migration. After this CL, the user can pass base::OnceClosure to PostTask as well as base::Closure.


 

Comment 1 by tzik@chromium.org, Mar 22 2017

Blocking: 554299
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 29 2017

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

commit 070c8ffb44d04075bd7400691a2325cb6233558a
Author: tzik <tzik@chromium.org>
Date: Wed Mar 29 05:28:12 2017

Pass Callback to TaskRunner by value and consume it on invocation

This is a preparation CL for http://crrev.com/2637843002, which replaces
the Callback parameter of TaskRunner::PostTask with OnceCallback.
This one replaces the passed-by-const-ref Callback parameter of
TaskRunner::PostTask() with pass-by-value.

With the pass-by-const-ref manner as the old code does, we can't avoid
leaving a reference to the callback object on the original thread. That
is, the callback object may be destroyed either on the target thread or
the original thread. That's problematic when a non-thread-safe object is
bound to the callback.

Pass-by-value and move() in this CL mitigate the nondeterminism: if the
caller of TaskRunner::PostTask() passes the callback object as rvalue,
TaskRunner::PostTask() leaves no reference on the original thread.
I.e. the reference is not left if the callback is passed directly from
Bind(), or passed with std::move() as below.

  task_runner->PostTask(FROM_HERE, base::Bind(&Foo));

  base::Closure cb = base::Bind(&Foo);
  task_runner->PostTask(FROM_HERE, std::move(cb));

Otherwise, if the caller passes the callback as lvalue, a reference to
the callback is left on the original thread as we do in the previous code.
I.e. a reference is left if the callback is passed from other non-temporary
variable.

  base::Closure cb = base::Bind(&Foo);
  task_runner->PostTask(FROM_HERE, cb);

This is less controversial part of http://crrev.com/2637843002. This CL
is mainly to land it incrementally.

TBR=shrike@chromium.org
BUG= 704027 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/critical_closure.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/critical_closure_internal_ios.mm
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/deferred_sequenced_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/deferred_sequenced_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/message_loop/incoming_task_queue.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/message_loop/incoming_task_queue.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/message_loop/message_loop_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/message_loop/message_loop_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/sequenced_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/sequenced_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/post_task.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/post_task.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/task.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/task.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/task_scheduler.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/task_scheduler_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/task_scheduler/task_scheduler_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/null_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/null_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/scoped_task_scheduler.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_mock_time_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_mock_time_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_pending_task.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_pending_task.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_simple_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/test/test_simple_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/post_task_and_reply_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/post_task_and_reply_impl_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/sequenced_worker_pool.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/sequenced_worker_pool.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/worker_pool.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/worker_pool.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/worker_pool_posix.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/worker_pool_posix.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/threading/worker_pool_win.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/base/trace_event/memory_dump_manager_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/cc/test/ordered_simple_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/cc/test/ordered_simple_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/cc/tiles/image_controller.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/cc/tiles/image_controller_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/after_startup_task_utils.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/after_startup_task_utils.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/after_startup_task_utils_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/chrome_content_browser_client.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/chromeos/login/users/mock_user_manager.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chrome/browser/memory/tab_manager_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chromecast/base/system_time_change_notifier_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chromeos/dbus/blocking_method_caller.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chromeos/dbus/blocking_method_caller_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/chromeos/tpm/tpm_token_info_getter_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/components/history/core/browser/history_service.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/components/history/core/browser/history_service.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/components/memory_pressure/memory_pressure_monitor_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/components/subresource_filter/content/browser/content_ruleset_service_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/components/user_manager/fake_user_manager.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/browser_thread_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/browser_thread_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/compositor/reflector_impl_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/dom_storage/dom_storage_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/dom_storage/dom_storage_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/browser/startup_task_runner_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/child/worker_thread_registry.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/child/worker_thread_registry.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/public/browser/browser_thread.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/public/browser/content_browser_client.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/public/browser/content_browser_client.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/public/child/worker_thread.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/renderer/categorized_worker_pool.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/renderer/categorized_worker_pool.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/renderer/render_thread_impl_browsertest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/content/test/test_blink_web_unit_test_support.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/ios/chrome/app/application_delegate/app_state.mm
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/ios/web/public/web_thread.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/ios/web/web_thread_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/ios/web/web_thread_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/media/base/fake_single_thread_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/media/base/fake_single_thread_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/media/cast/test/skewed_single_thread_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/media/cast/test/skewed_single_thread_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/net/quic/test_tools/test_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/net/quic/test_tools/test_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/remoting/base/auto_thread_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/remoting/base/auto_thread_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/remoting/client/plugin/pepper_main_thread_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/remoting/client/plugin/pepper_main_thread_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/WebTaskRunner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_delegate_for_test.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_delegate_for_test.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_for_test.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_for_test.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/test/lazy_scheduler_message_loop_delegate_for_tests.cc
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/third_party/WebKit/Source/platform/scheduler/test/lazy_scheduler_message_loop_delegate_for_tests.h
[modify] https://crrev.com/070c8ffb44d04075bd7400691a2325cb6233558a/ui/accelerated_widget_mac/window_resize_helper_mac.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Apr 5 2017

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

commit 6e42784f92a0b66a3eae584358ec4a8778bffa33
Author: tzik <tzik@chromium.org>
Date: Wed Apr 05 10:13:21 2017

Migrate base::TaskRunner from Closure to OnceClosure

After this CL, TaskRunner::PostTask and its family can take OnceClosure
in addition to Closure.

Most of the changes are mechanical replacement of Closure with OnceClosure
on TaskRunner family. Others are:
 - Limit CriticalClosure from Closure to OnceClosure as no caller call
   the resulting callback more than once
 - Add several PostTaskAndReplyWithResult overloads for old Callback
   version, for compatibility. (in base/task_scheduler/post_task.h)
 - Update SequencedWorkerPool implementation for OnceClosure.
 - Update task handling code in app_state.mm for OnceClosure, which is
   needed to bring OnceClosure into a ObjC block.

BUG= 704027 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/critical_closure.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/critical_closure_internal_ios.mm
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/deferred_sequenced_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/deferred_sequenced_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/message_loop/incoming_task_queue.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/message_loop/incoming_task_queue.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/message_loop/message_loop_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/message_loop/message_loop_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/post_task_and_reply_with_result_internal.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/sequenced_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/sequenced_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/post_task.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/post_task.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/task.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/task.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/task_scheduler.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/task_scheduler_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/task_scheduler/task_scheduler_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/null_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/null_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/scoped_task_scheduler.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_mock_time_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_mock_time_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_pending_task.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_pending_task.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_simple_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/test/test_simple_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/post_task_and_reply_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/post_task_and_reply_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/post_task_and_reply_impl_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/sequenced_worker_pool.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/sequenced_worker_pool.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/worker_pool.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/worker_pool.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/worker_pool_posix.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/worker_pool_posix.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/threading/worker_pool_win.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/base/trace_event/memory_dump_manager_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/cc/test/ordered_simple_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/cc/test/ordered_simple_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/cc/tiles/image_controller_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/after_startup_task_utils.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/after_startup_task_utils.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/after_startup_task_utils_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/chrome_content_browser_client.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/chromeos/login/users/mock_user_manager.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chrome/browser/memory/tab_manager_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chromecast/base/system_time_change_notifier_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chromeos/dbus/blocking_method_caller_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/chromeos/tpm/tpm_token_info_getter_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/components/history/core/browser/history_service.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/components/history/core/browser/history_service.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/components/memory_pressure/memory_pressure_monitor_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/components/subresource_filter/content/browser/content_ruleset_service_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/components/user_manager/fake_user_manager.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/browser_thread_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/browser_thread_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/compositor/reflector_impl_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/dom_storage/dom_storage_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/dom_storage/dom_storage_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/browser/startup_task_runner_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/child/worker_thread_registry.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/child/worker_thread_registry.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/public/browser/browser_thread.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/public/browser/content_browser_client.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/public/browser/content_browser_client.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/public/child/worker_thread.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/renderer/categorized_worker_pool.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/renderer/categorized_worker_pool.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/renderer/render_thread_impl_browsertest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/content/test/test_blink_web_unit_test_support.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/ios/chrome/app/application_delegate/app_state.mm
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/ios/web/public/web_thread.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/ios/web/web_thread_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/ios/web/web_thread_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/media/base/fake_single_thread_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/media/base/fake_single_thread_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/media/cast/test/skewed_single_thread_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/media/cast/test/skewed_single_thread_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/net/quic/chromium/test_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/net/quic/chromium/test_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/remoting/base/auto_thread_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/remoting/base/auto_thread_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/remoting/client/plugin/pepper_main_thread_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/remoting/client/plugin/pepper_main_thread_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/WebTaskRunner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_delegate_for_test.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_delegate_for_test.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_for_test.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_for_test.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/test/lazy_scheduler_message_loop_delegate_for_tests.cc
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/third_party/WebKit/Source/platform/scheduler/test/lazy_scheduler_message_loop_delegate_for_tests.h
[modify] https://crrev.com/6e42784f92a0b66a3eae584358ec4a8778bffa33/ui/accelerated_widget_mac/window_resize_helper_mac.cc

Comment 4 by tzik@chromium.org, Apr 5 2017

Status: Fixed (was: Assigned)

Comment 5 by fdoray@chromium.org, Feb 16 2018

Cc: robliao@chromium.org gab@chromium.org fdoray@chromium.org danakj@chromium.org tzik@chromium.org
 Issue 675327  has been merged into this issue.

Sign in to add a comment