Commit b4169231 authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

[MBI] Move AgentGroupScheduler to third_party/blink/public

This CL moves AgentGroupScheduler to third_party/blink/public and renames it to WebAgentGroupScheduler so that it can be used from the content layer.

Bug: 1105403, 1113102
Change-Id: I1736c8e6951e0abb5b8f69a3409ddff338d6c336
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2444652Reviewed-by: default avatarDominic Farolino <dom@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Reviewed-by: default avatarTal Pressman <talp@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814033}
parent f972406b
...@@ -143,6 +143,7 @@ source_set("blink_headers") { ...@@ -143,6 +143,7 @@ source_set("blink_headers") {
"platform/modules/video_capture/web_video_capture_impl_manager.h", "platform/modules/video_capture/web_video_capture_impl_manager.h",
"platform/modules/webrtc/webrtc_logging.h", "platform/modules/webrtc/webrtc_logging.h",
"platform/platform.h", "platform/platform.h",
"platform/scheduler/web_agent_group_scheduler.h",
"platform/scheduler/web_rail_mode_observer.h", "platform/scheduler/web_rail_mode_observer.h",
"platform/scheduler/web_render_widget_scheduling_state.h", "platform/scheduler/web_render_widget_scheduling_state.h",
"platform/scheduler/web_renderer_process_type.h", "platform/scheduler/web_renderer_process_type.h",
......
// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_PLATFORM_SCHEDULER_WEB_AGENT_GROUP_SCHEDULER_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_SCHEDULER_WEB_AGENT_GROUP_SCHEDULER_H_
#include "base/single_thread_task_runner.h"
#include "third_party/blink/public/platform/web_common.h"
namespace blink {
namespace scheduler {
// WebAgentGroupScheduler schedules per-AgentSchedulingGroup tasks.
// AgentSchedulingGroup is Blink's unit of scheduling and performance isolation.
// And WebAgentGroupScheduler is a dedicated scheduler for each
// AgentSchedulingGroup. Any task posted on WebAgentGroupScheduler shouldn’t be
// run on a different WebAgentGroupScheduler.
class BLINK_PLATFORM_EXPORT WebAgentGroupScheduler {
public:
virtual ~WebAgentGroupScheduler() = default;
// Default task runner for an AgentSchedulingGroup.
// Default task runners for different AgentSchedulingGroup would be
// independent and won't have any ordering guarantees between them.
virtual scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() = 0;
};
} // namespace scheduler
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_SCHEDULER_WEB_AGENT_GROUP_SCHEDULER_H_
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include "base/test/test_mock_time_task_runner.h" #include "base/test/test_mock_time_task_runner.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
#include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h" #include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h"
...@@ -40,7 +40,7 @@ class MockIdleDeadlineScheduler final : public ThreadScheduler { ...@@ -40,7 +40,7 @@ class MockIdleDeadlineScheduler final : public ThreadScheduler {
PageScheduler::Delegate*) override { PageScheduler::Delegate*) override {
return nullptr; return nullptr;
} }
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override { scheduler::WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override {
return nullptr; return nullptr;
} }
scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override { scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override {
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_callback.h" #include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_callback.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_options.h" #include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_options.h"
#include "third_party/blink/renderer/core/testing/null_execution_context.h" #include "third_party/blink/renderer/core/testing/null_execution_context.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/test/fake_task_runner.h" #include "third_party/blink/renderer/platform/scheduler/test/fake_task_runner.h"
#include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h" #include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h"
...@@ -65,7 +65,8 @@ class MockScriptedIdleTaskControllerScheduler final : public ThreadScheduler { ...@@ -65,7 +65,8 @@ class MockScriptedIdleTaskControllerScheduler final : public ThreadScheduler {
std::unique_ptr<RendererPauseHandle> PauseScheduler() override { std::unique_ptr<RendererPauseHandle> PauseScheduler() override {
return nullptr; return nullptr;
} }
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override { scheduler::WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override {
NOTREACHED();
return nullptr; return nullptr;
} }
base::TimeTicks MonotonicallyIncreasingVirtualTime() override { base::TimeTicks MonotonicallyIncreasingVirtualTime() override {
......
...@@ -117,7 +117,6 @@ blink_platform_sources("scheduler") { ...@@ -117,7 +117,6 @@ blink_platform_sources("scheduler") {
"main_thread/web_scoped_virtual_time_pauser.cc", "main_thread/web_scoped_virtual_time_pauser.cc",
"main_thread/widget_scheduler.cc", "main_thread/widget_scheduler.cc",
"main_thread/widget_scheduler.h", "main_thread/widget_scheduler.h",
"public/agent_group_scheduler.h",
"public/aggregated_metric_reporter.h", "public/aggregated_metric_reporter.h",
"public/cooperative_scheduling_manager.h", "public/cooperative_scheduling_manager.h",
"public/dummy_schedulers.h", "public/dummy_schedulers.h",
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
#include "third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h" #include "third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/page_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/page_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h" #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
...@@ -184,7 +184,7 @@ class DummyThreadScheduler : public ThreadScheduler { ...@@ -184,7 +184,7 @@ class DummyThreadScheduler : public ThreadScheduler {
PageScheduler::Delegate*) override { PageScheduler::Delegate*) override {
return std::make_unique<DummyPageScheduler>(); return std::make_unique<DummyPageScheduler>();
} }
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override { WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override {
return nullptr; return nullptr;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/functional.h"
namespace blink { namespace blink {
...@@ -67,7 +67,7 @@ std::unique_ptr<PageScheduler> SimpleThreadScheduler::CreatePageScheduler( ...@@ -67,7 +67,7 @@ std::unique_ptr<PageScheduler> SimpleThreadScheduler::CreatePageScheduler(
return nullptr; return nullptr;
} }
AgentGroupScheduler* SimpleThreadScheduler::GetCurrentAgentGroupScheduler() { WebAgentGroupScheduler* SimpleThreadScheduler::GetCurrentAgentGroupScheduler() {
return nullptr; return nullptr;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <memory> #include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
namespace blink { namespace blink {
...@@ -64,7 +64,7 @@ class SimpleThreadScheduler : public ThreadScheduler { ...@@ -64,7 +64,7 @@ class SimpleThreadScheduler : public ThreadScheduler {
PageScheduler::Delegate*) override; PageScheduler::Delegate*) override;
// Return nullptr // Return nullptr
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override; WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override;
// Unsupported. Return nullptr, and it may cause a crash. // Unsupported. Return nullptr, and it may cause a crash.
std::unique_ptr<RendererPauseHandle> PauseScheduler() override; std::unique_ptr<RendererPauseHandle> PauseScheduler() override;
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
namespace base { namespace base {
class SingleThreadTaskRunner; class SingleThreadTaskRunner;
...@@ -20,8 +20,7 @@ class MainThreadTaskQueue; ...@@ -20,8 +20,7 @@ class MainThreadTaskQueue;
// AgentGroupScheduler implementation which schedules per-AgentSchedulingGroup // AgentGroupScheduler implementation which schedules per-AgentSchedulingGroup
// tasks. // tasks.
class PLATFORM_EXPORT AgentGroupSchedulerImpl class PLATFORM_EXPORT AgentGroupSchedulerImpl : public WebAgentGroupScheduler {
: public blink::AgentGroupScheduler {
public: public:
explicit AgentGroupSchedulerImpl( explicit AgentGroupSchedulerImpl(
MainThreadSchedulerImpl& main_thread_scheduler); MainThreadSchedulerImpl& main_thread_scheduler);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "third_party/blink/public/common/input/web_mouse_wheel_event.h" #include "third_party/blink/public/common/input/web_mouse_wheel_event.h"
#include "third_party/blink/public/common/input/web_touch_event.h" #include "third_party/blink/public/common/input/web_touch_event.h"
#include "third_party/blink/public/common/page/launching_process_state.h" #include "third_party/blink/public/common/page/launching_process_state.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/public/platform/scheduler/web_renderer_process_type.h" #include "third_party/blink/public/platform/scheduler/web_renderer_process_type.h"
#include "third_party/blink/renderer/platform/bindings/parkable_string_manager.h" #include "third_party/blink/renderer/platform/bindings/parkable_string_manager.h"
#include "third_party/blink/renderer/platform/instrumentation/resource_coordinator/renderer_resource_coordinator.h" #include "third_party/blink/renderer/platform/instrumentation/resource_coordinator/renderer_resource_coordinator.h"
...@@ -43,7 +44,6 @@ ...@@ -43,7 +44,6 @@
#include "third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
#include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/functional.h"
#include "v8/include/v8.h" #include "v8/include/v8.h"
...@@ -2340,7 +2340,8 @@ std::unique_ptr<PageScheduler> MainThreadSchedulerImpl::CreatePageScheduler( ...@@ -2340,7 +2340,8 @@ std::unique_ptr<PageScheduler> MainThreadSchedulerImpl::CreatePageScheduler(
return page_scheduler; return page_scheduler;
} }
AgentGroupScheduler* MainThreadSchedulerImpl::GetCurrentAgentGroupScheduler() { WebAgentGroupScheduler*
MainThreadSchedulerImpl::GetCurrentAgentGroupScheduler() {
helper_.CheckOnValidThread(); helper_.CheckOnValidThread();
return current_agent_group_scheduler_; return current_agent_group_scheduler_;
} }
......
...@@ -224,7 +224,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl ...@@ -224,7 +224,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl
AgentGroupSchedulerImpl& EnsureAgentGroupScheduler(); AgentGroupSchedulerImpl& EnsureAgentGroupScheduler();
std::unique_ptr<PageScheduler> CreatePageScheduler( std::unique_ptr<PageScheduler> CreatePageScheduler(
PageScheduler::Delegate*) override; PageScheduler::Delegate*) override;
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override; WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override;
void SetCurrentAgentGroupScheduler( void SetCurrentAgentGroupScheduler(
AgentGroupSchedulerImpl* agent_group_scheduler_impl); AgentGroupSchedulerImpl* agent_group_scheduler_impl);
std::unique_ptr<ThreadScheduler::RendererPauseHandle> PauseScheduler() std::unique_ptr<ThreadScheduler::RendererPauseHandle> PauseScheduler()
......
// Copyright 2020 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 THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_AGENT_GROUP_SCHEDULER_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_AGENT_GROUP_SCHEDULER_H_
#include "base/single_thread_task_runner.h"
#include "third_party/blink/renderer/platform/platform_export.h"
namespace blink {
// AgentGroupScheduler schedules per-AgentSchedulingGroup tasks.
class PLATFORM_EXPORT AgentGroupScheduler {
public:
virtual ~AgentGroupScheduler() = default;
virtual scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() = 0;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_AGENT_GROUP_SCHEDULER_H_
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/blink/public/common/input/web_input_event_attribution.h" #include "third_party/blink/public/common/input/web_input_event_attribution.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/page_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/page_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h" #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
#include "third_party/blink/renderer/platform/wtf/vector.h" #include "third_party/blink/renderer/platform/wtf/vector.h"
...@@ -118,7 +118,8 @@ class PLATFORM_EXPORT ThreadScheduler { ...@@ -118,7 +118,8 @@ class PLATFORM_EXPORT ThreadScheduler {
// Return the current active AgentGroupScheduler. // Return the current active AgentGroupScheduler.
// If there is no active AgentGroupScheduler, it returns nullptr. // If there is no active AgentGroupScheduler, it returns nullptr.
virtual AgentGroupScheduler* GetCurrentAgentGroupScheduler() = 0; virtual scheduler::WebAgentGroupScheduler*
GetCurrentAgentGroupScheduler() = 0;
// Pauses the scheduler. See WebThreadScheduler::PauseRenderer for // Pauses the scheduler. See WebThreadScheduler::PauseRenderer for
// details. May only be called from the main thread. // details. May only be called from the main thread.
......
...@@ -78,7 +78,7 @@ NonMainThreadSchedulerImpl::CreatePageScheduler( ...@@ -78,7 +78,7 @@ NonMainThreadSchedulerImpl::CreatePageScheduler(
return nullptr; return nullptr;
} }
AgentGroupScheduler* WebAgentGroupScheduler*
NonMainThreadSchedulerImpl::GetCurrentAgentGroupScheduler() { NonMainThreadSchedulerImpl::GetCurrentAgentGroupScheduler() {
NOTREACHED(); NOTREACHED();
return nullptr; return nullptr;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/task/sequence_manager/sequence_manager.h" #include "base/task/sequence_manager/sequence_manager.h"
#include "base/task/sequence_manager/task_queue.h" #include "base/task/sequence_manager/task_queue.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h" #include "third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h"
...@@ -21,7 +22,6 @@ ...@@ -21,7 +22,6 @@
#include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h" #include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h"
namespace blink { namespace blink {
class AgentGroupScheduler;
namespace scheduler { namespace scheduler {
class WorkerSchedulerProxy; class WorkerSchedulerProxy;
...@@ -73,7 +73,7 @@ class PLATFORM_EXPORT NonMainThreadSchedulerImpl : public ThreadSchedulerImpl { ...@@ -73,7 +73,7 @@ class PLATFORM_EXPORT NonMainThreadSchedulerImpl : public ThreadSchedulerImpl {
std::unique_ptr<PageScheduler> CreatePageScheduler( std::unique_ptr<PageScheduler> CreatePageScheduler(
PageScheduler::Delegate*) override; PageScheduler::Delegate*) override;
AgentGroupScheduler* GetCurrentAgentGroupScheduler() override; WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override;
std::unique_ptr<RendererPauseHandle> PauseScheduler() override std::unique_ptr<RendererPauseHandle> PauseScheduler() override
WARN_UNUSED_RESULT; WARN_UNUSED_RESULT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment