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

[MBI] Add GetCurrentAgentGroupScheduler to WebThreadScheduler

This CL adds GetCurrentAgentGroupScheduler function to WebThreadScheduler so that it can be called from the content layer.

Bug: 1105403, 1113102
Change-Id: I0c78867453bf942deb4dc98fd557ad4662d4a7e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2444619
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarTal Pressman <talp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814060}
parent 2f64d2af
......@@ -23,6 +23,7 @@ class WebFakeThreadScheduler : public WebThreadScheduler {
scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
std::unique_ptr<WebWidgetScheduler> CreateWidgetScheduler() override;
WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override;
std::unique_ptr<WebRenderWidgetSchedulingState>
NewRenderWidgetSchedulingState() override;
void WillBeginFrame(const viz::BeginFrameArgs& args) override;
......
......@@ -35,6 +35,7 @@ class WebMockThreadScheduler : public WebThreadScheduler {
MOCK_METHOD0(LoadingTaskRunner,
scoped_refptr<base::SingleThreadTaskRunner>());
MOCK_METHOD0(IPCTaskRunner, scoped_refptr<base::SingleThreadTaskRunner>());
MOCK_METHOD0(GetCurrentAgentGroupScheduler, WebAgentGroupScheduler*());
MOCK_METHOD0(NewRenderWidgetSchedulingState,
std::unique_ptr<WebRenderWidgetSchedulingState>());
MOCK_METHOD1(WillBeginFrame, void(const viz::BeginFrameArgs&));
......
......@@ -13,6 +13,7 @@
#include "base/time/time.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
#include "third_party/blink/public/platform/scheduler/web_rail_mode_observer.h"
#include "third_party/blink/public/platform/scheduler/web_render_widget_scheduling_state.h"
#include "third_party/blink/public/platform/web_common.h"
......@@ -93,6 +94,16 @@ class BLINK_PLATFORM_EXPORT WebThreadScheduler {
// thread.
virtual std::unique_ptr<WebWidgetScheduler> CreateWidgetScheduler();
// Return the current active AgentGroupScheduler.
// When a task which belongs to a specific AgentGroupScheduler is going to be
// run, this AgentGroupScheduler becomes the current active
// AgentGroupScheduler. And when the task is finished, the current active
// AgentGroupScheduler becomes nullptr. So if there is no active
// AgentGroupScheduler, this function returns nullptr. This behaviour is
// implemented by MainThreadSchedulerImpl’s OnTaskStarted and OnTaskCompleted
// hook points. So you can’t use this functionality in task observers.
virtual WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() = 0;
// Returns a new WebRenderWidgetSchedulingState. The signals from this will
// be used to make scheduling decisions.
virtual std::unique_ptr<WebRenderWidgetSchedulingState>
......
......@@ -252,6 +252,10 @@ class DummyWebThreadScheduler : public WebThreadScheduler,
PageScheduler::Delegate*) override {
return std::make_unique<DummyPageScheduler>();
}
WebAgentGroupScheduler* GetCurrentAgentGroupScheduler() override {
return nullptr;
}
};
} // namespace
......
......@@ -37,6 +37,11 @@ WebFakeThreadScheduler::CreateWidgetScheduler() {
return std::make_unique<WebFakeWidgetScheduler>();
}
WebAgentGroupScheduler*
WebFakeThreadScheduler::GetCurrentAgentGroupScheduler() {
return nullptr;
}
std::unique_ptr<WebRenderWidgetSchedulingState>
WebFakeThreadScheduler::NewRenderWidgetSchedulingState() {
return nullptr;
......
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