From 83c639f0493539896ac7c2e8db0ac93898955599 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 22 Apr 2015 10:07:37 -0700 Subject: [PATCH] Move blink scheduler implementation into a component R=jam@chromium.org,skyostil@chromium.org,rmcilroy@chromium.org BUG=477690 Review URL: https://codereview.chromium.org/1058873010 Cr-Commit-Position: refs/heads/master@{#326320} --- .gn | 1 + WATCHLISTS | 2 +- components/BUILD.gn | 7 + components/components_tests.gyp | 17 +++ components/scheduler/BUILD.gn | 56 ++++++++ components/scheduler/DEPS | 4 + {content/child => components}/scheduler/OWNERS | 0 components/scheduler/child/DEPS | 12 ++ .../scheduler/child}/OWNERS | 0 .../scheduler/child}/cancelable_closure_holder.cc | 6 +- .../scheduler/child}/cancelable_closure_holder.h | 10 +- .../scheduler/child}/child_scheduler.h | 20 +-- .../child}/nestable_single_thread_task_runner.h | 14 +- .../child}/nestable_task_runner_for_test.cc | 6 +- .../child}/nestable_task_runner_for_test.h | 6 +- .../scheduler/child}/null_idle_task_runner.cc | 10 +- components/scheduler/child/null_idle_task_runner.h | 33 +++++ .../scheduler/child}/null_worker_scheduler.cc | 13 +- .../scheduler/child}/null_worker_scheduler.h | 12 +- .../child}/prioritizing_task_queue_selector.cc | 6 +- .../child}/prioritizing_task_queue_selector.h | 16 +-- .../prioritizing_task_queue_selector_unittest.cc | 9 +- .../scheduler/child}/scheduler_helper.cc | 30 ++--- .../scheduler/child}/scheduler_helper.h | 23 ++-- .../scheduler/child}/scheduler_helper_unittest.cc | 147 ++++++++------------- .../child}/scheduler_message_loop_delegate.cc | 6 +- .../child}/scheduler_message_loop_delegate.h | 16 +-- .../child}/single_thread_idle_task_runner.cc | 16 +-- .../child}/single_thread_idle_task_runner.h | 10 +- .../scheduler/child}/task_queue_manager.cc | 14 +- .../scheduler/child}/task_queue_manager.h | 13 +- .../child}/task_queue_manager_perftest.cc | 10 +- .../child}/task_queue_manager_unittest.cc | 28 ++-- .../scheduler/child}/task_queue_selector.h | 14 +- .../scheduler/child}/test_time_source.cc | 6 +- .../scheduler/child}/test_time_source.h | 12 +- .../scheduler/child}/time_source.cc | 6 +- .../scheduler/child}/time_source.h | 14 +- .../scheduler/child}/web_scheduler_impl.cc | 8 +- .../scheduler/child}/web_scheduler_impl.h | 8 +- .../scheduler}/child/webthread_base.cc | 8 +- .../scheduler}/child/webthread_base.h | 16 +-- .../child}/webthread_impl_for_worker_scheduler.cc | 12 +- .../child}/webthread_impl_for_worker_scheduler.h | 25 ++-- ...webthread_impl_for_worker_scheduler_unittest.cc | 8 +- .../scheduler/child}/worker_scheduler.cc | 14 +- .../scheduler/child}/worker_scheduler.h | 18 +-- .../scheduler/child}/worker_scheduler_impl.cc | 12 +- .../scheduler/child}/worker_scheduler_impl.h | 18 +-- .../child}/worker_scheduler_impl_unittest.cc | 20 +-- components/scheduler/common/scheduler_switches.cc | 15 +++ components/scheduler/common/scheduler_switches.h | 16 +++ components/scheduler/renderer/DEPS | 15 +++ .../scheduler/renderer}/deadline_task_runner.cc | 6 +- .../scheduler/renderer}/deadline_task_runner.h | 16 +-- .../renderer}/deadline_task_runner_unittest.cc | 6 +- .../scheduler/renderer}/null_renderer_scheduler.cc | 13 +- .../scheduler/renderer}/null_renderer_scheduler.h | 12 +- .../scheduler/renderer}/renderer_scheduler.cc | 14 +- .../scheduler/renderer}/renderer_scheduler.h | 18 +-- .../scheduler/renderer}/renderer_scheduler_impl.cc | 34 ++--- .../scheduler/renderer}/renderer_scheduler_impl.h | 20 +-- .../renderer}/renderer_scheduler_impl_unittest.cc | 67 +++++----- .../webthread_impl_for_renderer_scheduler.cc | 10 +- .../webthread_impl_for_renderer_scheduler.h | 16 +-- ...bthread_impl_for_renderer_scheduler_unittest.cc | 19 +-- components/scheduler/scheduler.gni | 12 ++ components/scheduler/scheduler.gyp | 51 +++++++ components/scheduler/scheduler.gypi | 56 ++++++++ components/scheduler/scheduler_export.h | 29 ++++ content/browser/BUILD.gn | 1 + content/browser/DEPS | 10 +- .../renderer_host/render_process_host_impl.cc | 5 +- content/child/BUILD.gn | 1 + content/child/DEPS | 4 +- content/child/blink_platform_impl.cc | 6 +- content/child/runtime_features.cc | 3 +- content/child/scheduler/null_idle_task_runner.h | 35 ----- content/child/threaded_data_provider.cc | 16 ++- content/child/threaded_data_provider.h | 7 +- content/content_browser.gypi | 1 + content/content_child.gypi | 32 +---- content/content_renderer.gypi | 11 +- content/content_tests.gypi | 20 +-- content/public/common/content_switches.cc | 4 - content/public/common/content_switches.h | 1 - content/public/test/DEPS | 4 + content/public/test/render_view_test.cc | 7 +- content/public/test/render_view_test.h | 7 +- content/renderer/BUILD.gn | 1 + content/renderer/DEPS | 4 + content/renderer/gpu/compositor_dependencies.h | 7 +- content/renderer/gpu/render_widget_compositor.cc | 2 +- .../gpu/render_widget_compositor_unittest.cc | 2 +- content/renderer/input/input_handler_manager.cc | 4 +- content/renderer/input/input_handler_manager.h | 9 +- content/renderer/render_thread_impl.cc | 6 +- content/renderer/render_thread_impl.h | 9 +- content/renderer/renderer_blink_platform_impl.cc | 11 +- content/renderer/renderer_blink_platform_impl.h | 12 +- .../scheduler/resource_dispatch_throttler.cc | 4 +- .../scheduler/resource_dispatch_throttler.h | 10 +- .../resource_dispatch_throttler_unittest.cc | 2 +- content/test/BUILD.gn | 1 + content/test/DEPS | 4 + content/test/fake_compositor_dependencies.cc | 3 +- content/test/fake_compositor_dependencies.h | 2 +- content/test/fake_renderer_scheduler.cc | 2 +- content/test/fake_renderer_scheduler.h | 7 +- content/test/test_blink_web_unit_test_support.cc | 10 +- content/test/test_blink_web_unit_test_support.h | 7 +- 111 files changed, 879 insertions(+), 652 deletions(-) create mode 100644 components/scheduler/BUILD.gn create mode 100644 components/scheduler/DEPS copy {content/child => components}/scheduler/OWNERS (100%) create mode 100644 components/scheduler/child/DEPS rename {content/child/scheduler => components/scheduler/child}/OWNERS (100%) rename {content/child/scheduler => components/scheduler/child}/cancelable_closure_holder.cc (85%) rename {content/child/scheduler => components/scheduler/child}/cancelable_closure_holder.h (80%) rename {content/child/scheduler => components/scheduler/child}/child_scheduler.h (84%) rename {content/child/scheduler => components/scheduler/child}/nestable_single_thread_task_runner.h (64%) rename {content/child/scheduler => components/scheduler/child}/nestable_task_runner_for_test.cc (92%) rename {content/child/scheduler => components/scheduler/child}/nestable_task_runner_for_test.h (92%) rename {content/child/scheduler => components/scheduler/child}/null_idle_task_runner.cc (80%) create mode 100644 components/scheduler/child/null_idle_task_runner.h rename {content/child/scheduler => components/scheduler/child}/null_worker_scheduler.cc (78%) rename {content/child/scheduler => components/scheduler/child}/null_worker_scheduler.h (76%) rename {content/child/scheduler => components/scheduler/child}/prioritizing_task_queue_selector.cc (98%) rename {content/child/scheduler => components/scheduler/child}/prioritizing_task_queue_selector.h (90%) rename {content/child/scheduler => components/scheduler/child}/prioritizing_task_queue_selector_unittest.cc (98%) rename {content/child/scheduler => components/scheduler/child}/scheduler_helper.cc (95%) rename {content/child/scheduler => components/scheduler/child}/scheduler_helper.h (93%) rename {content/child/scheduler => components/scheduler/child}/scheduler_helper_unittest.cc (89%) rename {content/child/scheduler => components/scheduler/child}/scheduler_message_loop_delegate.cc (92%) rename {content/child/scheduler => components/scheduler/child}/scheduler_message_loop_delegate.h (73%) rename {content/child/scheduler => components/scheduler/child}/single_thread_idle_task_runner.cc (87%) rename {content/child/scheduler => components/scheduler/child}/single_thread_idle_task_runner.h (89%) rename {content/child/scheduler => components/scheduler/child}/task_queue_manager.cc (98%) rename {content/child/scheduler => components/scheduler/child}/task_queue_manager.h (96%) rename {content/child/scheduler => components/scheduler/child}/task_queue_manager_perftest.cc (95%) rename {content/child/scheduler => components/scheduler/child}/task_queue_manager_unittest.cc (98%) rename {content/child/scheduler => components/scheduler/child}/task_queue_selector.h (82%) rename {content/test => components/scheduler/child}/test_time_source.cc (80%) rename {content/test => components/scheduler/child}/test_time_source.h (67%) rename {content/child/scheduler => components/scheduler/child}/time_source.cc (75%) rename {content/child/scheduler => components/scheduler/child}/time_source.h (54%) rename {content/child/scheduler => components/scheduler/child}/web_scheduler_impl.cc (96%) rename {content/child/scheduler => components/scheduler/child}/web_scheduler_impl.h (93%) rename {content => components/scheduler}/child/webthread_base.cc (97%) rename {content => components/scheduler}/child/webthread_base.h (85%) rename {content/child/scheduler => components/scheduler/child}/webthread_impl_for_worker_scheduler.cc (90%) rename {content/child/scheduler => components/scheduler/child}/webthread_impl_for_worker_scheduler.h (61%) rename {content/child/scheduler => components/scheduler/child}/webthread_impl_for_worker_scheduler_unittest.cc (96%) rename {content/child/scheduler => components/scheduler/child}/worker_scheduler.cc (67%) rename {content/child/scheduler => components/scheduler/child}/worker_scheduler.h (58%) rename {content/child/scheduler => components/scheduler/child}/worker_scheduler_impl.cc (89%) rename {content/child/scheduler => components/scheduler/child}/worker_scheduler_impl.h (77%) rename {content/child/scheduler => components/scheduler/child}/worker_scheduler_impl_unittest.cc (95%) create mode 100644 components/scheduler/common/scheduler_switches.cc create mode 100644 components/scheduler/common/scheduler_switches.h create mode 100644 components/scheduler/renderer/DEPS rename {content/renderer/scheduler => components/scheduler/renderer}/deadline_task_runner.cc (91%) rename {content/renderer/scheduler => components/scheduler/renderer}/deadline_task_runner.h (76%) rename {content/renderer/scheduler => components/scheduler/renderer}/deadline_task_runner_unittest.cc (96%) rename {content/renderer/scheduler => components/scheduler/renderer}/null_renderer_scheduler.cc (87%) rename {content/renderer/scheduler => components/scheduler/renderer}/null_renderer_scheduler.h (84%) rename {content/renderer/scheduler => components/scheduler/renderer}/renderer_scheduler.cc (74%) rename {content/renderer/scheduler => components/scheduler/renderer}/renderer_scheduler.h (86%) rename {content/renderer/scheduler => components/scheduler/renderer}/renderer_scheduler_impl.cc (96%) rename {content/renderer/scheduler => components/scheduler/renderer}/renderer_scheduler_impl.h (93%) rename {content/renderer/scheduler => components/scheduler/renderer}/renderer_scheduler_impl_unittest.cc (96%) rename {content/renderer/scheduler => components/scheduler/renderer}/webthread_impl_for_renderer_scheduler.cc (87%) rename {content/renderer/scheduler => components/scheduler/renderer}/webthread_impl_for_renderer_scheduler.h (75%) rename {content/renderer/scheduler => components/scheduler/renderer}/webthread_impl_for_renderer_scheduler_unittest.cc (91%) create mode 100644 components/scheduler/scheduler.gni create mode 100644 components/scheduler/scheduler.gyp create mode 100644 components/scheduler/scheduler.gypi create mode 100644 components/scheduler/scheduler_export.h delete mode 100644 content/child/scheduler/null_idle_task_runner.h diff --git a/.gn b/.gn index a9187a745e11..853c59a51c6f 100644 --- a/.gn +++ b/.gn @@ -116,6 +116,7 @@ exec_script_whitelist = [ "//clank/native/framework/BUILD.gn", "//components/domain_reliability/BUILD.gn", + "//components/scheduler/scheduler.gni", "//components/webui_generator/generator/wug.gni", "//content/browser/browser.gni", "//content/child/child.gni", diff --git a/WATCHLISTS b/WATCHLISTS index 1aa27507e430..7f26da130c37 100644 --- a/WATCHLISTS +++ b/WATCHLISTS @@ -629,7 +629,7 @@ }, 'scheduler': { 'filepath': 'cc/scheduler'\ - '|content/child/scheduler'\ + '|components/scheduler'\ '|content/renderer/scheduler' }, 'search': { diff --git a/components/BUILD.gn b/components/BUILD.gn index c0f6ad8b14d6..ee6bca2c1cf1 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn @@ -224,6 +224,7 @@ group("all_components") { deps += [ "//components/app_modal", "//components/browsing_data", + "//components/scheduler", ] } @@ -306,6 +307,10 @@ test("components_unittests") { if (is_ios) { deps -= [ "//components/devtools_http_handler:unit_tests" ] } + + if (!is_ios) { + deps += [ "//components/scheduler:unit_tests" ] + } } repack("components_tests_pak") { @@ -379,6 +384,7 @@ test("components_browsertests") { test("components_perftests") { sources = [ + "scheduler/child/task_queue_manager_perftest.cc", "visitedlink/test/visitedlink_perftest.cc", ] @@ -389,6 +395,7 @@ test("components_perftests") { "//base", "//base/test:test_support_perf", "//testing/gtest", + "//testing/perf", "//content/test:test_support", "//components/visitedlink/browser", ] diff --git a/components/components_tests.gyp b/components/components_tests.gyp index 14710faffdda..64cdc9d0a868 100644 --- a/components/components_tests.gyp +++ b/components/components_tests.gyp @@ -430,6 +430,18 @@ 'rappor/rappor_service_unittest.cc', 'rappor/rappor_utils_unittest.cc', ], + 'scheduler_unittest_sources': [ + 'scheduler/child/nestable_task_runner_for_test.cc', + 'scheduler/child/nestable_task_runner_for_test.h', + 'scheduler/child/prioritizing_task_queue_selector_unittest.cc', + 'scheduler/child/scheduler_helper_unittest.cc', + 'scheduler/child/task_queue_manager_unittest.cc', + 'scheduler/child/test_time_source.cc', + 'scheduler/child/test_time_source.h', + 'scheduler/child/worker_scheduler_impl_unittest.cc', + 'scheduler/renderer/deadline_task_runner_unittest.cc', + 'scheduler/renderer/renderer_scheduler_impl_unittest.cc', + ], 'search_unittest_sources': [ 'search/search_android_unittest.cc', 'search/search_unittest.cc', @@ -815,6 +827,7 @@ '<@(navigation_interception_unittest_sources)', '<@(network_hints_unittest_sources)', '<@(power_unittest_sources)', + '<@(scheduler_unittest_sources)', '<@(storage_monitor_unittest_sources)', '<@(ui_unittest_sources)', '<@(visitedlink_unittest_sources)', @@ -849,6 +862,7 @@ 'components.gyp:web_cache_browser', 'components.gyp:web_modal', 'components.gyp:web_modal_test_support', + 'scheduler/scheduler.gyp:scheduler', 'webcrypto/webcrypto.gyp:webcrypto', '../third_party/re2/re2.gyp:re2', ], @@ -1120,12 +1134,15 @@ '../base/base.gyp:test_support_perf', '../content/content_shell_and_tests.gyp:test_support_content', '../testing/gtest.gyp:gtest', + '../testing/perf/perf_test.gyp:perf_test', 'components.gyp:visitedlink_browser', + 'scheduler/scheduler.gyp:scheduler', ], 'include_dirs': [ '..', ], 'sources': [ + 'scheduler/child/task_queue_manager_perftest.cc', 'visitedlink/test/visitedlink_perftest.cc', ], 'conditions': [ diff --git a/components/scheduler/BUILD.gn b/components/scheduler/BUILD.gn new file mode 100644 index 000000000000..2d00aeff26b4 --- /dev/null +++ b/components/scheduler/BUILD.gn @@ -0,0 +1,56 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//components/scheduler/scheduler.gni") + +# GYP version: components/scheduler.gypi:scheduler +component("scheduler") { + sources = rebase_path(scheduler_gypi_values.scheduler_sources, + ".", + "//components/scheduler") + + defines = [ "SCHEDULER_IMPLEMENTATION" ] + + # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. + configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] + + deps = [ + ":common", + "//base", + "//cc:cc", + "//third_party/WebKit/public:blink", + "//ui/gfx:gfx", + ] +} + +# GYP version: components/scheduler.gypi:scheduler_common +source_set("common") { + sources = rebase_path(scheduler_gypi_values.scheduler_common_sources, + ".", + "//components/scheduler") +} + +source_set("unit_tests") { + testonly = true + + sources = [ + "child/nestable_task_runner_for_test.cc", + "child/nestable_task_runner_for_test.h", + "child/prioritizing_task_queue_selector_unittest.cc", + "child/scheduler_helper_unittest.cc", + "child/task_queue_manager_unittest.cc", + "child/test_time_source.cc", + "child/test_time_source.h", + "child/worker_scheduler_impl_unittest.cc", + "renderer/deadline_task_runner_unittest.cc", + "renderer/renderer_scheduler_impl_unittest.cc", + ] + + deps = [ + ":scheduler", + "//cc:test_support", + "//testing/gmock", + "//testing/gtest", + ] +} diff --git a/components/scheduler/DEPS b/components/scheduler/DEPS new file mode 100644 index 000000000000..a298a1715c64 --- /dev/null +++ b/components/scheduler/DEPS @@ -0,0 +1,4 @@ +include_rules = [ + "-components/scheduler", + "+components/scheduler/common", +] diff --git a/content/child/scheduler/OWNERS b/components/scheduler/OWNERS similarity index 100% copy from content/child/scheduler/OWNERS copy to components/scheduler/OWNERS diff --git a/components/scheduler/child/DEPS b/components/scheduler/child/DEPS new file mode 100644 index 000000000000..f4ac3608fa24 --- /dev/null +++ b/components/scheduler/child/DEPS @@ -0,0 +1,12 @@ +include_rules = [ + "+components/scheduler/common", + "+components/scheduler/scheduler_export.h", + "+third_party/WebKit/public/platform", +] + +specific_include_rules = { + "(test_time_source|.*test)\.cc": [ + "+cc/test", + "+content/test", + ], +} diff --git a/content/child/scheduler/OWNERS b/components/scheduler/child/OWNERS similarity index 100% rename from content/child/scheduler/OWNERS rename to components/scheduler/child/OWNERS diff --git a/content/child/scheduler/cancelable_closure_holder.cc b/components/scheduler/child/cancelable_closure_holder.cc similarity index 85% rename from content/child/scheduler/cancelable_closure_holder.cc rename to components/scheduler/child/cancelable_closure_holder.cc index 09e688d37bcc..0e1660a94811 100644 --- a/content/child/scheduler/cancelable_closure_holder.cc +++ b/components/scheduler/child/cancelable_closure_holder.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/cancelable_closure_holder.h" +#include "components/scheduler/child/cancelable_closure_holder.h" -namespace content { +namespace scheduler { CancelableClosureHolder::CancelableClosureHolder() { } @@ -27,4 +27,4 @@ const base::Closure& CancelableClosureHolder::callback() const { return cancelable_callback_.callback(); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/cancelable_closure_holder.h b/components/scheduler/child/cancelable_closure_holder.h similarity index 80% rename from content/child/scheduler/cancelable_closure_holder.h rename to components/scheduler/child/cancelable_closure_holder.h index 1e3892cc1b29..20968a46096a 100644 --- a/content/child/scheduler/cancelable_closure_holder.h +++ b/components/scheduler/child/cancelable_closure_holder.h @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_CANCELABLE_CLOSURE_HOLDER_H_ -#define CONTENT_CHILD_SCHEDULER_CANCELABLE_CLOSURE_HOLDER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_CANCELABLE_CLOSURE_HOLDER_H_ +#define COMPONENTS_SCHEDULER_CHILD_CANCELABLE_CLOSURE_HOLDER_H_ #include "base/cancelable_callback.h" -namespace content { +namespace scheduler { // A CancelableClosureHolder is a CancelableCallback which resets its wrapped // callback with a cached closure whenever it is canceled. @@ -34,6 +34,6 @@ class CancelableClosureHolder { DISALLOW_COPY_AND_ASSIGN(CancelableClosureHolder); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_CANCELABLE_CLOSURE_HOLDER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_CANCELABLE_CLOSURE_HOLDER_H_ diff --git a/content/child/scheduler/child_scheduler.h b/components/scheduler/child/child_scheduler.h similarity index 84% rename from content/child/scheduler/child_scheduler.h rename to components/scheduler/child/child_scheduler.h index 308dc1cdf586..8fd5359e8cfc 100644 --- a/content/child/scheduler/child_scheduler.h +++ b/components/scheduler/child/child_scheduler.h @@ -2,22 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_CHILD_SCHEDULER_H_ -#define CONTENT_CHILD_SCHEDULER_CHILD_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_CHILD_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_CHILD_CHILD_SCHEDULER_H_ #include "base/message_loop/message_loop.h" -#include "content/child/scheduler/single_thread_idle_task_runner.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" +#include "components/scheduler/scheduler_export.h" namespace base { class MessageLoop; } -namespace content { +namespace scheduler { -class CONTENT_EXPORT ChildScheduler { +class SCHEDULER_EXPORT ChildScheduler { public: - virtual ~ChildScheduler() { } + virtual ~ChildScheduler() {} // Returns the default task runner. virtual scoped_refptr DefaultTaskRunner() = 0; @@ -58,10 +58,10 @@ class CONTENT_EXPORT ChildScheduler { virtual void Shutdown() = 0; protected: - ChildScheduler() { } + ChildScheduler() {} DISALLOW_COPY_AND_ASSIGN(ChildScheduler); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_CHILD_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_CHILD_SCHEDULER_H_ diff --git a/content/child/scheduler/nestable_single_thread_task_runner.h b/components/scheduler/child/nestable_single_thread_task_runner.h similarity index 64% rename from content/child/scheduler/nestable_single_thread_task_runner.h rename to components/scheduler/child/nestable_single_thread_task_runner.h index dbacaf8cab52..e1bf99094da2 100644 --- a/content/child/scheduler/nestable_single_thread_task_runner.h +++ b/components/scheduler/child/nestable_single_thread_task_runner.h @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ -#define CONTENT_CHILD_SCHEDULER_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ +#define COMPONENTS_SCHEDULER_CHILD_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ #include "base/single_thread_task_runner.h" -#include "content/common/content_export.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { // A single thread task runner which exposes whether it is running nested. -class CONTENT_EXPORT NestableSingleThreadTaskRunner +class SCHEDULER_EXPORT NestableSingleThreadTaskRunner : public base::SingleThreadTaskRunner { public: NestableSingleThreadTaskRunner() {} @@ -26,6 +26,6 @@ class CONTENT_EXPORT NestableSingleThreadTaskRunner DISALLOW_COPY_AND_ASSIGN(NestableSingleThreadTaskRunner); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_NESTABLE_SINGLE_THREAD_TASK_RUNNER_H_ diff --git a/content/child/scheduler/nestable_task_runner_for_test.cc b/components/scheduler/child/nestable_task_runner_for_test.cc similarity index 92% rename from content/child/scheduler/nestable_task_runner_for_test.cc rename to components/scheduler/child/nestable_task_runner_for_test.cc index abab53bb0ff0..42e1264d43ce 100644 --- a/content/child/scheduler/nestable_task_runner_for_test.cc +++ b/components/scheduler/child/nestable_task_runner_for_test.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/nestable_task_runner_for_test.h" +#include "components/scheduler/child/nestable_task_runner_for_test.h" -namespace content { +namespace scheduler { // static scoped_refptr NestableTaskRunnerForTest::Create( @@ -46,4 +46,4 @@ void NestableTaskRunnerForTest::SetNested(bool is_nested) { is_nested_ = is_nested; } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/nestable_task_runner_for_test.h b/components/scheduler/child/nestable_task_runner_for_test.h similarity index 92% rename from content/child/scheduler/nestable_task_runner_for_test.h rename to components/scheduler/child/nestable_task_runner_for_test.h index c9b9b96478fe..69056204872e 100644 --- a/content/child/scheduler/nestable_task_runner_for_test.h +++ b/components/scheduler/child/nestable_task_runner_for_test.h @@ -5,9 +5,9 @@ #ifndef CONTENT_RENDERER_SCHEDULER_NESTABLE_TASK_RUNNER_FOR_TEST_H_ #define CONTENT_RENDERER_SCHEDULER_NESTABLE_TASK_RUNNER_FOR_TEST_H_ -#include "content/child/scheduler/nestable_single_thread_task_runner.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" -namespace content { +namespace scheduler { class NestableTaskRunnerForTest : public NestableSingleThreadTaskRunner { public: @@ -39,6 +39,6 @@ class NestableTaskRunnerForTest : public NestableSingleThreadTaskRunner { DISALLOW_COPY_AND_ASSIGN(NestableTaskRunnerForTest); }; -} // namespace content +} // namespace scheduler #endif // CONTENT_RENDERER_SCHEDULER_NESTABLE_TASK_RUNNER_FOR_TEST_H_ diff --git a/content/child/scheduler/null_idle_task_runner.cc b/components/scheduler/child/null_idle_task_runner.cc similarity index 80% rename from content/child/scheduler/null_idle_task_runner.cc rename to components/scheduler/child/null_idle_task_runner.cc index 08818ce5d430..9d11e7c565f3 100644 --- a/content/child/scheduler/null_idle_task_runner.cc +++ b/components/scheduler/child/null_idle_task_runner.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/null_idle_task_runner.h" +#include "components/scheduler/child/null_idle_task_runner.h" -namespace content { +namespace scheduler { NullIdleTaskRunner::NullIdleTaskRunner() : SingleThreadIdleTaskRunner(nullptr, @@ -27,8 +27,8 @@ void NullIdleTaskRunner::PostNonNestableIdleTask( } void NullIdleTaskRunner::PostIdleTaskAfterWakeup( - const tracked_objects::Location& from_here, - const IdleTask& idle_task) { + const tracked_objects::Location& from_here, + const IdleTask& idle_task) { } -} // namespace content +} // namespace scheduler diff --git a/components/scheduler/child/null_idle_task_runner.h b/components/scheduler/child/null_idle_task_runner.h new file mode 100644 index 000000000000..734d0c152ce1 --- /dev/null +++ b/components/scheduler/child/null_idle_task_runner.h @@ -0,0 +1,33 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SCHEDULER_CHILD_NULL_IDLE_TASK_RUNNER_H_ +#define COMPONENTS_SCHEDULER_CHILD_NULL_IDLE_TASK_RUNNER_H_ + +#include "components/scheduler/child/single_thread_idle_task_runner.h" + +namespace scheduler { + +class NullIdleTaskRunner : public SingleThreadIdleTaskRunner { + public: + NullIdleTaskRunner(); + void PostIdleTask(const tracked_objects::Location& from_here, + const IdleTask& idle_task) override; + + void PostNonNestableIdleTask(const tracked_objects::Location& from_here, + const IdleTask& idle_task) override; + + void PostIdleTaskAfterWakeup(const tracked_objects::Location& from_here, + const IdleTask& idle_task) override; + + protected: + ~NullIdleTaskRunner() override; + + private: + DISALLOW_COPY_AND_ASSIGN(NullIdleTaskRunner); +}; + +} // namespace scheduler + +#endif // COMPONENTS_SCHEDULER_CHILD_NULL_IDLE_TASK_RUNNER_H_ diff --git a/content/child/scheduler/null_worker_scheduler.cc b/components/scheduler/child/null_worker_scheduler.cc similarity index 78% rename from content/child/scheduler/null_worker_scheduler.cc rename to components/scheduler/child/null_worker_scheduler.cc index 3127c3f13370..4abfb0e8e7ce 100644 --- a/content/child/scheduler/null_worker_scheduler.cc +++ b/components/scheduler/child/null_worker_scheduler.cc @@ -2,16 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/null_worker_scheduler.h" +#include "components/scheduler/child/null_worker_scheduler.h" #include "base/bind.h" -#include "base/message_loop/message_loop_proxy.h" -#include "content/child/scheduler/null_idle_task_runner.h" +#include "base/message_loop/message_loop.h" +#include "base/thread_task_runner_handle.h" +#include "components/scheduler/child/null_idle_task_runner.h" -namespace content { +namespace scheduler { NullWorkerScheduler::NullWorkerScheduler() - : task_runner_(base::MessageLoopProxy::current()), + : task_runner_(base::ThreadTaskRunnerHandle::Get()), idle_task_runner_(new NullIdleTaskRunner()) { } @@ -52,4 +53,4 @@ void NullWorkerScheduler::Init() { void NullWorkerScheduler::Shutdown() { } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/null_worker_scheduler.h b/components/scheduler/child/null_worker_scheduler.h similarity index 76% rename from content/child/scheduler/null_worker_scheduler.h rename to components/scheduler/child/null_worker_scheduler.h index a03d6b2a024c..535fa089a5ae 100644 --- a/content/child/scheduler/null_worker_scheduler.h +++ b/components/scheduler/child/null_worker_scheduler.h @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_NULL_WORKER_SCHEDULER_H_ -#define CONTENT_CHILD_SCHEDULER_NULL_WORKER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_NULL_WORKER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_CHILD_NULL_WORKER_SCHEDULER_H_ -#include "content/child/scheduler/worker_scheduler.h" +#include "components/scheduler/child/worker_scheduler.h" -namespace content { +namespace scheduler { class NullWorkerScheduler : public WorkerScheduler { public: @@ -32,6 +32,6 @@ class NullWorkerScheduler : public WorkerScheduler { DISALLOW_COPY_AND_ASSIGN(NullWorkerScheduler); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_NULL_WORKER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_NULL_WORKER_SCHEDULER_H_ diff --git a/content/child/scheduler/prioritizing_task_queue_selector.cc b/components/scheduler/child/prioritizing_task_queue_selector.cc similarity index 98% rename from content/child/scheduler/prioritizing_task_queue_selector.cc rename to components/scheduler/child/prioritizing_task_queue_selector.cc index 193e81ff106d..5275f72b65d2 100644 --- a/content/child/scheduler/prioritizing_task_queue_selector.cc +++ b/components/scheduler/child/prioritizing_task_queue_selector.cc @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/prioritizing_task_queue_selector.h" +#include "components/scheduler/child/prioritizing_task_queue_selector.h" #include "base/logging.h" #include "base/pending_task.h" #include "base/trace_event/trace_event_argument.h" -namespace content { +namespace scheduler { PrioritizingTaskQueueSelector::PrioritizingTaskQueueSelector() : starvation_count_(0), task_queue_selector_observer_(nullptr) { @@ -189,4 +189,4 @@ void PrioritizingTaskQueueSelector::SetTaskQueueSelectorObserver( task_queue_selector_observer_ = observer; } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/prioritizing_task_queue_selector.h b/components/scheduler/child/prioritizing_task_queue_selector.h similarity index 90% rename from content/child/scheduler/prioritizing_task_queue_selector.h rename to components/scheduler/child/prioritizing_task_queue_selector.h index 936f2ae87f5b..a9a63eb12bde 100644 --- a/content/child/scheduler/prioritizing_task_queue_selector.h +++ b/components/scheduler/child/prioritizing_task_queue_selector.h @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ -#define CONTENT_CHILD_SCHEDULER_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ +#define COMPONENTS_SCHEDULER_CHILD_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ #include #include "base/compiler_specific.h" #include "base/threading/thread_checker.h" -#include "content/child/scheduler/task_queue_selector.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/task_queue_selector.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { // A PrioritizingTaskQueueSelector is a TaskQueueSelector which is used by the // SchedulerHelper to enable prioritization of particular task queues. -class CONTENT_EXPORT PrioritizingTaskQueueSelector +class SCHEDULER_EXPORT PrioritizingTaskQueueSelector : NON_EXPORTED_BASE(public TaskQueueSelector) { public: enum QueuePriority { @@ -103,6 +103,6 @@ class CONTENT_EXPORT PrioritizingTaskQueueSelector DISALLOW_COPY_AND_ASSIGN(PrioritizingTaskQueueSelector); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_PRIORITIZING_TASK_QUEUE_SELECTOR_H_ diff --git a/content/child/scheduler/prioritizing_task_queue_selector_unittest.cc b/components/scheduler/child/prioritizing_task_queue_selector_unittest.cc similarity index 98% rename from content/child/scheduler/prioritizing_task_queue_selector_unittest.cc rename to components/scheduler/child/prioritizing_task_queue_selector_unittest.cc index f055f3d3f318..81a2a945e6fb 100644 --- a/content/child/scheduler/prioritizing_task_queue_selector_unittest.cc +++ b/components/scheduler/child/prioritizing_task_queue_selector_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/prioritizing_task_queue_selector.h" +#include "components/scheduler/child/prioritizing_task_queue_selector.h" #include "base/bind.h" #include "base/memory/scoped_ptr.h" @@ -11,10 +11,9 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace content { +namespace scheduler { -class MockObserver - : public TaskQueueSelector::Observer { +class MockObserver : public TaskQueueSelector::Observer { public: MockObserver() {} virtual ~MockObserver() {} @@ -246,4 +245,4 @@ TEST_F(PrioritizingTaskQueueSelectorTest, TestBestEffortGetsStarved) { } } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/scheduler_helper.cc b/components/scheduler/child/scheduler_helper.cc similarity index 95% rename from content/child/scheduler/scheduler_helper.cc rename to components/scheduler/child/scheduler_helper.cc index 91f4abbd3f13..19e8d2b65120 100644 --- a/content/child/scheduler/scheduler_helper.cc +++ b/components/scheduler/child/scheduler_helper.cc @@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/scheduler_helper.h" +#include "components/scheduler/child/scheduler_helper.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_argument.h" -#include "content/child/scheduler/nestable_single_thread_task_runner.h" -#include "content/child/scheduler/prioritizing_task_queue_selector.h" -#include "content/child/scheduler/time_source.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" +#include "components/scheduler/child/prioritizing_task_queue_selector.h" +#include "components/scheduler/child/time_source.h" -namespace content { +namespace scheduler { SchedulerHelper::SchedulerHelper( scoped_refptr main_task_runner, @@ -204,8 +204,7 @@ void SchedulerHelper::EnableLongIdlePeriod() { ComputeNewLongIdlePeriodState(now, &next_long_idle_period_delay); if (IsInIdlePeriod(new_idle_period_state)) { StartIdlePeriod(new_idle_period_state, now, - now + next_long_idle_period_delay, - false); + now + next_long_idle_period_delay, false); } if (task_queue_manager_->IsQueueEmpty(QueueId::IDLE_TASK_QUEUE)) { @@ -264,10 +263,9 @@ void SchedulerHelper::StartIdlePeriod(IdlePeriodState new_state, idle_period_deadline_ = idle_period_deadline; if (post_end_idle_period) { - control_task_runner_->PostDelayedTask( - FROM_HERE, - end_idle_period_closure_.callback(), - idle_period_deadline_ - now); + control_task_runner_->PostDelayedTask(FROM_HERE, + end_idle_period_closure_.callback(), + idle_period_deadline_ - now); } } @@ -333,13 +331,13 @@ base::TimeTicks SchedulerHelper::Now() const { return time_source_->Now(); } -SchedulerHelper::IdlePeriodState -SchedulerHelper::SchedulerIdlePeriodState() const { +SchedulerHelper::IdlePeriodState SchedulerHelper::SchedulerIdlePeriodState() + const { return idle_period_state_; } -PrioritizingTaskQueueSelector* -SchedulerHelper::SchedulerTaskQueueSelector() const { +PrioritizingTaskQueueSelector* SchedulerHelper::SchedulerTaskQueueSelector() + const { return task_queue_selector_.get(); } @@ -410,4 +408,4 @@ void SchedulerHelper::RemoveTaskObserver( task_queue_manager_->RemoveTaskObserver(task_observer); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/scheduler_helper.h b/components/scheduler/child/scheduler_helper.h similarity index 93% rename from content/child/scheduler/scheduler_helper.h rename to components/scheduler/child/scheduler_helper.h index 0e03aa95cd69..7ace6944c42b 100644 --- a/content/child/scheduler/scheduler_helper.h +++ b/components/scheduler/child/scheduler_helper.h @@ -2,24 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_SCHEDULER_HELPER_H_ -#define CONTENT_CHILD_SCHEDULER_SCHEDULER_HELPER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_SCHEDULER_HELPER_H_ +#define COMPONENTS_SCHEDULER_CHILD_SCHEDULER_HELPER_H_ -#include "content/child/scheduler/cancelable_closure_holder.h" -#include "content/child/scheduler/single_thread_idle_task_runner.h" -#include "content/child/scheduler/task_queue_manager.h" -#include "content/child/scheduler/time_source.h" +#include "components/scheduler/child/cancelable_closure_holder.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" +#include "components/scheduler/child/task_queue_manager.h" +#include "components/scheduler/child/time_source.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { class PrioritizingTaskQueueSelector; class NestableSingleThreadTaskRunner; // Common scheduler functionality for Default and Idle tasks. -class CONTENT_EXPORT SchedulerHelper { +class SCHEDULER_EXPORT SchedulerHelper { public: // Used to by scheduler implementations to customize idle behaviour. - class CONTENT_EXPORT SchedulerHelperDelegate { + class SCHEDULER_EXPORT SchedulerHelperDelegate { public: SchedulerHelperDelegate(); virtual ~SchedulerHelperDelegate(); @@ -209,6 +210,6 @@ class CONTENT_EXPORT SchedulerHelper { DISALLOW_COPY_AND_ASSIGN(SchedulerHelper); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_SCHEDULER_HELPER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_SCHEDULER_HELPER_H_ diff --git a/content/child/scheduler/scheduler_helper_unittest.cc b/components/scheduler/child/scheduler_helper_unittest.cc similarity index 89% rename from content/child/scheduler/scheduler_helper_unittest.cc rename to components/scheduler/child/scheduler_helper_unittest.cc index d3e9bda3e669..0418c0be3250 100644 --- a/content/child/scheduler/scheduler_helper_unittest.cc +++ b/components/scheduler/child/scheduler_helper_unittest.cc @@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/scheduler_helper.h" +#include "components/scheduler/child/scheduler_helper.h" #include "base/callback.h" #include "cc/test/ordered_simple_task_runner.h" #include "cc/test/test_now_source.h" -#include "content/child/scheduler/nestable_task_runner_for_test.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/child/scheduler/task_queue_manager.h" -#include "content/test/test_time_source.h" +#include "components/scheduler/child/nestable_task_runner_for_test.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/task_queue_manager.h" +#include "components/scheduler/child/test_time_source.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -19,7 +19,7 @@ using testing::AnyNumber; using testing::Invoke; using testing::Return; -namespace content { +namespace scheduler { namespace { void AppendToVectorTestTask(std::vector* vector, @@ -36,17 +36,16 @@ void AppendToVectorIdleTestTask(std::vector* vector, void NullTask() { } -void AppendToVectorReentrantTask( - base::SingleThreadTaskRunner* task_runner, - std::vector* vector, - int* reentrant_count, - int max_reentrant_count) { +void AppendToVectorReentrantTask(base::SingleThreadTaskRunner* task_runner, + std::vector* vector, + int* reentrant_count, + int max_reentrant_count) { vector->push_back((*reentrant_count)++); if (*reentrant_count < max_reentrant_count) { task_runner->PostTask( - FROM_HERE, base::Bind(AppendToVectorReentrantTask, - base::Unretained(task_runner), vector, - reentrant_count, max_reentrant_count)); + FROM_HERE, + base::Bind(AppendToVectorReentrantTask, base::Unretained(task_runner), + vector, reentrant_count, max_reentrant_count)); } } @@ -62,15 +61,13 @@ void IdleTestTask(int* run_count, int max_idle_task_reposts = 2; -void RepostingIdleTestTask( - SingleThreadIdleTaskRunner* idle_task_runner, - int* run_count, - base::TimeTicks deadline) { +void RepostingIdleTestTask(SingleThreadIdleTaskRunner* idle_task_runner, + int* run_count, + base::TimeTicks deadline) { if ((*run_count + 1) < max_idle_task_reposts) { idle_task_runner->PostIdleTask( - FROM_HERE, - base::Bind(&RepostingIdleTestTask, - base::Unretained(idle_task_runner), run_count)); + FROM_HERE, base::Bind(&RepostingIdleTestTask, + base::Unretained(idle_task_runner), run_count)); } (*run_count)++; } @@ -284,10 +281,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTask) { EXPECT_EQ(0, run_count); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - expected_deadline, - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + expected_deadline, true); RunUntilIdle(); EXPECT_EQ(1, run_count); EXPECT_EQ(expected_deadline, deadline_in_task); @@ -305,10 +300,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTask_EndIdlePeriod) { EXPECT_EQ(0, run_count); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); scheduler_helper_->EndIdlePeriod(); RunUntilIdle(); EXPECT_EQ(0, run_count); @@ -322,10 +315,8 @@ TEST_F(SchedulerHelperTest, TestRepostingIdleTask) { FROM_HERE, base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); EXPECT_EQ(1, run_count); @@ -334,10 +325,8 @@ TEST_F(SchedulerHelperTest, TestRepostingIdleTask) { EXPECT_EQ(1, run_count); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); EXPECT_EQ(2, run_count); } @@ -354,20 +343,16 @@ TEST_F(SchedulerHelperTest, TestIdleTaskExceedsDeadline) { default_task_runner_, &run_count)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Only the first idle task should execute since it's used up the deadline. EXPECT_EQ(1, run_count); scheduler_helper_->EndIdlePeriod(); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Second task should be run on the next idle period. EXPECT_EQ(2, run_count); @@ -381,10 +366,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTaskAfterWakeup) { FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Shouldn't run yet as no other task woke up the scheduler. EXPECT_EQ(0, run_count); @@ -393,10 +376,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTaskAfterWakeup) { FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Another after wakeup idle task shouldn't wake the scheduler. EXPECT_EQ(0, run_count); @@ -406,10 +387,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTaskAfterWakeup) { RunUntilIdle(); // Must start a new idle period before idle task runs. scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Execution of default task queue task should trigger execution of idle task. EXPECT_EQ(2, run_count); @@ -426,10 +405,8 @@ TEST_F(SchedulerHelperTest, TestPostIdleTaskAfterWakeupWhileAwake) { RunUntilIdle(); // Must start a new idle period before idle task runs. scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Should run as the scheduler was already awakened by the normal task. EXPECT_EQ(1, run_count); @@ -445,17 +422,13 @@ TEST_F(SchedulerHelperTest, TestPostIdleTaskWakesAfterWakeupIdleTask) { FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Must start a new idle period before after-wakeup idle task runs. scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Normal idle task should wake up after-wakeup idle task. EXPECT_EQ(2, run_count); @@ -527,10 +500,8 @@ class SchedulerHelperWithMessageLoopTest : public BaseSchedulerHelperTest { } } scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); message_loop_->RunUntilIdle(); } @@ -565,10 +536,8 @@ TEST_F(SchedulerHelperWithMessageLoopTest, base::Unretained(&tasks_to_post_from_nested_loop))); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); // Note we expect task 3 to run last because it's non-nestable. EXPECT_THAT(order, testing::ElementsAre(std::string("1"), std::string("2"), @@ -727,14 +696,14 @@ TEST_F(SchedulerHelperTest, TestLongIdlePeriodWhenNotCanEnterLongIdlePeriod) { int run_count = 0; ON_CALL(*scheduler_helper_, CanEnterLongIdlePeriod(_, _)) - .WillByDefault(Invoke([delay, delayOver]( - base::TimeTicks now, - base::TimeDelta* next_long_idle_period_delay_out) { - if (now >= delayOver) - return true; - *next_long_idle_period_delay_out = delay; - return false; - })); + .WillByDefault(Invoke( + [delay, delayOver](base::TimeTicks now, + base::TimeDelta* next_long_idle_period_delay_out) { + if (now >= delayOver) + return true; + *next_long_idle_period_delay_out = delay; + return false; + })); EXPECT_CALL(*scheduler_helper_, CanEnterLongIdlePeriod(_, _)).Times(3); @@ -781,10 +750,8 @@ TEST_F(SchedulerHelperTest, CanExceedIdleDeadlineIfRequired) { scheduler_helper_.get(), &can_exceed_idle_deadline, &run_count)); scheduler_helper_->StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - clock_->Now(), - clock_->Now() + base::TimeDelta::FromMilliseconds(10), - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->Now(), + clock_->Now() + base::TimeDelta::FromMilliseconds(10), true); RunUntilIdle(); EXPECT_EQ(1, run_count); EXPECT_FALSE(can_exceed_idle_deadline); @@ -945,4 +912,4 @@ TEST_F(SchedulerHelperWithQuiescencePeriodTest, EXPECT_EQ(expected_deadline, deadline_in_task); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/scheduler_message_loop_delegate.cc b/components/scheduler/child/scheduler_message_loop_delegate.cc similarity index 92% rename from content/child/scheduler/scheduler_message_loop_delegate.cc rename to components/scheduler/child/scheduler_message_loop_delegate.cc index 32fdc087baa7..8c06e3087b17 100644 --- a/content/child/scheduler/scheduler_message_loop_delegate.cc +++ b/components/scheduler/child/scheduler_message_loop_delegate.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" -namespace content { +namespace scheduler { // static scoped_refptr @@ -43,4 +43,4 @@ bool SchedulerMessageLoopDelegate::IsNested() const { return message_loop_->IsNested(); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/scheduler_message_loop_delegate.h b/components/scheduler/child/scheduler_message_loop_delegate.h similarity index 73% rename from content/child/scheduler/scheduler_message_loop_delegate.h rename to components/scheduler/child/scheduler_message_loop_delegate.h index 05e405b2a889..2fce4b6fc459 100644 --- a/content/child/scheduler/scheduler_message_loop_delegate.h +++ b/components/scheduler/child/scheduler_message_loop_delegate.h @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ -#define CONTENT_CHILD_SCHEDULER_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ +#define COMPONENTS_SCHEDULER_CHILD_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ #include "base/message_loop/message_loop.h" -#include "content/child/scheduler/nestable_single_thread_task_runner.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { -class CONTENT_EXPORT SchedulerMessageLoopDelegate +class SCHEDULER_EXPORT SchedulerMessageLoopDelegate : public NestableSingleThreadTaskRunner { public: // |message_loop| is not owned and must outlive the lifetime of this object. @@ -40,6 +40,6 @@ class CONTENT_EXPORT SchedulerMessageLoopDelegate DISALLOW_COPY_AND_ASSIGN(SchedulerMessageLoopDelegate); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_SCHEDULER_MESSAGE_LOOP_DELEGATE_H_ diff --git a/content/child/scheduler/single_thread_idle_task_runner.cc b/components/scheduler/child/single_thread_idle_task_runner.cc similarity index 87% rename from content/child/scheduler/single_thread_idle_task_runner.cc rename to components/scheduler/child/single_thread_idle_task_runner.cc index 1b0eb69213bb..e7aeda31ba31 100644 --- a/content/child/scheduler/single_thread_idle_task_runner.cc +++ b/components/scheduler/child/single_thread_idle_task_runner.cc @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/single_thread_idle_task_runner.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" #include "base/location.h" #include "base/trace_event/trace_event.h" -namespace content { +namespace scheduler { SingleThreadIdleTaskRunner::SingleThreadIdleTaskRunner( scoped_refptr idle_priority_task_runner, @@ -37,18 +37,16 @@ void SingleThreadIdleTaskRunner::PostIdleTask( const tracked_objects::Location& from_here, const IdleTask& idle_task) { idle_priority_task_runner_->PostTask( - from_here, - base::Bind(&SingleThreadIdleTaskRunner::RunTask, - weak_scheduler_ptr_, idle_task)); + from_here, base::Bind(&SingleThreadIdleTaskRunner::RunTask, + weak_scheduler_ptr_, idle_task)); } void SingleThreadIdleTaskRunner::PostNonNestableIdleTask( const tracked_objects::Location& from_here, const IdleTask& idle_task) { idle_priority_task_runner_->PostNonNestableTask( - from_here, - base::Bind(&SingleThreadIdleTaskRunner::RunTask, - weak_scheduler_ptr_, idle_task)); + from_here, base::Bind(&SingleThreadIdleTaskRunner::RunTask, + weak_scheduler_ptr_, idle_task)); } void SingleThreadIdleTaskRunner::PostIdleTaskAfterWakeup( @@ -75,4 +73,4 @@ void SingleThreadIdleTaskRunner::RunTask(IdleTask idle_task) { } } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/single_thread_idle_task_runner.h b/components/scheduler/child/single_thread_idle_task_runner.h similarity index 89% rename from content/child/scheduler/single_thread_idle_task_runner.h rename to components/scheduler/child/single_thread_idle_task_runner.h index b5281a573891..358389a96dc5 100644 --- a/content/child/scheduler/single_thread_idle_task_runner.h +++ b/components/scheduler/child/single_thread_idle_task_runner.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ -#define CONTENT_CHILD_SCHEDULER_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ +#define COMPONENTS_SCHEDULER_CHILD_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ #include "base/bind.h" #include "base/callback.h" @@ -11,7 +11,7 @@ #include "base/single_thread_task_runner.h" #include "base/time/time.h" -namespace content { +namespace scheduler { // A SingleThreadIdleTaskRunner is a task runner for running idle tasks. Idle // tasks have an unbound argument which is bound to a deadline @@ -60,6 +60,6 @@ class SingleThreadIdleTaskRunner DISALLOW_COPY_AND_ASSIGN(SingleThreadIdleTaskRunner); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ diff --git a/content/child/scheduler/task_queue_manager.cc b/components/scheduler/child/task_queue_manager.cc similarity index 98% rename from content/child/scheduler/task_queue_manager.cc rename to components/scheduler/child/task_queue_manager.cc index 646c859161c0..2c03bd6a49eb 100644 --- a/content/child/scheduler/task_queue_manager.cc +++ b/components/scheduler/child/task_queue_manager.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/task_queue_manager.h" +#include "components/scheduler/child/task_queue_manager.h" #include #include @@ -10,15 +10,15 @@ #include "base/bind.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_argument.h" -#include "content/child/scheduler/nestable_single_thread_task_runner.h" -#include "content/child/scheduler/task_queue_selector.h" -#include "content/child/scheduler/time_source.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" +#include "components/scheduler/child/task_queue_selector.h" +#include "components/scheduler/child/time_source.h" namespace { const int64_t kMaxTimeTicks = std::numeric_limits::max(); } -namespace content { +namespace scheduler { namespace internal { // Now() is somewhat expensive so it makes sense not to call Now() unless we @@ -606,7 +606,7 @@ void TaskQueueManager::DoWork(bool posted_from_main_thread) { MaybePostDoWorkOnMainRunner(); if (ProcessTaskFromWorkQueue(queue_index, i > 0, &previous_task)) - return; // The TaskQueueManager got deleted, we must bail out. + return; // The TaskQueueManager got deleted, we must bail out. if (!UpdateWorkQueues(&previous_task)) return; @@ -741,4 +741,4 @@ void TaskQueueManager::OnTaskQueueEnabled() { MaybePostDoWorkOnMainRunner(); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/task_queue_manager.h b/components/scheduler/child/task_queue_manager.h similarity index 96% rename from content/child/scheduler/task_queue_manager.h rename to components/scheduler/child/task_queue_manager.h index 48588194cbe6..dad1573e5eb0 100644 --- a/content/child/scheduler/task_queue_manager.h +++ b/components/scheduler/child/task_queue_manager.h @@ -14,9 +14,9 @@ #include "base/single_thread_task_runner.h" #include "base/synchronization/lock.h" #include "base/threading/thread_checker.h" -#include "content/child/scheduler/task_queue_selector.h" -#include "content/child/scheduler/time_source.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/task_queue_selector.h" +#include "components/scheduler/child/time_source.h" +#include "components/scheduler/scheduler_export.h" namespace base { namespace trace_event { @@ -25,7 +25,7 @@ class TracedValue; } } -namespace content { +namespace scheduler { namespace internal { class LazyNow; class TaskQueue; @@ -46,8 +46,7 @@ class TimeSource; // the incoming task queue (if any) are moved here. The work queues are // registered with the selector as input to the scheduling decision. // -class CONTENT_EXPORT TaskQueueManager - : public TaskQueueSelector::Observer { +class SCHEDULER_EXPORT TaskQueueManager : public TaskQueueSelector::Observer { public: // Keep TaskQueue::PumpPolicyToString in sync with this enum. enum class PumpPolicy { @@ -221,6 +220,6 @@ class CONTENT_EXPORT TaskQueueManager DISALLOW_COPY_AND_ASSIGN(TaskQueueManager); }; -} // namespace content +} // namespace scheduler #endif // CONTENT_RENDERER_SCHEDULER_TASK_QUEUE_MANAGER_H_ diff --git a/content/child/scheduler/task_queue_manager_perftest.cc b/components/scheduler/child/task_queue_manager_perftest.cc similarity index 95% rename from content/child/scheduler/task_queue_manager_perftest.cc rename to components/scheduler/child/task_queue_manager_perftest.cc index e056872e7e5c..80a9c90107b1 100644 --- a/content/child/scheduler/task_queue_manager_perftest.cc +++ b/components/scheduler/child/task_queue_manager_perftest.cc @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/task_queue_manager.h" +#include "components/scheduler/child/task_queue_manager.h" #include "base/bind.h" #include "base/threading/thread.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/child/scheduler/task_queue_selector.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/task_queue_selector.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/perf/perf_test.h" -namespace content { +namespace scheduler { namespace { @@ -172,4 +172,4 @@ TEST_F(TaskQueueManagerPerfTest, RunTenThousandDelayedTasks_EightQueues) { // TODO(alexclarke): Add additional tests with different mixes of non-delayed vs // delayed tasks. -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/task_queue_manager_unittest.cc b/components/scheduler/child/task_queue_manager_unittest.cc similarity index 98% rename from content/child/scheduler/task_queue_manager_unittest.cc rename to components/scheduler/child/task_queue_manager_unittest.cc index 5a5732004587..f34f8783cf42 100644 --- a/content/child/scheduler/task_queue_manager_unittest.cc +++ b/components/scheduler/child/task_queue_manager_unittest.cc @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/task_queue_manager.h" +#include "components/scheduler/child/task_queue_manager.h" #include "base/threading/thread.h" #include "cc/test/ordered_simple_task_runner.h" #include "cc/test/test_now_source.h" -#include "content/child/scheduler/nestable_task_runner_for_test.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/child/scheduler/task_queue_selector.h" -#include "content/test/test_time_source.h" +#include "components/scheduler/child/nestable_task_runner_for_test.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/task_queue_selector.h" +#include "components/scheduler/child/test_time_source.h" #include "testing/gmock/include/gmock/gmock.h" using testing::ElementsAre; using testing::_; -namespace content { +namespace scheduler { namespace { class SelectorForTest : public TaskQueueSelector { @@ -59,8 +59,7 @@ class AutomaticSelectorForTest : public SelectorForTest { return work_queues_; } - void SetTaskQueueSelectorObserver(Observer* observer) override { - } + void SetTaskQueueSelectorObserver(Observer* observer) override {} private: std::vector work_queues_; @@ -94,8 +93,7 @@ class ExplicitSelectorForTest : public SelectorForTest { return work_queues_; } - void SetTaskQueueSelectorObserver(Observer* observer) override { - } + void SetTaskQueueSelectorObserver(Observer* observer) override {} private: std::deque queues_to_service_; @@ -106,9 +104,7 @@ class ExplicitSelectorForTest : public SelectorForTest { class TaskQueueManagerTest : public testing::Test { public: - void DeleteTaskQueueManager() { - manager_.reset(); - } + void DeleteTaskQueueManager() { manager_.reset(); } protected: enum class SelectorType { @@ -454,8 +450,8 @@ TEST_F(TaskQueueManagerTest, PendingDelayedTasksRemovedOnShutdown) { runner->PostDelayedTask( FROM_HERE, base::Bind(&TestObject::Run, base::Owned(new TestObject())), delay); - runner->PostTask( - FROM_HERE, base::Bind(&TestObject::Run, base::Owned(new TestObject()))); + runner->PostTask(FROM_HERE, + base::Bind(&TestObject::Run, base::Owned(new TestObject()))); manager_.reset(); @@ -1103,4 +1099,4 @@ TEST_F(TaskQueueManagerTest, GetAndClearTaskWasRunBitmap_ManyQueues) { } } // namespace -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/task_queue_selector.h b/components/scheduler/child/task_queue_selector.h similarity index 82% rename from content/child/scheduler/task_queue_selector.h rename to components/scheduler/child/task_queue_selector.h index 0a6c256b0f2d..2af9e2b62ff1 100644 --- a/content/child/scheduler/task_queue_selector.h +++ b/components/scheduler/child/task_queue_selector.h @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_TASK_QUEUE_SELECTOR_H_ -#define CONTENT_CHILD_SCHEDULER_TASK_QUEUE_SELECTOR_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_TASK_QUEUE_SELECTOR_H_ +#define COMPONENTS_SCHEDULER_CHILD_TASK_QUEUE_SELECTOR_H_ #include #include "base/basictypes.h" -#include "content/common/content_export.h" +#include "components/scheduler/scheduler_export.h" namespace base { class TaskQueue; @@ -17,7 +17,7 @@ class TracedValue; } // namespace trace_event } // namespace base -namespace content { +namespace scheduler { class TaskQueueSelector { public: @@ -28,7 +28,7 @@ class TaskQueueSelector { virtual void RegisterWorkQueues( const std::vector& work_queues) = 0; - class CONTENT_EXPORT Observer { + class SCHEDULER_EXPORT Observer { public: virtual ~Observer() {} @@ -51,6 +51,6 @@ class TaskQueueSelector { virtual void AsValueInto(base::trace_event::TracedValue* state) const = 0; }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_TASK_QUEUE_SELECTOR_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_TASK_QUEUE_SELECTOR_H_ diff --git a/content/test/test_time_source.cc b/components/scheduler/child/test_time_source.cc similarity index 80% rename from content/test/test_time_source.cc rename to components/scheduler/child/test_time_source.cc index ad602fd94486..3482bb51bad3 100644 --- a/content/test/test_time_source.cc +++ b/components/scheduler/child/test_time_source.cc @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/test/test_time_source.h" +#include "components/scheduler/child/test_time_source.h" #include "cc/test/test_now_source.h" -namespace content { +namespace scheduler { TestTimeSource::TestTimeSource(scoped_refptr time_source) : time_source_(time_source) { @@ -19,4 +19,4 @@ base::TimeTicks TestTimeSource::Now() const { return time_source_->Now(); } -} // namespace content +} // namespace scheduler diff --git a/content/test/test_time_source.h b/components/scheduler/child/test_time_source.h similarity index 67% rename from content/test/test_time_source.h rename to components/scheduler/child/test_time_source.h index 04270ec334fd..6219a4dbd8af 100644 --- a/content/test/test_time_source.h +++ b/components/scheduler/child/test_time_source.h @@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_TEST_TEST_TIME_SOURCE_H_ -#define CONTENT_TEST_TEST_TIME_SOURCE_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_TEST_TIME_SOURCE_H_ +#define COMPONENTS_SCHEDULER_CHILD_TEST_TIME_SOURCE_H_ #include "base/memory/ref_counted.h" -#include "content/child/scheduler/time_source.h" +#include "components/scheduler/child/time_source.h" namespace cc { class TestNowSource; } -namespace content { +namespace scheduler { class TestTimeSource : public TimeSource { public: @@ -27,6 +27,6 @@ class TestTimeSource : public TimeSource { DISALLOW_COPY_AND_ASSIGN(TestTimeSource); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_TEST_TEST_TIME_SOURCE_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_TEST_TIME_SOURCE_H_ diff --git a/content/child/scheduler/time_source.cc b/components/scheduler/child/time_source.cc similarity index 75% rename from content/child/scheduler/time_source.cc rename to components/scheduler/child/time_source.cc index ce64df85d813..f8cf6c43f23d 100644 --- a/content/child/scheduler/time_source.cc +++ b/components/scheduler/child/time_source.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/time_source.h" +#include "components/scheduler/child/time_source.h" -namespace content { +namespace scheduler { TimeSource::TimeSource() { } @@ -16,4 +16,4 @@ base::TimeTicks TimeSource::Now() const { return base::TimeTicks::Now(); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/time_source.h b/components/scheduler/child/time_source.h similarity index 54% rename from content/child/scheduler/time_source.h rename to components/scheduler/child/time_source.h index e5d8606b0173..079e78dcaefc 100644 --- a/content/child/scheduler/time_source.h +++ b/components/scheduler/child/time_source.h @@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_TIME_SOURCE_H_ -#define CONTENT_CHILD_SCHEDULER_TIME_SOURCE_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_TIME_SOURCE_H_ +#define COMPONENTS_SCHEDULER_CHILD_TIME_SOURCE_H_ #include "base/time/time.h" -#include "content/common/content_export.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { -class CONTENT_EXPORT TimeSource { +class SCHEDULER_EXPORT TimeSource { public: TimeSource(); virtual ~TimeSource(); @@ -21,6 +21,6 @@ class CONTENT_EXPORT TimeSource { DISALLOW_COPY_AND_ASSIGN(TimeSource); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_TIME_SOURCE_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_TIME_SOURCE_H_ diff --git a/content/child/scheduler/web_scheduler_impl.cc b/components/scheduler/child/web_scheduler_impl.cc similarity index 96% rename from content/child/scheduler/web_scheduler_impl.cc rename to components/scheduler/child/web_scheduler_impl.cc index 70dc981e731a..9d8aac9eab6d 100644 --- a/content/child/scheduler/web_scheduler_impl.cc +++ b/components/scheduler/child/web_scheduler_impl.cc @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/web_scheduler_impl.h" +#include "components/scheduler/child/web_scheduler_impl.h" #include "base/bind.h" #include "base/single_thread_task_runner.h" -#include "content/child/scheduler/worker_scheduler.h" +#include "components/scheduler/child/worker_scheduler.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" -namespace content { +namespace scheduler { WebSchedulerImpl::WebSchedulerImpl( ChildScheduler* child_scheduler, @@ -104,4 +104,4 @@ void WebSchedulerImpl::postTimerTask( base::TimeDelta::FromMilliseconds(delayMs)); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/web_scheduler_impl.h b/components/scheduler/child/web_scheduler_impl.h similarity index 93% rename from content/child/scheduler/web_scheduler_impl.h rename to components/scheduler/child/web_scheduler_impl.h index 0f661b4a33e1..0d1b48474849 100644 --- a/content/child/scheduler/web_scheduler_impl.h +++ b/components/scheduler/child/web_scheduler_impl.h @@ -8,7 +8,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/time/time.h" -#include "content/common/content_export.h" +#include "components/scheduler/scheduler_export.h" #include "third_party/WebKit/public/platform/WebScheduler.h" #include "third_party/WebKit/public/platform/WebThread.h" @@ -16,12 +16,12 @@ namespace base { class SingleThreadTaskRunner; } -namespace content { +namespace scheduler { class ChildScheduler; class SingleThreadIdleTaskRunner; -class CONTENT_EXPORT WebSchedulerImpl : public blink::WebScheduler { +class SCHEDULER_EXPORT WebSchedulerImpl : public blink::WebScheduler { public: WebSchedulerImpl( ChildScheduler* child_scheduler, @@ -56,6 +56,6 @@ class CONTENT_EXPORT WebSchedulerImpl : public blink::WebScheduler { scoped_refptr timer_task_runner_; }; -} // namespace content +} // namespace scheduler #endif // CONTENT_CHILD_SCHEDULER_BASE_WEB_SCHEDULER_IMPL_H_ diff --git a/content/child/webthread_base.cc b/components/scheduler/child/webthread_base.cc similarity index 97% rename from content/child/webthread_base.cc rename to components/scheduler/child/webthread_base.cc index 818c960ac1f3..9da4254a8a06 100644 --- a/content/child/webthread_base.cc +++ b/components/scheduler/child/webthread_base.cc @@ -5,16 +5,16 @@ // An implementation of WebThread in terms of base::MessageLoop and // base::Thread -#include "content/child/webthread_base.h" +#include "components/scheduler/child/webthread_base.h" #include "base/bind.h" #include "base/bind_helpers.h" #include "base/pending_task.h" #include "base/threading/platform_thread.h" -#include "content/child/scheduler/single_thread_idle_task_runner.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" -namespace content { +namespace scheduler { class WebThreadBase::TaskObserverAdapter : public base::MessageLoop::TaskObserver { @@ -161,4 +161,4 @@ bool WebThreadBase::isCurrentThread() const { return TaskRunner()->BelongsToCurrentThread(); } -} // namespace content +} // namespace scheduler diff --git a/content/child/webthread_base.h b/components/scheduler/child/webthread_base.h similarity index 85% rename from content/child/webthread_base.h rename to components/scheduler/child/webthread_base.h index 5d6ebb9b0f05..c7f865624937 100644 --- a/content/child/webthread_base.h +++ b/components/scheduler/child/webthread_base.h @@ -2,24 +2,24 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_WEBTHREAD_BASE_H_ -#define CONTENT_CHILD_WEBTHREAD_BASE_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_BASE_H_ +#define COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_BASE_H_ #include #include "base/memory/scoped_ptr.h" #include "base/threading/thread.h" -#include "content/common/content_export.h" +#include "components/scheduler/scheduler_export.h" #include "third_party/WebKit/public/platform/WebThread.h" namespace blink { class WebTraceLocation; } -namespace content { +namespace scheduler { class SingleThreadIdleTaskRunner; -class CONTENT_EXPORT WebThreadBase : public blink::WebThread { +class SCHEDULER_EXPORT WebThreadBase : public blink::WebThread { public: virtual ~WebThreadBase(); @@ -48,7 +48,7 @@ class CONTENT_EXPORT WebThreadBase : public blink::WebThread { // Returns the base::Bind-compatible task runner for posting idle tasks to // this thread. Can be called from any thread. - virtual SingleThreadIdleTaskRunner* IdleTaskRunner() const = 0; + virtual scheduler::SingleThreadIdleTaskRunner* IdleTaskRunner() const = 0; protected: class TaskObserverAdapter; @@ -75,6 +75,6 @@ class CONTENT_EXPORT WebThreadBase : public blink::WebThread { TaskObserverMap task_observer_map_; }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_WEBTHREAD_BASE_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_BASE_H_ diff --git a/content/child/scheduler/webthread_impl_for_worker_scheduler.cc b/components/scheduler/child/webthread_impl_for_worker_scheduler.cc similarity index 90% rename from content/child/scheduler/webthread_impl_for_worker_scheduler.cc rename to components/scheduler/child/webthread_impl_for_worker_scheduler.cc index 09004f8f4074..c293faae69d3 100644 --- a/content/child/scheduler/webthread_impl_for_worker_scheduler.cc +++ b/components/scheduler/child/webthread_impl_for_worker_scheduler.cc @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/webthread_impl_for_worker_scheduler.h" +#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" #include "base/bind.h" #include "base/synchronization/waitable_event.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/child/scheduler/web_scheduler_impl.h" -#include "content/child/scheduler/worker_scheduler_impl.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/web_scheduler_impl.h" +#include "components/scheduler/child/worker_scheduler_impl.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" -namespace content { +namespace scheduler { WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler( const char* name) @@ -92,4 +92,4 @@ void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal( worker_scheduler_->RemoveTaskObserver(observer); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/webthread_impl_for_worker_scheduler.h b/components/scheduler/child/webthread_impl_for_worker_scheduler.h similarity index 61% rename from content/child/scheduler/webthread_impl_for_worker_scheduler.h rename to components/scheduler/child/webthread_impl_for_worker_scheduler.h index d5346ba6b90c..2ea02e42ecfe 100644 --- a/content/child/scheduler/webthread_impl_for_worker_scheduler.h +++ b/components/scheduler/child/webthread_impl_for_worker_scheduler.h @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ -#define CONTENT_CHILD_SCHEDULER_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ -#include "content/child/scheduler/task_queue_manager.h" -#include "content/child/webthread_base.h" +#include "components/scheduler/child/task_queue_manager.h" +#include "components/scheduler/child/webthread_base.h" namespace base { class WaitableEvent; @@ -16,13 +16,12 @@ namespace blink { class WebScheduler; }; -namespace content { - +namespace scheduler { class SingleThreadIdleTaskRunner; class WebSchedulerImpl; class WorkerScheduler; -class CONTENT_EXPORT WebThreadImplForWorkerScheduler : public WebThreadBase { +class SCHEDULER_EXPORT WebThreadImplForWorkerScheduler : public WebThreadBase { public: explicit WebThreadImplForWorkerScheduler(const char* name); virtual ~WebThreadImplForWorkerScheduler(); @@ -33,7 +32,7 @@ class CONTENT_EXPORT WebThreadImplForWorkerScheduler : public WebThreadBase { // WebThreadBase implementation. base::SingleThreadTaskRunner* TaskRunner() const override; - SingleThreadIdleTaskRunner* IdleTaskRunner() const override; + scheduler::SingleThreadIdleTaskRunner* IdleTaskRunner() const override; private: base::MessageLoop* MessageLoop() const override; @@ -46,12 +45,12 @@ class CONTENT_EXPORT WebThreadImplForWorkerScheduler : public WebThreadBase { void ShutDownOnThread(base::WaitableEvent* completion); scoped_ptr thread_; - scoped_ptr worker_scheduler_; - scoped_ptr web_scheduler_; + scoped_ptr worker_scheduler_; + scoped_ptr web_scheduler_; scoped_refptr task_runner_; - scoped_refptr idle_task_runner_; + scoped_refptr idle_task_runner_; }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ diff --git a/content/child/scheduler/webthread_impl_for_worker_scheduler_unittest.cc b/components/scheduler/child/webthread_impl_for_worker_scheduler_unittest.cc similarity index 96% rename from content/child/scheduler/webthread_impl_for_worker_scheduler_unittest.cc rename to components/scheduler/child/webthread_impl_for_worker_scheduler_unittest.cc index b03749a62088..7bb1f8990762 100644 --- a/content/child/scheduler/webthread_impl_for_worker_scheduler_unittest.cc +++ b/components/scheduler/child/webthread_impl_for_worker_scheduler_unittest.cc @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/webthread_impl_for_worker_scheduler.h" +#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" #include "base/synchronization/waitable_event.h" -#include "content/child/scheduler/worker_scheduler_impl.h" +#include "components/scheduler/child/worker_scheduler_impl.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" @@ -15,7 +15,7 @@ using testing::AnyOf; using testing::ElementsAre; using testing::Invoke; -namespace content { +namespace scheduler { namespace { class NopTask : public blink::WebThread::Task { @@ -167,4 +167,4 @@ TEST_F(WebThreadImplForWorkerSchedulerTest, TestTaskObserver) { EXPECT_THAT(calls, testing::HasSubstr("willProcessTask run didProcessTask")); } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/worker_scheduler.cc b/components/scheduler/child/worker_scheduler.cc similarity index 67% rename from content/child/scheduler/worker_scheduler.cc rename to components/scheduler/child/worker_scheduler.cc index ac30ab3f6138..a1ddc9881059 100644 --- a/content/child/scheduler/worker_scheduler.cc +++ b/components/scheduler/child/worker_scheduler.cc @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/worker_scheduler.h" +#include "components/scheduler/child/worker_scheduler.h" #include "base/command_line.h" #include "base/message_loop/message_loop.h" -#include "content/child/scheduler/null_worker_scheduler.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/child/scheduler/worker_scheduler_impl.h" -#include "content/public/common/content_switches.h" +#include "components/scheduler/child/null_worker_scheduler.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/worker_scheduler_impl.h" +#include "components/scheduler/common/scheduler_switches.h" -namespace content { +namespace scheduler { WorkerScheduler::WorkerScheduler() { } @@ -31,4 +31,4 @@ scoped_ptr WorkerScheduler::Create( } } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/worker_scheduler.h b/components/scheduler/child/worker_scheduler.h similarity index 58% rename from content/child/scheduler/worker_scheduler.h rename to components/scheduler/child/worker_scheduler.h index 7d1225135aff..333821094e3f 100644 --- a/content/child/scheduler/worker_scheduler.h +++ b/components/scheduler/child/worker_scheduler.h @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_H_ -#define CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_H_ #include "base/message_loop/message_loop.h" -#include "content/child/scheduler/child_scheduler.h" -#include "content/child/scheduler/single_thread_idle_task_runner.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/child_scheduler.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" +#include "components/scheduler/scheduler_export.h" namespace base { class MessageLoop; } -namespace content { +namespace scheduler { -class CONTENT_EXPORT WorkerScheduler : public ChildScheduler { +class SCHEDULER_EXPORT WorkerScheduler : public ChildScheduler { public: ~WorkerScheduler() override; static scoped_ptr Create(base::MessageLoop* message_loop); @@ -30,6 +30,6 @@ class CONTENT_EXPORT WorkerScheduler : public ChildScheduler { DISALLOW_COPY_AND_ASSIGN(WorkerScheduler); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_H_ diff --git a/content/child/scheduler/worker_scheduler_impl.cc b/components/scheduler/child/worker_scheduler_impl.cc similarity index 89% rename from content/child/scheduler/worker_scheduler_impl.cc rename to components/scheduler/child/worker_scheduler_impl.cc index c22c0c3157f9..cfd444e93839 100644 --- a/content/child/scheduler/worker_scheduler_impl.cc +++ b/components/scheduler/child/worker_scheduler_impl.cc @@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/worker_scheduler_impl.h" +#include "components/scheduler/child/worker_scheduler_impl.h" #include "base/bind.h" #include "base/message_loop/message_loop_proxy.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_argument.h" -#include "content/child/scheduler/nestable_single_thread_task_runner.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" -namespace content { +namespace scheduler { WorkerSchedulerImpl::WorkerSchedulerImpl( scoped_refptr main_task_runner) @@ -79,10 +79,6 @@ SchedulerHelper* WorkerSchedulerImpl::GetSchedulerHelperForTesting() { return &helper_; } -void WorkerSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) { - helper_.SetWorkBatchSizeForTesting(work_batch_size); -} - bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks, base::TimeDelta*) { return true; @@ -94,4 +90,4 @@ base::TimeTicks WorkerSchedulerImpl::CurrentIdleTaskDeadlineForTesting() const { return deadline; } -} // namespace content +} // namespace scheduler diff --git a/content/child/scheduler/worker_scheduler_impl.h b/components/scheduler/child/worker_scheduler_impl.h similarity index 77% rename from content/child/scheduler/worker_scheduler_impl.h rename to components/scheduler/child/worker_scheduler_impl.h index 06e9d586aa1e..989d9cfff640 100644 --- a/content/child/scheduler/worker_scheduler_impl.h +++ b/components/scheduler/child/worker_scheduler_impl.h @@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_IMPL_H_ -#define CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_IMPL_H_ +#ifndef COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_IMPL_H_ +#define COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_IMPL_H_ -#include "content/child/scheduler/worker_scheduler.h" -#include "content/child/scheduler/scheduler_helper.h" +#include "components/scheduler/child/scheduler_helper.h" +#include "components/scheduler/child/worker_scheduler.h" +#include "components/scheduler/scheduler_export.h" namespace base { namespace trace_event { @@ -14,11 +15,11 @@ class ConvertableToTraceFormat; } } -namespace content { +namespace scheduler { class NestableSingleThreadTaskRunner; -class CONTENT_EXPORT WorkerSchedulerImpl +class SCHEDULER_EXPORT WorkerSchedulerImpl : public WorkerScheduler, public SchedulerHelper::SchedulerHelperDelegate { public: @@ -38,7 +39,6 @@ class CONTENT_EXPORT WorkerSchedulerImpl void Shutdown() override; SchedulerHelper* GetSchedulerHelperForTesting(); - void SetWorkBatchSizeForTesting(size_t work_batch_size); base::TimeTicks CurrentIdleTaskDeadlineForTesting() const; protected: @@ -57,6 +57,6 @@ class CONTENT_EXPORT WorkerSchedulerImpl DISALLOW_COPY_AND_ASSIGN(WorkerSchedulerImpl); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_CHILD_SCHEDULER_WORKER_SCHEDULER_IMPL_H_ +#endif // COMPONENTS_SCHEDULER_CHILD_WORKER_SCHEDULER_IMPL_H_ diff --git a/content/child/scheduler/worker_scheduler_impl_unittest.cc b/components/scheduler/child/worker_scheduler_impl_unittest.cc similarity index 95% rename from content/child/scheduler/worker_scheduler_impl_unittest.cc rename to components/scheduler/child/worker_scheduler_impl_unittest.cc index edeaa369bfe6..495e88b657cb 100644 --- a/content/child/scheduler/worker_scheduler_impl_unittest.cc +++ b/components/scheduler/child/worker_scheduler_impl_unittest.cc @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/child/scheduler/worker_scheduler_impl.h" +#include "components/scheduler/child/worker_scheduler_impl.h" #include "base/callback.h" #include "base/strings/stringprintf.h" #include "cc/test/ordered_simple_task_runner.h" #include "cc/test/test_now_source.h" -#include "content/child/scheduler/nestable_task_runner_for_test.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/test/test_time_source.h" +#include "components/scheduler/child/nestable_task_runner_for_test.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/test_time_source.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using testing::ElementsAreArray; -namespace content { +namespace scheduler { namespace { void NopTask() { @@ -28,15 +28,15 @@ int TimeTicksToIntMs(const base::TimeTicks& time) { void WakeUpTask(std::vector* timeline, cc::TestNowSource* clock) { if (timeline) { - timeline->push_back(base::StringPrintf( - "run WakeUpTask @ %d", TimeTicksToIntMs(clock->Now()))); + timeline->push_back(base::StringPrintf("run WakeUpTask @ %d", + TimeTicksToIntMs(clock->Now()))); } } void RecordTimelineTask(std::vector* timeline, cc::TestNowSource* clock) { - timeline->push_back(base::StringPrintf( - "run RecordTimelineTask @ %d", TimeTicksToIntMs(clock->Now()))); + timeline->push_back(base::StringPrintf("run RecordTimelineTask @ %d", + TimeTicksToIntMs(clock->Now()))); } void AppendToVectorTestTask(std::vector* vector, @@ -423,4 +423,4 @@ TEST_F(WorkerSchedulerImplTest, TestLongIdlePeriodTimeline) { EXPECT_THAT(timeline, ElementsAreArray(expected_timeline)); } -} // namespace content +} // namespace scheduler diff --git a/components/scheduler/common/scheduler_switches.cc b/components/scheduler/common/scheduler_switches.cc new file mode 100644 index 000000000000..7d7eca64a8fb --- /dev/null +++ b/components/scheduler/common/scheduler_switches.cc @@ -0,0 +1,15 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/scheduler/common/scheduler_switches.h" + +namespace scheduler { +namespace switches { + +// Disable the Blink Scheduler. Ensures there's no reordering of blink tasks. +// This switch is intended only for performance tests. +const char kDisableBlinkScheduler[] = "disable-blink-scheduler"; + +} // namespace switches +} // namespace scheduler diff --git a/components/scheduler/common/scheduler_switches.h b/components/scheduler/common/scheduler_switches.h new file mode 100644 index 000000000000..8d909d9e0d67 --- /dev/null +++ b/components/scheduler/common/scheduler_switches.h @@ -0,0 +1,16 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SCHEDULER_COMMON_SCHEDULER_SWITCHES_H_ +#define COMPONENTS_SCHEDULER_COMMON_SCHEDULER_SWITCHES_H_ + +namespace scheduler { +namespace switches { + +extern const char kDisableBlinkScheduler[]; + +} // namespace switches +} // namespace scheduler + +#endif // COMPONENTS_SCHEDULER_COMMON_SCHEDULER_SWITCHES_H_ diff --git a/components/scheduler/renderer/DEPS b/components/scheduler/renderer/DEPS new file mode 100644 index 000000000000..3425c1a9e30c --- /dev/null +++ b/components/scheduler/renderer/DEPS @@ -0,0 +1,15 @@ +include_rules = [ + "+components/scheduler/child", + "+components/scheduler/common", + "+components/scheduler/scheduler_export.h", + "+cc/output", + "+ui/gfx", + "+third_party/WebKit/public/platform", + "+third_party/WebKit/public/web", +] + +specific_include_rules = { + ".*test\.cc": [ + "+cc/test", + ], +} diff --git a/content/renderer/scheduler/deadline_task_runner.cc b/components/scheduler/renderer/deadline_task_runner.cc similarity index 91% rename from content/renderer/scheduler/deadline_task_runner.cc rename to components/scheduler/renderer/deadline_task_runner.cc index 04564cd55552..fd6859f32087 100644 --- a/content/renderer/scheduler/deadline_task_runner.cc +++ b/components/scheduler/renderer/deadline_task_runner.cc @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/deadline_task_runner.h" +#include "components/scheduler/renderer/deadline_task_runner.h" #include "base/bind.h" -namespace content { +namespace scheduler { DeadlineTaskRunner::DeadlineTaskRunner( const base::Closure& callback, @@ -37,4 +37,4 @@ void DeadlineTaskRunner::RunInternal() { callback_.Run(); } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/deadline_task_runner.h b/components/scheduler/renderer/deadline_task_runner.h similarity index 76% rename from content/renderer/scheduler/deadline_task_runner.h rename to components/scheduler/renderer/deadline_task_runner.h index e9b2755d034a..7988cc4eb985 100644 --- a/content/renderer/scheduler/deadline_task_runner.h +++ b/components/scheduler/renderer/deadline_task_runner.h @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_SCHEDULER_DEADLINE_TASK_RUNNER_H_ -#define CONTENT_RENDERER_SCHEDULER_DEADLINE_TASK_RUNNER_H_ +#ifndef COMPONENTS_SCHEDULER_RENDERER_DEADLINE_TASK_RUNNER_H_ +#define COMPONENTS_SCHEDULER_RENDERER_DEADLINE_TASK_RUNNER_H_ #include "base/callback.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/single_thread_task_runner.h" #include "base/time/time.h" -#include "content/child/scheduler/cancelable_closure_holder.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/cancelable_closure_holder.h" +#include "components/scheduler/scheduler_export.h" -namespace content { +namespace scheduler { // Runs a posted task at latest by a given deadline, but possibly sooner. -class CONTENT_EXPORT DeadlineTaskRunner { +class SCHEDULER_EXPORT DeadlineTaskRunner { public: DeadlineTaskRunner(const base::Closure& callback, scoped_refptr task_runner); @@ -45,6 +45,6 @@ class CONTENT_EXPORT DeadlineTaskRunner { DISALLOW_COPY_AND_ASSIGN(DeadlineTaskRunner); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_RENDERER_SCHEDULER_DEADLINE_TASK_RUNNER_H_ +#endif // COMPONENTS_SCHEDULER_RENDERER_DEADLINE_TASK_RUNNER_H_ diff --git a/content/renderer/scheduler/deadline_task_runner_unittest.cc b/components/scheduler/renderer/deadline_task_runner_unittest.cc similarity index 96% rename from content/renderer/scheduler/deadline_task_runner_unittest.cc rename to components/scheduler/renderer/deadline_task_runner_unittest.cc index 87ec6a1ab7da..ae56f4146f74 100644 --- a/content/renderer/scheduler/deadline_task_runner_unittest.cc +++ b/components/scheduler/renderer/deadline_task_runner_unittest.cc @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/deadline_task_runner.h" +#include "components/scheduler/renderer/deadline_task_runner.h" #include "cc/test/ordered_simple_task_runner.h" #include "cc/test/test_now_source.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace content { +namespace scheduler { class DeadlineTaskRunnerTest : public testing::Test { public: @@ -95,4 +95,4 @@ TEST_F(DeadlineTaskRunnerTest, DeleteDeadlineTaskRunnerAfterPosting) { EXPECT_TRUE(run_times_.empty()); }; -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/null_renderer_scheduler.cc b/components/scheduler/renderer/null_renderer_scheduler.cc similarity index 87% rename from content/renderer/scheduler/null_renderer_scheduler.cc rename to components/scheduler/renderer/null_renderer_scheduler.cc index 349ab54cbc6b..22736b6ca38a 100644 --- a/content/renderer/scheduler/null_renderer_scheduler.cc +++ b/components/scheduler/renderer/null_renderer_scheduler.cc @@ -2,16 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/null_renderer_scheduler.h" +#include "components/scheduler/renderer/null_renderer_scheduler.h" #include "base/bind.h" -#include "base/message_loop/message_loop_proxy.h" -#include "content/child/scheduler/null_idle_task_runner.h" +#include "base/message_loop/message_loop.h" +#include "base/thread_task_runner_handle.h" +#include "components/scheduler/child/null_idle_task_runner.h" -namespace content { +namespace scheduler { NullRendererScheduler::NullRendererScheduler() - : task_runner_(base::MessageLoopProxy::current()), + : task_runner_(base::ThreadTaskRunnerHandle::Get()), idle_task_runner_(new NullIdleTaskRunner()) { } @@ -96,4 +97,4 @@ void NullRendererScheduler::SuspendTimerQueue() { void NullRendererScheduler::ResumeTimerQueue() { } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/null_renderer_scheduler.h b/components/scheduler/renderer/null_renderer_scheduler.h similarity index 84% rename from content/renderer/scheduler/null_renderer_scheduler.h rename to components/scheduler/renderer/null_renderer_scheduler.h index 162e8d9936ed..a346665c530e 100644 --- a/content/renderer/scheduler/null_renderer_scheduler.h +++ b/components/scheduler/renderer/null_renderer_scheduler.h @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_SCHEDULER_NULL_RENDERER_SCHEDULER_H_ -#define CONTENT_RENDERER_SCHEDULER_NULL_RENDERER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_RENDERER_NULL_RENDERER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_RENDERER_NULL_RENDERER_SCHEDULER_H_ -#include "content/renderer/scheduler/renderer_scheduler.h" +#include "components/scheduler/renderer/renderer_scheduler.h" -namespace content { +namespace scheduler { class NullRendererScheduler : public RendererScheduler { public: @@ -45,6 +45,6 @@ class NullRendererScheduler : public RendererScheduler { DISALLOW_COPY_AND_ASSIGN(NullRendererScheduler); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_RENDERER_SCHEDULER_NULL_RENDERER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_RENDERER_NULL_RENDERER_SCHEDULER_H_ diff --git a/content/renderer/scheduler/renderer_scheduler.cc b/components/scheduler/renderer/renderer_scheduler.cc similarity index 74% rename from content/renderer/scheduler/renderer_scheduler.cc rename to components/scheduler/renderer/renderer_scheduler.cc index 0ecba8c1bc90..95669507e66a 100644 --- a/content/renderer/scheduler/renderer_scheduler.cc +++ b/components/scheduler/renderer/renderer_scheduler.cc @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/renderer_scheduler.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "base/command_line.h" #include "base/message_loop/message_loop.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_impl.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/public/common/content_switches.h" -#include "content/renderer/scheduler/null_renderer_scheduler.h" -#include "content/renderer/scheduler/renderer_scheduler_impl.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/common/scheduler_switches.h" +#include "components/scheduler/renderer/null_renderer_scheduler.h" +#include "components/scheduler/renderer/renderer_scheduler_impl.h" -namespace content { +namespace scheduler { RendererScheduler::RendererScheduler() { } @@ -37,4 +37,4 @@ scoped_ptr RendererScheduler::Create() { } } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/renderer_scheduler.h b/components/scheduler/renderer/renderer_scheduler.h similarity index 86% rename from content/renderer/scheduler/renderer_scheduler.h rename to components/scheduler/renderer/renderer_scheduler.h index 7d08f311ffc2..e2756149da98 100644 --- a/content/renderer/scheduler/renderer_scheduler.h +++ b/components/scheduler/renderer/renderer_scheduler.h @@ -2,22 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_H_ -#define CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_H_ #include "base/message_loop/message_loop.h" -#include "content/child/scheduler/child_scheduler.h" -#include "content/child/scheduler/single_thread_idle_task_runner.h" -#include "content/common/content_export.h" +#include "components/scheduler/child/child_scheduler.h" +#include "components/scheduler/child/single_thread_idle_task_runner.h" +#include "components/scheduler/scheduler_export.h" #include "third_party/WebKit/public/web/WebInputEvent.h" namespace cc { struct BeginFrameArgs; } -namespace content { +namespace scheduler { -class CONTENT_EXPORT RendererScheduler : public ChildScheduler { +class SCHEDULER_EXPORT RendererScheduler : public ChildScheduler { public: ~RendererScheduler() override; static scoped_ptr Create(); @@ -84,6 +84,6 @@ class CONTENT_EXPORT RendererScheduler : public ChildScheduler { DISALLOW_COPY_AND_ASSIGN(RendererScheduler); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_H_ diff --git a/content/renderer/scheduler/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc similarity index 96% rename from content/renderer/scheduler/renderer_scheduler_impl.cc rename to components/scheduler/renderer/renderer_scheduler_impl.cc index 7ca3eb7a7290..5ed3d6d12d91 100644 --- a/content/renderer/scheduler/renderer_scheduler_impl.cc +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/renderer_scheduler_impl.h" +#include "components/scheduler/renderer/renderer_scheduler_impl.h" #include "base/bind.h" #include "base/message_loop/message_loop_proxy.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event_argument.h" #include "cc/output/begin_frame_args.h" -#include "content/child/scheduler/nestable_single_thread_task_runner.h" -#include "content/child/scheduler/prioritizing_task_queue_selector.h" +#include "components/scheduler/child/nestable_single_thread_task_runner.h" +#include "components/scheduler/child/prioritizing_task_queue_selector.h" #include "ui/gfx/frame_time.h" -namespace content { +namespace scheduler { RendererSchedulerImpl::RendererSchedulerImpl( scoped_refptr main_task_runner) @@ -45,8 +45,7 @@ RendererSchedulerImpl::RendererSchedulerImpl( end_renderer_hidden_idle_period_closure_.Reset(base::Bind( &RendererSchedulerImpl::EndIdlePeriod, weak_factory_.GetWeakPtr())); - for (size_t i = SchedulerHelper::TASK_QUEUE_COUNT; - i < TASK_QUEUE_COUNT; + for (size_t i = SchedulerHelper::TASK_QUEUE_COUNT; i < TASK_QUEUE_COUNT; i++) { helper_.SetQueueName(i, TaskQueueIdToString(static_cast(i))); } @@ -133,10 +132,8 @@ void RendererSchedulerImpl::DidCommitFrameToCompositor() { // TODO(rmcilroy): Consider reducing the idle period based on the runtime of // the next pending delayed tasks (as currently done in for long idle times) helper_.StartIdlePeriod( - SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, - now, - estimated_next_frame_begin_, - true); + SchedulerHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, now, + estimated_next_frame_begin_, true); } } @@ -168,8 +165,7 @@ void RendererSchedulerImpl::OnRendererHidden() { base::TimeDelta end_idle_when_hidden_delay = base::TimeDelta::FromMilliseconds(kEndIdleWhenHiddenDelayMillis); control_task_runner_->PostDelayedTask( - FROM_HERE, - end_renderer_hidden_idle_period_closure_.callback(), + FROM_HERE, end_renderer_hidden_idle_period_closure_.callback(), end_idle_when_hidden_delay); renderer_hidden_ = true; @@ -303,8 +299,8 @@ bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() { } } -base::TimeTicks -RendererSchedulerImpl::CurrentIdleTaskDeadlineForTesting() const { +base::TimeTicks RendererSchedulerImpl::CurrentIdleTaskDeadlineForTesting() + const { base::TimeTicks deadline; helper_.CurrentIdleTaskDeadlineCallback(&deadline); return deadline; @@ -489,10 +485,6 @@ SchedulerHelper* RendererSchedulerImpl::GetSchedulerHelperForTesting() { return &helper_; } -void RendererSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) { - helper_.SetWorkBatchSizeForTesting(work_batch_size); -} - RendererSchedulerImpl::PollableNeedsUpdateFlag::PollableNeedsUpdateFlag( base::Lock* write_lock_) : flag_(false), write_lock_(write_lock_) { @@ -515,8 +507,8 @@ void RendererSchedulerImpl::SuspendTimerQueue() { helper_.CheckOnValidThread(); timer_queue_suspend_count_++; ForceUpdatePolicy(); - DCHECK(!helper_.SchedulerTaskQueueSelector()->IsQueueEnabled( - TIMER_TASK_QUEUE)); + DCHECK( + !helper_.SchedulerTaskQueueSelector()->IsQueueEnabled(TIMER_TASK_QUEUE)); } void RendererSchedulerImpl::ResumeTimerQueue() { @@ -638,4 +630,4 @@ RendererSchedulerImpl::ComputeNewInputStreamState( return InputStreamState::ACTIVE; } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/renderer_scheduler_impl.h b/components/scheduler/renderer/renderer_scheduler_impl.h similarity index 93% rename from content/renderer/scheduler/renderer_scheduler_impl.h rename to components/scheduler/renderer/renderer_scheduler_impl.h index 04c9ab888edc..6dcd3c9d0e66 100644 --- a/content/renderer/scheduler/renderer_scheduler_impl.h +++ b/components/scheduler/renderer/renderer_scheduler_impl.h @@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ -#define CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ +#ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ +#define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ #include "base/atomicops.h" #include "base/synchronization/lock.h" -#include "content/child/scheduler/scheduler_helper.h" -#include "content/renderer/scheduler/deadline_task_runner.h" -#include "content/renderer/scheduler/renderer_scheduler.h" +#include "components/scheduler/child/scheduler_helper.h" +#include "components/scheduler/renderer/deadline_task_runner.h" +#include "components/scheduler/renderer/renderer_scheduler.h" +#include "components/scheduler/scheduler_export.h" namespace base { namespace trace_event { @@ -17,9 +18,9 @@ class ConvertableToTraceFormat; } } -namespace content { +namespace scheduler { -class CONTENT_EXPORT RendererSchedulerImpl +class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, public SchedulerHelper::SchedulerHelperDelegate { public: @@ -52,7 +53,6 @@ class CONTENT_EXPORT RendererSchedulerImpl void ResumeTimerQueue() override; SchedulerHelper* GetSchedulerHelperForTesting(); - void SetWorkBatchSizeForTesting(size_t work_batch_size); base::TimeTicks CurrentIdleTaskDeadlineForTesting() const; private: @@ -209,6 +209,6 @@ class CONTENT_EXPORT RendererSchedulerImpl DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ +#endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ diff --git a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc similarity index 96% rename from content/renderer/scheduler/renderer_scheduler_impl_unittest.cc rename to components/scheduler/renderer/renderer_scheduler_impl_unittest.cc index 150be2e1f716..27ec4319c2be 100644 --- a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc +++ b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc @@ -2,19 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/renderer_scheduler_impl.h" +#include "components/scheduler/renderer/renderer_scheduler_impl.h" #include "base/callback.h" #include "cc/output/begin_frame_args.h" #include "cc/test/ordered_simple_task_runner.h" #include "cc/test/test_now_source.h" -#include "content/child/scheduler/nestable_task_runner_for_test.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/test/test_time_source.h" +#include "components/scheduler/child/nestable_task_runner_for_test.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/child/test_time_source.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace content { +namespace scheduler { namespace { class FakeInputEvent : public blink::WebInputEvent { @@ -45,17 +45,16 @@ void AppendToVectorIdleTestTask(std::vector* vector, void NullTask() { } -void AppendToVectorReentrantTask( - base::SingleThreadTaskRunner* task_runner, - std::vector* vector, - int* reentrant_count, - int max_reentrant_count) { +void AppendToVectorReentrantTask(base::SingleThreadTaskRunner* task_runner, + std::vector* vector, + int* reentrant_count, + int max_reentrant_count) { vector->push_back((*reentrant_count)++); if (*reentrant_count < max_reentrant_count) { task_runner->PostTask( - FROM_HERE, base::Bind(AppendToVectorReentrantTask, - base::Unretained(task_runner), vector, - reentrant_count, max_reentrant_count)); + FROM_HERE, + base::Bind(AppendToVectorReentrantTask, base::Unretained(task_runner), + vector, reentrant_count, max_reentrant_count)); } } @@ -68,15 +67,13 @@ void IdleTestTask(int* run_count, int max_idle_task_reposts = 2; -void RepostingIdleTestTask( - SingleThreadIdleTaskRunner* idle_task_runner, - int* run_count, - base::TimeTicks deadline) { +void RepostingIdleTestTask(SingleThreadIdleTaskRunner* idle_task_runner, + int* run_count, + base::TimeTicks deadline) { if ((*run_count + 1) < max_idle_task_reposts) { idle_task_runner->PostIdleTask( - FROM_HERE, - base::Bind(&RepostingIdleTestTask, base::Unretained(idle_task_runner), - run_count)); + FROM_HERE, base::Bind(&RepostingIdleTestTask, + base::Unretained(idle_task_runner), run_count)); } (*run_count)++; } @@ -95,12 +92,11 @@ void UpdateClockToDeadlineIdleTestTask( (*run_count)++; } -void PostingYieldingTestTask( - RendererSchedulerImpl* scheduler, - base::SingleThreadTaskRunner* task_runner, - bool simulate_input, - bool* should_yield_before, - bool* should_yield_after) { +void PostingYieldingTestTask(RendererSchedulerImpl* scheduler, + base::SingleThreadTaskRunner* task_runner, + bool simulate_input, + bool* should_yield_before, + bool* should_yield_after) { *should_yield_before = scheduler->ShouldYieldForHighPriorityWork(); task_runner->PostTask(FROM_HERE, base::Bind(NullTask)); if (simulate_input) { @@ -553,8 +549,7 @@ TEST_F(RendererSchedulerImplTest, TestTouchstartPolicy) { FakeInputEvent(blink::WebInputEvent::GestureScrollBegin)); RunUntilIdle(); - EXPECT_THAT(run_order, - testing::ElementsAre(std::string("L1"))); + EXPECT_THAT(run_order, testing::ElementsAre(std::string("L1"))); } TEST_F(RendererSchedulerImplTest, @@ -1167,8 +1162,8 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodWithPendingDelayedTask) { idle_task_runner_->PostIdleTask( FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); - default_task_runner_->PostDelayedTask( - FROM_HERE, base::Bind(&NullTask), pending_task_delay); + default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), + pending_task_delay); scheduler_->BeginFrameNotExpectedSoon(); RunUntilIdle(); @@ -1182,8 +1177,8 @@ TEST_F(RendererSchedulerImplTest, base::TimeTicks deadline_in_task; int run_count = 0; - default_task_runner_->PostDelayedTask( - FROM_HERE, base::Bind(&NullTask), pending_task_delay); + default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), + pending_task_delay); // Advance clock until after delayed task was meant to be run. clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(20)); @@ -1253,8 +1248,7 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodDoesNotWakeScheduler) { // Posting a after-wakeup idle task also shouldn't wake the scheduler or // initiate the next long idle period. idle_task_runner_->PostIdleTaskAfterWakeup( - FROM_HERE, - base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); + FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); RunUntilIdle(); new_idle_period_deadline = scheduler_->CurrentIdleTaskDeadlineForTesting(); EXPECT_EQ(idle_period_deadline, new_idle_period_deadline); @@ -1275,8 +1269,7 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodInTouchStartPolicy) { int run_count = 0; idle_task_runner_->PostIdleTask( - FROM_HERE, - base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); + FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task)); // Observation of touchstart should defer the start of the long idle period. scheduler_->DidReceiveInputEventOnCompositorThread( @@ -1424,4 +1417,4 @@ TEST_F(RendererSchedulerImplTest, MultipleSuspendsNeedMultipleResumes) { testing::ElementsAre(std::string("T1"), std::string("T2"))); } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler.cc b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc similarity index 87% rename from content/renderer/scheduler/webthread_impl_for_renderer_scheduler.cc rename to components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc index 79ee88f56468..9bad0b3c922f 100644 --- a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler.cc +++ b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h" +#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" -#include "content/child/scheduler/web_scheduler_impl.h" -#include "content/renderer/scheduler/renderer_scheduler.h" +#include "components/scheduler/child/web_scheduler_impl.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" -namespace content { +namespace scheduler { WebThreadImplForRendererScheduler::WebThreadImplForRendererScheduler( RendererScheduler* scheduler) @@ -58,4 +58,4 @@ void WebThreadImplForRendererScheduler::RemoveTaskObserverInternal( scheduler_->RemoveTaskObserver(observer); } -} // namespace content +} // namespace scheduler diff --git a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h similarity index 75% rename from content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h rename to components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h index 6d1af5ad7809..70202feb7e90 100644 --- a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h +++ b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h @@ -2,22 +2,22 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_SCHEDULER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ -#define CONTENT_RENDERER_SCHEDULER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ +#ifndef COMPONENTS_SCHEDULER_RENDERER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ +#define COMPONENTS_SCHEDULER_RENDERER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ #include "base/containers/scoped_ptr_hash_map.h" -#include "content/child/webthread_base.h" +#include "components/scheduler/child/webthread_base.h" namespace blink { class WebScheduler; }; -namespace content { - +namespace scheduler { class RendererScheduler; class WebSchedulerImpl; -class CONTENT_EXPORT WebThreadImplForRendererScheduler : public WebThreadBase { +class SCHEDULER_EXPORT WebThreadImplForRendererScheduler + : public WebThreadBase { public: explicit WebThreadImplForRendererScheduler(RendererScheduler* scheduler); virtual ~WebThreadImplForRendererScheduler(); @@ -44,6 +44,6 @@ class CONTENT_EXPORT WebThreadImplForRendererScheduler : public WebThreadBase { blink::PlatformThreadId thread_id_; }; -} // namespace content +} // namespace scheduler -#endif // CONTENT_RENDERER_SCHEDULER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ +#endif // COMPONENTS_SCHEDULER_RENDERER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ diff --git a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler_unittest.cc b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler_unittest.cc similarity index 91% rename from content/renderer/scheduler/webthread_impl_for_renderer_scheduler_unittest.cc rename to components/scheduler/renderer/webthread_impl_for_renderer_scheduler_unittest.cc index 191a2710480b..e92e7d3f31fc 100644 --- a/content/renderer/scheduler/webthread_impl_for_renderer_scheduler_unittest.cc +++ b/components/scheduler/renderer/webthread_impl_for_renderer_scheduler_unittest.cc @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h" +#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" #include "base/run_loop.h" -#include "content/child/scheduler/scheduler_message_loop_delegate.h" -#include "content/renderer/scheduler/renderer_scheduler_impl.h" +#include "components/scheduler/child/scheduler_message_loop_delegate.h" +#include "components/scheduler/renderer/renderer_scheduler_impl.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebTraceLocation.h" -namespace content { +namespace scheduler { namespace { const int kWorkBatchSize = 2; @@ -38,7 +38,8 @@ class WebThreadImplForRendererSchedulerTest : public testing::Test { ~WebThreadImplForRendererSchedulerTest() override {} void SetWorkBatchSizeForTesting(size_t work_batch_size) { - scheduler_.SetWorkBatchSizeForTesting(work_batch_size); + scheduler_.GetSchedulerHelperForTesting()->SetWorkBatchSizeForTesting( + work_batch_size); } protected: @@ -80,7 +81,7 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) { thread_.addTaskObserver(&observer); scoped_ptr task(new MockTask()); - scheduler_.SetWorkBatchSizeForTesting(kWorkBatchSize); + SetWorkBatchSizeForTesting(kWorkBatchSize); { testing::InSequence sequence; EXPECT_CALL(observer, willProcessTask()); @@ -101,7 +102,7 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) { scoped_ptr task1(new MockTask()); scoped_ptr task2(new MockTask()); - scheduler_.SetWorkBatchSizeForTesting(kWorkBatchSize); + SetWorkBatchSizeForTesting(kWorkBatchSize); { testing::InSequence sequence; EXPECT_CALL(observer, willProcessTask()); @@ -128,7 +129,7 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithThreeTasks) { scoped_ptr task2(new MockTask()); scoped_ptr task3(new MockTask()); - scheduler_.SetWorkBatchSizeForTesting(kWorkBatchSize); + SetWorkBatchSizeForTesting(kWorkBatchSize); { testing::InSequence sequence; EXPECT_CALL(observer, willProcessTask()); @@ -199,4 +200,4 @@ TEST_F(WebThreadImplForRendererSchedulerTest, TestNestedRunLoop) { thread_.removeTaskObserver(&observer); } -} // namespace content +} // namespace scheduler diff --git a/components/scheduler/scheduler.gni b/components/scheduler/scheduler.gni new file mode 100644 index 000000000000..4a93aed6919c --- /dev/null +++ b/components/scheduler/scheduler.gni @@ -0,0 +1,12 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This file defines the scheduler gypi values. This file is read once and +# cached, which is a performance optimization that allows us to share the +# results of parsing the .gypi file between the public and private BUILD.gn +# files. It also saves us from duplicating this exec_script call. +scheduler_gypi_values = exec_script("//build/gypi_to_gn.py", + [ rebase_path("scheduler.gypi") ], + "scope", + [ "scheduler.gypi" ]) diff --git a/components/scheduler/scheduler.gyp b/components/scheduler/scheduler.gyp new file mode 100644 index 000000000000..a9c440272826 --- /dev/null +++ b/components/scheduler/scheduler.gyp @@ -0,0 +1,51 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + # This turns on e.g. the filename-based detection of which + # platforms to include source files on (e.g. files ending in + # _mac.h or _mac.cc are only compiled on MacOSX). + 'chromium_code': 1, + }, + 'includes': [ + 'scheduler.gypi', + ], + 'targets': [ + { + # GN version: //components/scheduler:common + 'target_name': 'scheduler_common', + 'type': 'static_library', + 'include_dirs': [ + '../..', + ], + 'sources': [ + '<@(scheduler_common_sources)', + ], + }, + { + # GN version: //components/scheduler:scheduler + 'target_name': 'scheduler', + 'type': '<(component)', + 'dependencies': [ + 'scheduler_common', + '../../base/base.gyp:base', + '../../cc/cc.gyp:cc', + '../../third_party/WebKit/public/blink.gyp:blink', + '../../ui/gfx/gfx.gyp:gfx', + ], + 'include_dirs': [ + '../..', + ], + 'defines': [ + 'SCHEDULER_IMPLEMENTATION', + ], + # Disable c4267 warnings until we fix size_t to int truncations. + 'msvs_disabled_warnings': [ 4267, ], + 'sources': [ + '<@(scheduler_sources)', + ], + }, + ], +} diff --git a/components/scheduler/scheduler.gypi b/components/scheduler/scheduler.gypi new file mode 100644 index 000000000000..72a3f5c4b4cf --- /dev/null +++ b/components/scheduler/scheduler.gypi @@ -0,0 +1,56 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'scheduler_common_sources': [ + 'common/scheduler_switches.cc', + 'common/scheduler_switches.h', + ], + 'scheduler_sources': [ + 'child/cancelable_closure_holder.cc', + 'child/cancelable_closure_holder.h', + 'child/child_scheduler.h', + 'child/nestable_single_thread_task_runner.h', + 'child/null_idle_task_runner.cc', + 'child/null_idle_task_runner.h', + 'child/null_worker_scheduler.cc', + 'child/null_worker_scheduler.h', + 'child/prioritizing_task_queue_selector.cc', + 'child/prioritizing_task_queue_selector.h', + 'child/scheduler_helper.cc', + 'child/scheduler_helper.h', + 'child/scheduler_message_loop_delegate.cc', + 'child/scheduler_message_loop_delegate.h', + 'child/single_thread_idle_task_runner.cc', + 'child/single_thread_idle_task_runner.h', + 'child/task_queue_manager.cc', + 'child/task_queue_manager.h', + 'child/task_queue_selector.h', + 'child/time_source.cc', + 'child/time_source.h', + 'child/web_scheduler_impl.cc', + 'child/web_scheduler_impl.h', + 'child/webthread_base.cc', + 'child/webthread_base.h', + 'child/webthread_impl_for_worker_scheduler.cc', + 'child/webthread_impl_for_worker_scheduler.h', + 'child/worker_scheduler.cc', + 'child/worker_scheduler.h', + 'child/worker_scheduler_impl.cc', + 'child/worker_scheduler_impl.h', + 'renderer/deadline_task_runner.cc', + 'renderer/deadline_task_runner.h', + 'renderer/null_renderer_scheduler.cc', + 'renderer/null_renderer_scheduler.h', + 'renderer/renderer_scheduler.cc', + 'renderer/renderer_scheduler.h', + 'renderer/renderer_scheduler_impl.cc', + 'renderer/renderer_scheduler_impl.h', + 'renderer/webthread_impl_for_renderer_scheduler.cc', + 'renderer/webthread_impl_for_renderer_scheduler.h', + 'scheduler_export.h', + ], + }, +} diff --git a/components/scheduler/scheduler_export.h b/components/scheduler/scheduler_export.h new file mode 100644 index 000000000000..b441b84800b5 --- /dev/null +++ b/components/scheduler/scheduler_export.h @@ -0,0 +1,29 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SCHEDULER_SCHEDULER_EXPORT_H_ +#define COMPONENTS_SCHEDULER_SCHEDULER_EXPORT_H_ + +#if defined(COMPONENT_BUILD) +#if defined(WIN32) + +#if defined(SCHEDULER_IMPLEMENTATION) +#define SCHEDULER_EXPORT __declspec(dllexport) +#else +#define SCHEDULER_EXPORT __declspec(dllimport) +#endif // defined(SCHEDULER_IMPLEMENTATION) + +#else // defined(WIN32) +#if defined(SCHEDULER_IMPLEMENTATION) +#define SCHEDULER_EXPORT __attribute__((visibility("default"))) +#else +#define SCHEDULER_EXPORT +#endif +#endif + +#else // defined(COMPONENT_BUILD) +#define SCHEDULER_EXPORT +#endif + +#endif // COMPONENTS_SCHEDULER_SCHEDULER_EXPORT_H_ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index b8066cb6fbc7..ab00f82767ce 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -100,6 +100,7 @@ source_set("browser") { deps += [ "//cc", "//cc/surfaces", + "//components/scheduler:common", "//content/app/resources", "//content/app/strings", "//content/browser/devtools:resources", diff --git a/content/browser/DEPS b/content/browser/DEPS index 56baa3f9e8ca..35bad8b01037 100644 --- a/content/browser/DEPS +++ b/content/browser/DEPS @@ -1,4 +1,9 @@ include_rules = [ + # Allow inclusion of specific components that we depend on. We may only + # depend on components which we share with the mojo html_viewer. + "+components/scheduler/common", + "+components/tracing", + "+content/app/strings/grit", # For generated headers "+content/public/browser", "+device/battery", # For battery status service. @@ -15,11 +20,6 @@ include_rules = [ "+ui/webui", "+win8/util", - # TODO(joi): This was misplaced; need to move it somewhere else, - # since //content shouldn't depend on //components, which is a layer - # above. - "+components/tracing", - # In general, //content shouldn't depend on //device. # This is the an exception. "+device/udev_linux", # For udev utility and wrapper library. diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 1e20d8e6a899..467adf904be9 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -35,6 +35,7 @@ #include "base/trace_event/trace_event.h" #include "base/tracked_objects.h" #include "cc/base/switches.h" +#include "components/scheduler/common/scheduler_switches.h" #include "content/browser/appcache/appcache_dispatcher_host.h" #include "content/browser/appcache/chrome_appcache_service.h" #include "content/browser/bad_message.h" @@ -1218,7 +1219,6 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kDisable3DAPIs, switches::kDisableAcceleratedJpegDecoding, switches::kDisableAcceleratedVideoDecode, - switches::kDisableBlinkScheduler, switches::kDisableBlinkFeatures, switches::kDisableBreakpad, switches::kDisablePreferCompositingToLCDText, @@ -1356,6 +1356,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( cc::switches::kStrictLayerPropertyChangeChecking, cc::switches::kTopControlsHideThreshold, cc::switches::kTopControlsShowThreshold, + + scheduler::switches::kDisableBlinkScheduler, + #if defined(ENABLE_PLUGINS) switches::kEnablePepperTesting, #endif diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index fe296dd32b15..77898e7ac615 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn @@ -110,6 +110,7 @@ source_set("child") { sources = [] } else { deps += [ + "//components/scheduler:scheduler", "//content/app/resources", "//content/app/strings", "//crypto:platform", diff --git a/content/child/DEPS b/content/child/DEPS index 42cba53cee0b..7931bc20c4a6 100644 --- a/content/child/DEPS +++ b/content/child/DEPS @@ -1,9 +1,11 @@ include_rules = [ # Allow inclusion of specific components that we depend on. We may only # depend on components which we share with the mojo html_viewer. + "+components/scheduler/child", + "+components/scheduler/common", + "+components/tracing", "+components/webcrypto", - "+components/tracing", "+content/app/strings/grit", # For generated headers "+content/public/child", "+media/base/android", diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc index 542757862edc..25faab4b5b5a 100644 --- a/content/child/blink_platform_impl.cc +++ b/content/child/blink_platform_impl.cc @@ -27,6 +27,7 @@ #include "base/time/time.h" #include "blink/public/resources/grit/blink_image_resources.h" #include "blink/public/resources/grit/blink_resources.h" +#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" #include "content/app/resources/grit/content_resources.h" #include "content/app/strings/grit/content_strings.h" #include "content/child/bluetooth/web_bluetooth_impl.h" @@ -40,7 +41,6 @@ #include "content/child/permissions/permission_dispatcher_thread_proxy.h" #include "content/child/push_messaging/push_dispatcher.h" #include "content/child/push_messaging/push_provider.h" -#include "content/child/scheduler/webthread_impl_for_worker_scheduler.h" #include "content/child/thread_safe_sender.h" #include "content/child/web_discardable_memory_impl.h" #include "content/child/web_url_loader_impl.h" @@ -519,8 +519,8 @@ bool BlinkPlatformImpl::portAllowed(const blink::WebURL& url) const { } blink::WebThread* BlinkPlatformImpl::createThread(const char* name) { - WebThreadImplForWorkerScheduler* thread = - new WebThreadImplForWorkerScheduler(name); + scheduler::WebThreadImplForWorkerScheduler* thread = + new scheduler::WebThreadImplForWorkerScheduler(name); thread->TaskRunner()->PostTask( FROM_HERE, base::Bind(&BlinkPlatformImpl::UpdateWebThreadTLS, base::Unretained(this), thread)); diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 37d6e3e90bd5..b4d5df5d96aa 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc @@ -9,6 +9,7 @@ #include "base/command_line.h" #include "base/metrics/field_trial.h" #include "base/strings/string_split.h" +#include "components/scheduler/common/scheduler_switches.h" #include "content/common/content_switches_internal.h" #include "content/public/common/content_switches.h" #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" @@ -96,7 +97,7 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs( if (command_line.HasSwitch(switches::kDisableDatabases)) WebRuntimeFeatures::enableDatabase(false); - if (command_line.HasSwitch(switches::kDisableBlinkScheduler)) + if (command_line.HasSwitch(scheduler::switches::kDisableBlinkScheduler)) WebRuntimeFeatures::enableBlinkScheduler(false); if (command_line.HasSwitch(switches::kDisableLocalStorage)) diff --git a/content/child/scheduler/null_idle_task_runner.h b/content/child/scheduler/null_idle_task_runner.h deleted file mode 100644 index 31a83fc50985..000000000000 --- a/content/child/scheduler/null_idle_task_runner.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_CHILD_SCHEDULER_NULL_IDLE_TASK_RUNNER_H_ -#define CONTENT_CHILD_SCHEDULER_NULL_IDLE_TASK_RUNNER_H_ - -#include "content/child/scheduler/single_thread_idle_task_runner.h" - -namespace content { - -class NullIdleTaskRunner : public SingleThreadIdleTaskRunner { - public: - NullIdleTaskRunner(); - void PostIdleTask(const tracked_objects::Location& from_here, - const IdleTask& idle_task) override; - - void PostNonNestableIdleTask( - const tracked_objects::Location& from_here, - const IdleTask& idle_task) override; - - void PostIdleTaskAfterWakeup( - const tracked_objects::Location& from_here, - const IdleTask& idle_task) override; - - protected: - ~NullIdleTaskRunner() override; - - private: - DISALLOW_COPY_AND_ASSIGN(NullIdleTaskRunner); -}; - -} // namespace content - -#endif // CONTENT_CHILD_SCHEDULER_NULL_IDLE_TASK_RUNNER_H_ diff --git a/content/child/threaded_data_provider.cc b/content/child/threaded_data_provider.cc index 395e45227cf9..eea420a44a17 100644 --- a/content/child/threaded_data_provider.cc +++ b/content/child/threaded_data_provider.cc @@ -4,10 +4,10 @@ #include "content/child/threaded_data_provider.h" +#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" #include "content/child/child_process.h" #include "content/child/child_thread_impl.h" #include "content/child/resource_dispatcher.h" -#include "content/child/scheduler/webthread_impl_for_worker_scheduler.h" #include "content/child/thread_safe_sender.h" #include "content/common/resource_messages.h" #include "ipc/ipc_sync_channel.h" @@ -23,7 +23,7 @@ class DataProviderMessageFilter : public IPC::MessageFilter { DataProviderMessageFilter( const scoped_refptr& io_message_loop, scoped_refptr main_thread_task_runner, - const WebThreadImplForWorkerScheduler& background_thread, + const scheduler::WebThreadImplForWorkerScheduler& background_thread, const base::WeakPtr& background_thread_resource_provider, const base::WeakPtr& main_thread_resource_provider, @@ -41,7 +41,7 @@ class DataProviderMessageFilter : public IPC::MessageFilter { const scoped_refptr io_message_loop_; scoped_refptr main_thread_task_runner_; - const WebThreadImplForWorkerScheduler& background_thread_; + const scheduler::WebThreadImplForWorkerScheduler& background_thread_; // This weakptr can only be dereferenced on the background thread. base::WeakPtr background_thread_resource_provider_; @@ -54,7 +54,7 @@ class DataProviderMessageFilter : public IPC::MessageFilter { DataProviderMessageFilter::DataProviderMessageFilter( const scoped_refptr& io_message_loop, scoped_refptr main_thread_task_runner, - const WebThreadImplForWorkerScheduler& background_thread, + const scheduler::WebThreadImplForWorkerScheduler& background_thread, const base::WeakPtr& background_thread_resource_provider, const base::WeakPtr& main_thread_resource_provider, @@ -126,8 +126,9 @@ ThreadedDataProvider::ThreadedDataProvider( : request_id_(request_id), shm_buffer_(shm_buffer), shm_size_(shm_size), - background_thread_(static_cast( - *threaded_data_receiver->backgroundThread())), + background_thread_( + static_cast( + *threaded_data_receiver->backgroundThread())), ipc_channel_(ChildThreadImpl::current()->channel()), threaded_data_receiver_(threaded_data_receiver), resource_filter_active_(false), @@ -186,7 +187,8 @@ void ThreadedDataProvider::Stop() { // We should never end up with a different parser thread than from when the // ThreadedDataProvider gets created. DCHECK(current_background_thread == - static_cast(&background_thread_)); + static_cast( + &background_thread_)); background_thread_.TaskRunner()->PostTask( FROM_HERE, base::Bind(&ThreadedDataProvider::StopOnBackgroundThread, base::Unretained(this))); diff --git a/content/child/threaded_data_provider.h b/content/child/threaded_data_provider.h index effb4f9d0c55..5cd7433021ad 100644 --- a/content/child/threaded_data_provider.h +++ b/content/child/threaded_data_provider.h @@ -24,9 +24,12 @@ namespace IPC { class SyncChannel; } +namespace scheduler { +class WebThreadImplForWorkerScheduler; +} + namespace content { class ResourceDispatcher; -class WebThreadImplForWorkerScheduler; class ThreadedDataProvider { public: @@ -78,7 +81,7 @@ class ThreadedDataProvider { int shm_size_; scoped_ptr > background_thread_weak_factory_; - WebThreadImplForWorkerScheduler& background_thread_; + scheduler::WebThreadImplForWorkerScheduler& background_thread_; IPC::SyncChannel* ipc_channel_; blink::WebThreadedDataReceiver* threaded_data_receiver_; bool resource_filter_active_; diff --git a/content/content_browser.gypi b/content/content_browser.gypi index 2eece7a9c08c..f371dfb1d512 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -1729,6 +1729,7 @@ 'browser/devtools/devtools.gyp:devtools_protocol_handler', '../cc/cc.gyp:cc', '../cc/cc.gyp:cc_surfaces', + '../components/scheduler/scheduler.gyp:scheduler_common', '../device/bluetooth/bluetooth.gyp:device_bluetooth', '../net/net.gyp:http_server', '../storage/storage_browser.gyp:storage', diff --git a/content/content_child.gypi b/content/content_child.gypi index 297c40dfa5a5..02da309c5598 100644 --- a/content/content_child.gypi +++ b/content/content_child.gypi @@ -190,35 +190,6 @@ 'child/request_extra_data.h', 'child/request_info.cc', 'child/request_info.h', - 'child/scheduler/cancelable_closure_holder.cc', - 'child/scheduler/cancelable_closure_holder.h', - 'child/scheduler/child_scheduler.h', - 'child/scheduler/nestable_single_thread_task_runner.h', - 'child/scheduler/null_idle_task_runner.cc', - 'child/scheduler/null_idle_task_runner.h', - 'child/scheduler/null_worker_scheduler.cc', - 'child/scheduler/null_worker_scheduler.h', - 'child/scheduler/prioritizing_task_queue_selector.cc', - 'child/scheduler/prioritizing_task_queue_selector.h', - 'child/scheduler/scheduler_helper.cc', - 'child/scheduler/scheduler_helper.h', - 'child/scheduler/scheduler_message_loop_delegate.cc', - 'child/scheduler/scheduler_message_loop_delegate.h', - 'child/scheduler/single_thread_idle_task_runner.cc', - 'child/scheduler/single_thread_idle_task_runner.h', - 'child/scheduler/task_queue_selector.h', - 'child/scheduler/task_queue_manager.cc', - 'child/scheduler/task_queue_manager.h', - 'child/scheduler/time_source.cc', - 'child/scheduler/time_source.h', - 'child/scheduler/webthread_impl_for_worker_scheduler.cc', - 'child/scheduler/webthread_impl_for_worker_scheduler.h', - 'child/scheduler/web_scheduler_impl.cc', - 'child/scheduler/web_scheduler_impl.h', - 'child/scheduler/worker_scheduler.cc', - 'child/scheduler/worker_scheduler.h', - 'child/scheduler/worker_scheduler_impl.cc', - 'child/scheduler/worker_scheduler_impl.h', 'child/resource_dispatcher.cc', 'child/resource_dispatcher.h', 'child/resource_scheduling_filter.cc', @@ -286,8 +257,6 @@ 'child/webthemeengine_impl_default.cc', 'child/webthemeengine_impl_default.h', 'child/webthemeengine_impl_mac.h', - 'child/webthread_base.cc', - 'child/webthread_base.h', 'child/weburlresponse_extradata_impl.cc', 'child/weburlresponse_extradata_impl.h', 'child/worker_task_runner.cc', @@ -333,6 +302,7 @@ 'dependencies': [ 'app/resources/content_resources.gyp:content_resources', 'app/strings/content_strings.gyp:content_strings', + '../components/scheduler/scheduler.gyp:scheduler', '../storage/storage_common.gyp:storage_common', '../third_party/WebKit/public/blink.gyp:blink', '../third_party/WebKit/public/blink_resources.gyp:blink_image_resources', diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index 0ae7fbba857d..fb2a7cf2bd1a 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -8,6 +8,7 @@ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', '../cc/cc.gyp:cc', '../cc/blink/cc_blink.gyp:cc_blink', + '../components/scheduler/scheduler.gyp:scheduler', '../device/battery/battery.gyp:device_battery', '../device/battery/battery.gyp:device_battery_mojo_bindings', '../device/vibration/vibration.gyp:device_vibration', @@ -371,18 +372,8 @@ 'renderer/sad_plugin.h', 'renderer/savable_resources.cc', 'renderer/savable_resources.h', - 'renderer/scheduler/deadline_task_runner.cc', - 'renderer/scheduler/deadline_task_runner.h', - 'renderer/scheduler/null_renderer_scheduler.cc', - 'renderer/scheduler/null_renderer_scheduler.h', - 'renderer/scheduler/renderer_scheduler.cc', - 'renderer/scheduler/renderer_scheduler.h', - 'renderer/scheduler/renderer_scheduler_impl.cc', - 'renderer/scheduler/renderer_scheduler_impl.h', 'renderer/scheduler/resource_dispatch_throttler.cc', 'renderer/scheduler/resource_dispatch_throttler.h', - 'renderer/scheduler/webthread_impl_for_renderer_scheduler.cc', - 'renderer/scheduler/webthread_impl_for_renderer_scheduler.h', 'renderer/screen_orientation/screen_orientation_dispatcher.cc', 'renderer/screen_orientation/screen_orientation_dispatcher.h', 'renderer/screen_orientation/screen_orientation_observer.cc', diff --git a/content/content_tests.gypi b/content/content_tests.gypi index 454521f3d0c3..a73303dd83ef 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -163,8 +163,6 @@ 'test/test_render_view_host.h', 'test/test_render_view_host_factory.cc', 'test/test_render_view_host_factory.h', - 'test/test_time_source.cc', - 'test/test_time_source.h', 'test/test_web_contents.cc', 'test/test_web_contents.h', 'test/test_web_contents_factory.cc', @@ -190,8 +188,8 @@ 'browser/accessibility/dump_accessibility_browsertest_base.h', 'browser/accessibility/dump_accessibility_events_browsertest.cc', 'browser/accessibility/dump_accessibility_tree_browsertest.cc', - 'browser/accessibility/snapshot_ax_tree_browsertest.cc', 'browser/accessibility/site_per_process_accessibility_browsertest.cc', + 'browser/accessibility/snapshot_ax_tree_browsertest.cc', 'browser/battery_status/battery_monitor_impl_browsertest.cc', 'browser/battery_status/battery_monitor_integration_browsertest.cc', 'browser/bookmarklet_browsertest.cc', @@ -249,8 +247,8 @@ 'browser/web_contents/web_contents_view_aura_browsertest.cc', 'browser/webkit_browsertest.cc', 'browser/webui/web_ui_mojo_browsertest.cc', - 'child/site_isolation_policy_browsertest.cc', 'child/child_discardable_shared_memory_manager_browsertest.cc', + 'child/site_isolation_policy_browsertest.cc', 'renderer/accessibility/renderer_accessibility_browsertest.cc', 'renderer/devtools/v8_sampling_profiler_browsertest.cc', 'renderer/gin_browsertest.cc', @@ -478,10 +476,10 @@ 'browser/media/midi_host_unittest.cc', 'browser/media/webrtc_identity_store_unittest.cc', 'browser/net/sqlite_persistent_cookie_store_unittest.cc', + 'browser/notification_service_impl_unittest.cc', 'browser/notifications/notification_database_data_unittest.cc', 'browser/notifications/notification_database_unittest.cc', 'browser/notifications/platform_notification_context_unittest.cc', - 'browser/notification_service_impl_unittest.cc', 'browser/power_monitor_message_broadcaster_unittest.cc', 'browser/power_profiler/power_profiler_service_unittest.cc', 'browser/power_usage_monitor_impl_unittest.cc', @@ -587,13 +585,6 @@ 'child/notifications/notification_data_conversions_unittest.cc', 'child/power_monitor_broadcast_source_unittest.cc', 'child/resource_dispatcher_unittest.cc', - 'child/scheduler/nestable_task_runner_for_test.cc', - 'child/scheduler/nestable_task_runner_for_test.h', - 'child/scheduler/prioritizing_task_queue_selector_unittest.cc', - 'child/scheduler/scheduler_helper_unittest.cc', - 'child/scheduler/task_queue_manager_unittest.cc', - 'child/scheduler/webthread_impl_for_worker_scheduler_unittest.cc', - 'child/scheduler/worker_scheduler_impl_unittest.cc', 'child/service_worker/service_worker_dispatcher_unittest.cc', 'child/simple_webmimeregistry_impl_unittest.cc', 'child/site_isolation_policy_unittest.cc', @@ -665,10 +656,7 @@ 'renderer/media/video_capture_message_filter_unittest.cc', 'renderer/render_thread_impl_unittest.cc', 'renderer/render_widget_unittest.cc', - 'renderer/scheduler/deadline_task_runner_unittest.cc', - 'renderer/scheduler/renderer_scheduler_impl_unittest.cc', 'renderer/scheduler/resource_dispatch_throttler_unittest.cc', - 'renderer/scheduler/webthread_impl_for_renderer_scheduler_unittest.cc', 'renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc', 'renderer/skia_benchmarking_extension_unittest.cc', 'test/fileapi_test_file_set.cc', @@ -873,6 +861,7 @@ '../cc/blink/cc_blink.gyp:cc_blink', '../cc/cc.gyp:cc', '../cc/cc_tests.gyp:cc_test_support', + '../components/scheduler/scheduler.gyp:scheduler', '../gpu/blink/gpu_blink.gyp:gpu_blink', '../ipc/mojo/ipc_mojo.gyp:*', '../media/blink/media_blink.gyp:media_blink', @@ -1257,7 +1246,6 @@ 'browser/renderer_host/input/input_router_impl_perftest.cc', 'common/cc_messages_perftest.cc', 'common/discardable_shared_memory_heap_perftest.cc', - 'child/scheduler/task_queue_manager_perftest.cc', 'test/run_all_perftests.cc', ], 'conditions': [ diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index f9b5801177ce..cec05df191bc 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc @@ -91,10 +91,6 @@ const char kDisableBackingStoreLimit[] = "disable-backing-store-limit"; // features. const char kDisableBlinkFeatures[] = "disable-blink-features"; -// Disable the Blink Scheduler. Ensures there's no reordering of blink tasks. -// This switch is intended only for performance tests. -const char kDisableBlinkScheduler[] = "disable-blink-scheduler"; - // Disable the creation of compositing layers when it would prevent LCD text. const char kDisablePreferCompositingToLCDText[] = "disable-prefer-compositing-to-lcd-text"; diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h index c72322a6220f..c7927ac9e5bf 100644 --- a/content/public/common/content_switches.h +++ b/content/public/common/content_switches.h @@ -36,7 +36,6 @@ CONTENT_EXPORT extern const char kDisableAccelerated2dCanvas[]; CONTENT_EXPORT extern const char kDisableAcceleratedJpegDecoding[]; CONTENT_EXPORT extern const char kDisableAcceleratedVideoDecode[]; extern const char kDisableBackingStoreLimit[]; -CONTENT_EXPORT extern const char kDisableBlinkScheduler[]; CONTENT_EXPORT extern const char kDisablePreferCompositingToLCDText[]; CONTENT_EXPORT extern const char kDisableDatabases[]; CONTENT_EXPORT extern const char kDisableDelegatedRenderer[]; diff --git a/content/public/test/DEPS b/content/public/test/DEPS index e897ad3c397d..fbe84ed70e30 100644 --- a/content/public/test/DEPS +++ b/content/public/test/DEPS @@ -7,6 +7,10 @@ include_rules = [ # Ensure we don't leak internal content headers through public headers. specific_include_rules = { ".*\.cc": [ + # Allow inclusion of specific components that we depend on. We may only + # depend on components which we share with the mojo html_viewer. + "+components/scheduler/renderer", + # Testing utilities can access anything in content/ "+content", "+gin/v8_initializer.h", diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc index ca67587df8b3..1e1a0485beea 100644 --- a/content/public/test/render_view_test.cc +++ b/content/public/test/render_view_test.cc @@ -5,6 +5,7 @@ #include "content/public/test/render_view_test.h" #include "base/run_loop.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/common/dom_storage/dom_storage_types.h" #include "content/common/frame_messages.h" #include "content/common/input_messages.h" @@ -21,7 +22,6 @@ #include "content/renderer/render_view_impl.h" #include "content/renderer/renderer_blink_platform_impl.h" #include "content/renderer/renderer_main_platform_delegate.h" -#include "content/renderer/scheduler/renderer_scheduler.h" #include "content/test/fake_compositor_dependencies.h" #include "content/test/mock_render_process.h" #include "content/test/test_content_client.h" @@ -63,7 +63,8 @@ namespace content { class RendererBlinkPlatformImplNoSandboxImpl : public RendererBlinkPlatformImpl { public: - RendererBlinkPlatformImplNoSandboxImpl(RendererScheduler* scheduler) + RendererBlinkPlatformImplNoSandboxImpl( + scheduler::RendererScheduler* scheduler) : RendererBlinkPlatformImpl(scheduler) {} virtual blink::WebSandboxSupport* sandboxSupport() { @@ -73,7 +74,7 @@ class RendererBlinkPlatformImplNoSandboxImpl RenderViewTest::RendererBlinkPlatformImplNoSandbox:: RendererBlinkPlatformImplNoSandbox() { - renderer_scheduler_ = RendererScheduler::Create(); + renderer_scheduler_ = scheduler::RendererScheduler::Create(); blink_platform_impl_.reset( new RendererBlinkPlatformImplNoSandboxImpl(renderer_scheduler_.get())); } diff --git a/content/public/test/render_view_test.h b/content/public/test/render_view_test.h index d512c547bced..d3fd776e1ca3 100644 --- a/content/public/test/render_view_test.h +++ b/content/public/test/render_view_test.h @@ -29,6 +29,10 @@ namespace gfx { class Rect; } +namespace scheduler { +class RendererScheduler; +} + namespace content { class ContentBrowserClient; class ContentClient; @@ -38,7 +42,6 @@ class MockRenderProcess; class PageState; class RendererMainPlatformDelegate; class RendererBlinkPlatformImplNoSandboxImpl; -class RendererScheduler; class RenderView; class RenderViewTest : public testing::Test { @@ -52,7 +55,7 @@ class RenderViewTest : public testing::Test { blink::Platform* Get(); private: - scoped_ptr renderer_scheduler_; + scoped_ptr renderer_scheduler_; scoped_ptr blink_platform_impl_; }; diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 13713fda9a15..d4a17fb1daec 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn @@ -28,6 +28,7 @@ source_set("renderer") { "//base/allocator", "//cc", "//cc/blink", + "//components/scheduler:scheduler", "//content:resources", "//content/common:mojo_bindings", "//content/public/child:child_sources", diff --git a/content/renderer/DEPS b/content/renderer/DEPS index 076c112919cc..1f43f93727d5 100644 --- a/content/renderer/DEPS +++ b/content/renderer/DEPS @@ -1,4 +1,8 @@ include_rules = [ + # Allow inclusion of specific components that we depend on. We may only + # depend on components which we share with the mojo html_viewer. + "+components/scheduler", + "+cc/blink", "+content/public/child", "+content/public/renderer", diff --git a/content/renderer/gpu/compositor_dependencies.h b/content/renderer/gpu/compositor_dependencies.h index 5c72ee7c2306..9973a65cdf26 100644 --- a/content/renderer/gpu/compositor_dependencies.h +++ b/content/renderer/gpu/compositor_dependencies.h @@ -23,8 +23,11 @@ namespace gpu { class GpuMemoryBufferManager; } -namespace content { +namespace scheduler { class RendererScheduler; +} + +namespace content { class CompositorDependencies { public: @@ -48,7 +51,7 @@ class CompositorDependencies { GetCompositorImplThreadTaskRunner() = 0; virtual cc::SharedBitmapManager* GetSharedBitmapManager() = 0; virtual gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() = 0; - virtual RendererScheduler* GetRendererScheduler() = 0; + virtual scheduler::RendererScheduler* GetRendererScheduler() = 0; virtual cc::ContextProvider* GetSharedMainThreadContextProvider() = 0; virtual scoped_ptr CreateExternalBeginFrameSource( int routing_id) = 0; diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc index 31aa6a8b643d..0264aa59bd7e 100644 --- a/content/renderer/gpu/render_widget_compositor.cc +++ b/content/renderer/gpu/render_widget_compositor.cc @@ -30,11 +30,11 @@ #include "cc/scheduler/begin_frame_source.h" #include "cc/trees/latency_info_swap_promise_monitor.h" #include "cc/trees/layer_tree_host.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/common/content_switches_internal.h" #include "content/common/gpu/client/context_provider_command_buffer.h" #include "content/public/common/content_switches.h" #include "content/renderer/input/input_handler_manager.h" -#include "content/renderer/scheduler/renderer_scheduler.h" #include "gpu/command_buffer/client/gles2_interface.h" #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallback.h" #include "third_party/WebKit/public/platform/WebSelectionBound.h" diff --git a/content/renderer/gpu/render_widget_compositor_unittest.cc b/content/renderer/gpu/render_widget_compositor_unittest.cc index 448fa1f5f0e6..6becdf5155b4 100644 --- a/content/renderer/gpu/render_widget_compositor_unittest.cc +++ b/content/renderer/gpu/render_widget_compositor_unittest.cc @@ -7,9 +7,9 @@ #include "cc/output/begin_frame_args.h" #include "cc/test/failure_output_surface.h" #include "cc/trees/layer_tree_host.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/public/test/mock_render_thread.h" #include "content/renderer/render_widget.h" -#include "content/renderer/scheduler/renderer_scheduler.h" #include "content/test/fake_compositor_dependencies.h" #include "content/test/fake_renderer_scheduler.h" #include "testing/gmock/include/gmock/gmock.h" diff --git a/content/renderer/input/input_handler_manager.cc b/content/renderer/input/input_handler_manager.cc index f266cb85342b..ef011cc2c450 100644 --- a/content/renderer/input/input_handler_manager.cc +++ b/content/renderer/input/input_handler_manager.cc @@ -8,11 +8,11 @@ #include "base/message_loop/message_loop_proxy.h" #include "base/trace_event/trace_event.h" #include "cc/input/input_handler.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/renderer/input/input_event_filter.h" #include "content/renderer/input/input_handler_manager_client.h" #include "content/renderer/input/input_handler_wrapper.h" #include "content/renderer/input/input_scroll_elasticity_controller.h" -#include "content/renderer/scheduler/renderer_scheduler.h" using blink::WebInputEvent; @@ -39,7 +39,7 @@ InputEventAckState InputEventDispositionToAck( InputHandlerManager::InputHandlerManager( const scoped_refptr& message_loop_proxy, InputHandlerManagerClient* client, - RendererScheduler* renderer_scheduler) + scheduler::RendererScheduler* renderer_scheduler) : message_loop_proxy_(message_loop_proxy), client_(client), renderer_scheduler_(renderer_scheduler) { diff --git a/content/renderer/input/input_handler_manager.h b/content/renderer/input/input_handler_manager.h index 130fc97e702c..e49d56656f3c 100644 --- a/content/renderer/input/input_handler_manager.h +++ b/content/renderer/input/input_handler_manager.h @@ -25,12 +25,15 @@ class WebInputEvent; class WebMouseWheelEvent; } +namespace scheduler { +class RendererScheduler; +} + namespace content { class InputHandlerWrapper; class InputHandlerManagerClient; struct DidOverscrollParams; -class RendererScheduler; // InputHandlerManager class manages InputHandlerProxy instances for // the WebViews in this renderer. @@ -43,7 +46,7 @@ class InputHandlerManager { InputHandlerManager( const scoped_refptr& message_loop_proxy, InputHandlerManagerClient* client, - RendererScheduler* renderer_scheduler); + scheduler::RendererScheduler* renderer_scheduler); ~InputHandlerManager(); // Callable from the main thread only. @@ -96,7 +99,7 @@ class InputHandlerManager { scoped_refptr message_loop_proxy_; InputHandlerManagerClient* client_; - RendererScheduler* renderer_scheduler_; // Not owned. + scheduler::RendererScheduler* renderer_scheduler_; // Not owned. }; } // namespace content diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 8f5a60579682..61fd8409dfa2 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -33,6 +33,7 @@ #include "cc/blink/web_external_bitmap_impl.h" #include "cc/blink/web_layer_impl.h" #include "cc/resources/tile_task_worker_pool.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/child/appcache/appcache_dispatcher.h" #include "content/child/appcache/appcache_frontend_impl.h" #include "content/child/child_discardable_shared_memory_manager.h" @@ -104,7 +105,6 @@ #include "content/renderer/render_process_impl.h" #include "content/renderer/render_view_impl.h" #include "content/renderer/renderer_blink_platform_impl.h" -#include "content/renderer/scheduler/renderer_scheduler.h" #include "content/renderer/scheduler/resource_dispatch_throttler.h" #include "content/renderer/service_worker/embedded_worker_context_message_filter.h" #include "content/renderer/service_worker/embedded_worker_dispatcher.h" @@ -502,7 +502,7 @@ void RenderThreadImpl::Init() { dom_storage_dispatcher_.reset(new DomStorageDispatcher()); main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher( thread_safe_sender())); - renderer_scheduler_ = RendererScheduler::Create(); + renderer_scheduler_ = scheduler::RendererScheduler::Create(); channel()->SetListenerTaskRunner(renderer_scheduler_->DefaultTaskRunner()); main_thread_cache_storage_dispatcher_.reset( new CacheStorageDispatcher(thread_safe_sender())); @@ -1443,7 +1443,7 @@ gpu::GpuMemoryBufferManager* RenderThreadImpl::GetGpuMemoryBufferManager() { return gpu_memory_buffer_manager(); } -RendererScheduler* RenderThreadImpl::GetRendererScheduler() { +scheduler::RendererScheduler* RenderThreadImpl::GetRendererScheduler() { return renderer_scheduler_.get(); } diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h index f897fccb017d..60d4a49dab7d 100644 --- a/content/renderer/render_thread_impl.h +++ b/content/renderer/render_thread_impl.h @@ -70,6 +70,10 @@ class AudioHardwareConfig; class GpuVideoAcceleratorFactories; } +namespace scheduler { +class RendererScheduler; +} + namespace v8 { class Extension; } @@ -102,7 +106,6 @@ class PeerConnectionTracker; class RenderProcessObserver; class RendererBlinkPlatformImpl; class RendererDemuxerAndroid; -class RendererScheduler; class ResourceDispatchThrottler; class ResourceSchedulingFilter; class V8SamplingProfiler; @@ -197,7 +200,7 @@ class CONTENT_EXPORT RenderThreadImpl scoped_refptr GetCompositorImplThreadTaskRunner() override; gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override; - RendererScheduler* GetRendererScheduler() override; + scheduler::RendererScheduler* GetRendererScheduler() override; cc::ContextProvider* GetSharedMainThreadContextProvider() override; scoped_ptr CreateExternalBeginFrameSource( int routing_id) override; @@ -480,7 +483,7 @@ class CONTENT_EXPORT RenderThreadImpl scoped_ptr appcache_dispatcher_; scoped_ptr dom_storage_dispatcher_; scoped_ptr main_thread_indexed_db_dispatcher_; - scoped_ptr renderer_scheduler_; + scoped_ptr renderer_scheduler_; scoped_ptr blink_platform_impl_; scoped_ptr resource_dispatch_throttler_; scoped_ptr main_thread_cache_storage_dispatcher_; diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc index e42a1a04c0f4..bfef67e25cb0 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc @@ -15,6 +15,9 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "cc/blink/context_provider_web_context.h" +#include "components/scheduler/child/web_scheduler_impl.h" +#include "components/scheduler/renderer/renderer_scheduler.h" +#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" #include "content/child/database_util.h" #include "content/child/file_info_util.h" #include "content/child/fileapi/webfilesystem_impl.h" @@ -22,7 +25,6 @@ #include "content/child/npapi/npobject_util.h" #include "content/child/quota_dispatcher.h" #include "content/child/quota_message_filter.h" -#include "content/child/scheduler/web_scheduler_impl.h" #include "content/child/simple_webmimeregistry_impl.h" #include "content/child/thread_safe_sender.h" #include "content/child/web_database_observer_impl.h" @@ -52,8 +54,6 @@ #include "content/renderer/media/renderer_webmidiaccessor_impl.h" #include "content/renderer/render_thread_impl.h" #include "content/renderer/renderer_clipboard_delegate.h" -#include "content/renderer/scheduler/renderer_scheduler.h" -#include "content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h" #include "content/renderer/screen_orientation/screen_orientation_observer.h" #include "content/renderer/webclipboard_impl.h" #include "content/renderer/webgraphicscontext3d_provider_impl.h" @@ -221,9 +221,10 @@ class RendererBlinkPlatformImpl::SandboxSupport //------------------------------------------------------------------------------ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( - RendererScheduler* renderer_scheduler) + scheduler::RendererScheduler* renderer_scheduler) : BlinkPlatformImpl(renderer_scheduler->DefaultTaskRunner()), - main_thread_(new WebThreadImplForRendererScheduler(renderer_scheduler)), + main_thread_( + new scheduler::WebThreadImplForRendererScheduler(renderer_scheduler)), clipboard_delegate_(new RendererClipboardDelegate), clipboard_(new WebClipboardImpl(clipboard_delegate_.get())), mime_registry_(new RendererBlinkPlatformImpl::MimeRegistry), diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h index da3ec9018a27..d5fc8d360627 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h @@ -37,6 +37,11 @@ class WebGraphicsContext3DProvider; class WebServiceWorkerCacheStorage; } +namespace scheduler { +class RendererScheduler; +class WebThreadImplForRendererScheduler; +} + namespace content { class BatteryStatusDispatcher; class DeviceLightEventPump; @@ -45,17 +50,16 @@ class DeviceOrientationEventPump; class PlatformEventObserverBase; class QuotaMessageFilter; class RendererClipboardDelegate; -class RendererScheduler; class RenderView; class ThreadSafeSender; class WebClipboardImpl; class WebDatabaseObserverImpl; class WebFileSystemImpl; -class WebThreadImplForRendererScheduler; class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { public: - explicit RendererBlinkPlatformImpl(RendererScheduler* renderer_scheduler); + explicit RendererBlinkPlatformImpl( + scheduler::RendererScheduler* renderer_scheduler); virtual ~RendererBlinkPlatformImpl(); void set_plugin_refresh_allowed(bool plugin_refresh_allowed) { @@ -208,7 +212,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { void SendFakeDeviceEventDataForTesting(blink::WebPlatformEventType type); device::VibrationManagerPtr& GetConnectedVibrationManagerService(); - scoped_ptr main_thread_; + scoped_ptr main_thread_; scoped_ptr clipboard_delegate_; scoped_ptr clipboard_; diff --git a/content/renderer/scheduler/resource_dispatch_throttler.cc b/content/renderer/scheduler/resource_dispatch_throttler.cc index 927db73d9ed7..d2f791650765 100644 --- a/content/renderer/scheduler/resource_dispatch_throttler.cc +++ b/content/renderer/scheduler/resource_dispatch_throttler.cc @@ -6,8 +6,8 @@ #include "base/auto_reset.h" #include "base/trace_event/trace_event.h" +#include "components/scheduler/renderer/renderer_scheduler.h" #include "content/common/resource_messages.h" -#include "content/renderer/scheduler/renderer_scheduler.h" #include "ipc/ipc_message_macros.h" namespace content { @@ -21,7 +21,7 @@ bool IsResourceRequest(const IPC::Message& msg) { ResourceDispatchThrottler::ResourceDispatchThrottler( IPC::Sender* proxied_sender, - RendererScheduler* scheduler, + scheduler::RendererScheduler* scheduler, base::TimeDelta flush_period, uint32 max_requests_per_flush) : proxied_sender_(proxied_sender), diff --git a/content/renderer/scheduler/resource_dispatch_throttler.h b/content/renderer/scheduler/resource_dispatch_throttler.h index 233dea5a557b..66fc78660d99 100644 --- a/content/renderer/scheduler/resource_dispatch_throttler.h +++ b/content/renderer/scheduler/resource_dispatch_throttler.h @@ -13,9 +13,11 @@ #include "content/common/content_export.h" #include "ipc/ipc_sender.h" -namespace content { - +namespace scheduler { class RendererScheduler; +} + +namespace content { // Utility class for throttling a stream of resource requests targetted to a // specific IPC sender. The throttling itself is very basic: @@ -31,7 +33,7 @@ class CONTENT_EXPORT ResourceDispatchThrottler : public IPC::Sender { // |flush_period| and |max_requests_per_flush| must be strictly positive // in duration/value. ResourceDispatchThrottler(IPC::Sender* proxied_sender, - RendererScheduler* scheduler, + scheduler::RendererScheduler* scheduler, base::TimeDelta flush_period, uint32 max_requests_per_flush); ~ResourceDispatchThrottler() override; @@ -53,7 +55,7 @@ class CONTENT_EXPORT ResourceDispatchThrottler : public IPC::Sender { base::ThreadChecker thread_checker_; IPC::Sender* const proxied_sender_; - RendererScheduler* const scheduler_; + scheduler::RendererScheduler* const scheduler_; const base::TimeDelta flush_period_; const uint32 max_requests_per_flush_; diff --git a/content/renderer/scheduler/resource_dispatch_throttler_unittest.cc b/content/renderer/scheduler/resource_dispatch_throttler_unittest.cc index 8217f7a44398..8b9dc14fc75c 100644 --- a/content/renderer/scheduler/resource_dispatch_throttler_unittest.cc +++ b/content/renderer/scheduler/resource_dispatch_throttler_unittest.cc @@ -65,7 +65,7 @@ class RendererSchedulerForTest : public FakeRendererScheduler { class ResourceDispatchThrottlerForTest : public ResourceDispatchThrottler { public: ResourceDispatchThrottlerForTest(IPC::Sender* sender, - RendererScheduler* scheduler) + scheduler::RendererScheduler* scheduler) : ResourceDispatchThrottler( sender, scheduler, diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index fddbb5cef684..81823f02c46c 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn @@ -54,6 +54,7 @@ static_library("test_support") { public_deps += [ "//third_party/WebKit/public:blink" ] deps += [ + "//components/scheduler:scheduler", "//content/browser/speech/proto", "//content/public/child:child_sources", "//content/gpu", diff --git a/content/test/DEPS b/content/test/DEPS index b0b89c0fcfdc..12876fdccfa3 100644 --- a/content/test/DEPS +++ b/content/test/DEPS @@ -1,4 +1,8 @@ include_rules = [ + # Allow inclusion of specific components that we depend on. We may only + # depend on components which we share with the mojo html_viewer. + "+components/scheduler/renderer", + "+cc/blink", "+chromeos/audio", # For WebRTC tests. # Testing utilities can access anything in content/ diff --git a/content/test/fake_compositor_dependencies.cc b/content/test/fake_compositor_dependencies.cc index ee533a40e848..98aa6b558ee8 100644 --- a/content/test/fake_compositor_dependencies.cc +++ b/content/test/fake_compositor_dependencies.cc @@ -80,7 +80,8 @@ FakeCompositorDependencies::GetGpuMemoryBufferManager() { return &gpu_memory_buffer_manager_; } -RendererScheduler* FakeCompositorDependencies::GetRendererScheduler() { +scheduler::RendererScheduler* +FakeCompositorDependencies::GetRendererScheduler() { return &renderer_scheduler_; } diff --git a/content/test/fake_compositor_dependencies.h b/content/test/fake_compositor_dependencies.h index 7c6606b4918d..0dac57b75e4f 100644 --- a/content/test/fake_compositor_dependencies.h +++ b/content/test/fake_compositor_dependencies.h @@ -36,7 +36,7 @@ class FakeCompositorDependencies : public CompositorDependencies { GetCompositorImplThreadTaskRunner() override; cc::SharedBitmapManager* GetSharedBitmapManager() override; gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override; - RendererScheduler* GetRendererScheduler() override; + scheduler::RendererScheduler* GetRendererScheduler() override; cc::ContextProvider* GetSharedMainThreadContextProvider() override; scoped_ptr CreateExternalBeginFrameSource( int routing_id) override; diff --git a/content/test/fake_renderer_scheduler.cc b/content/test/fake_renderer_scheduler.cc index 07c85a5f1d52..1424706f3854 100644 --- a/content/test/fake_renderer_scheduler.cc +++ b/content/test/fake_renderer_scheduler.cc @@ -27,7 +27,7 @@ FakeRendererScheduler::LoadingTaskRunner() { return nullptr; } -scoped_refptr +scoped_refptr FakeRendererScheduler::IdleTaskRunner() { return nullptr; } diff --git a/content/test/fake_renderer_scheduler.h b/content/test/fake_renderer_scheduler.h index d1d39de72799..7de65cee2bbb 100644 --- a/content/test/fake_renderer_scheduler.h +++ b/content/test/fake_renderer_scheduler.h @@ -5,11 +5,11 @@ #ifndef CONTENT_TEST_FAKE_RENDERER_SCHEDULER_H_ #define CONTENT_TEST_FAKE_RENDERER_SCHEDULER_H_ -#include "content/renderer/scheduler/renderer_scheduler.h" +#include "components/scheduler/renderer/renderer_scheduler.h" namespace content { -class FakeRendererScheduler : public RendererScheduler { +class FakeRendererScheduler : public scheduler::RendererScheduler { public: FakeRendererScheduler(); ~FakeRendererScheduler() override; @@ -18,7 +18,8 @@ class FakeRendererScheduler : public RendererScheduler { scoped_refptr DefaultTaskRunner() override; scoped_refptr CompositorTaskRunner() override; scoped_refptr LoadingTaskRunner() override; - scoped_refptr IdleTaskRunner() override; + scoped_refptr IdleTaskRunner() + override; scoped_refptr TimerTaskRunner() override; void WillBeginFrame(const cc::BeginFrameArgs& args) override; void BeginFrameNotExpectedSoon() override; diff --git a/content/test/test_blink_web_unit_test_support.cc b/content/test/test_blink_web_unit_test_support.cc index 3b2470188d3a..07f53ea70a7e 100644 --- a/content/test/test_blink_web_unit_test_support.cc +++ b/content/test/test_blink_web_unit_test_support.cc @@ -9,8 +9,8 @@ #include "base/files/scoped_temp_dir.h" #include "base/path_service.h" #include "base/strings/utf_string_conversions.h" -#include "content/renderer/scheduler/renderer_scheduler.h" -#include "content/renderer/scheduler/webthread_impl_for_renderer_scheduler.h" +#include "components/scheduler/renderer/renderer_scheduler.h" +#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" #include "content/test/mock_webclipboard_impl.h" #include "content/test/web_gesture_curve_mock.h" #include "content/test/web_layer_tree_view_impl_for_testing.h" @@ -56,9 +56,9 @@ TestBlinkWebUnitTestSupport::TestBlinkWebUnitTestSupport() { #endif if (base::MessageLoopProxy::current()) { - renderer_scheduler_ = RendererScheduler::Create(); - web_thread_.reset( - new WebThreadImplForRendererScheduler(renderer_scheduler_.get())); + renderer_scheduler_ = scheduler::RendererScheduler::Create(); + web_thread_.reset(new scheduler::WebThreadImplForRendererScheduler( + renderer_scheduler_.get())); } blink::initialize(this); diff --git a/content/test/test_blink_web_unit_test_support.h b/content/test/test_blink_web_unit_test_support.h index 0b27e7b4b954..66761cf56d7b 100644 --- a/content/test/test_blink_web_unit_test_support.h +++ b/content/test/test_blink_web_unit_test_support.h @@ -24,8 +24,11 @@ namespace blink { class WebLayerTreeView; } -namespace content { +namespace scheduler { class RendererScheduler; +} + +namespace content { // An implementation of blink::WebUnitTestSupport and BlinkPlatformImpl for // tests. @@ -94,7 +97,7 @@ class TestBlinkWebUnitTestSupport : public blink::WebUnitTestSupport, base::ScopedTempDir file_system_root_; scoped_ptr url_loader_factory_; cc_blink::WebCompositorSupportImpl compositor_support_; - scoped_ptr renderer_scheduler_; + scoped_ptr renderer_scheduler_; scoped_ptr web_thread_; #if defined(OS_WIN) || defined(OS_MACOSX) -- 2.11.4.GIT