summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc78
1 files changed, 54 insertions, 24 deletions
diff --git a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
index 006a901f95a..56a4eb6f6e9 100644
--- a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
+++ b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
@@ -444,13 +444,23 @@ class MainThreadSchedulerImplTest : public testing::Test {
default_task_runner_ =
scheduler_->DefaultTaskQueue()->GetTaskRunnerWithDefaultTaskType();
- compositor_task_runner_ =
- scheduler_->CompositorTaskQueue()->GetTaskRunnerWithDefaultTaskType();
+ if (!scheduler_->scheduling_settings()
+ .mbi_compositor_task_runner_per_agent_scheduling_group) {
+ compositor_task_runner_ =
+ scheduler_->CompositorTaskQueue()->GetTaskRunnerWithDefaultTaskType();
+ }
idle_task_runner_ = scheduler_->IdleTaskRunner();
v8_task_runner_ =
scheduler_->V8TaskQueue()->GetTaskRunnerWithDefaultTaskType();
- agent_group_scheduler_ = scheduler_->CreateAgentGroupScheduler();
+ agent_group_scheduler_ = std::unique_ptr<AgentGroupSchedulerImpl>(
+ static_cast<AgentGroupSchedulerImpl*>(
+ scheduler_->CreateAgentGroupScheduler().release()));
+ if (scheduler_->scheduling_settings()
+ .mbi_compositor_task_runner_per_agent_scheduling_group) {
+ compositor_task_runner_ = agent_group_scheduler_->CompositorTaskQueue()
+ ->GetTaskRunnerWithDefaultTaskType();
+ }
page_scheduler_ = std::make_unique<NiceMock<MockPageSchedulerImpl>>(
scheduler_.get(),
static_cast<AgentGroupSchedulerImpl&>(*agent_group_scheduler_));
@@ -474,6 +484,15 @@ class MainThreadSchedulerImplTest : public testing::Test {
blink::TaskType::kInternalHighPriorityLocalFrame);
}
+ MainThreadTaskQueue* compositor_task_queue() {
+ if (scheduler_->scheduling_settings()
+ .mbi_compositor_task_runner_per_agent_scheduling_group) {
+ return agent_group_scheduler_->CompositorTaskQueue().get();
+ } else {
+ return scheduler_->CompositorTaskQueue().get();
+ }
+ }
+
MainThreadTaskQueue* loading_task_queue() {
auto queue_traits = FrameSchedulerImpl::LoadingTaskQueueTraits();
return main_frame_scheduler_->FrameTaskQueueControllerForTest()
@@ -946,7 +965,7 @@ class MainThreadSchedulerImplTest : public testing::Test {
scoped_refptr<base::TestMockTimeTaskRunner> test_task_runner_;
std::unique_ptr<MainThreadSchedulerImplForTest> scheduler_;
- std::unique_ptr<WebAgentGroupScheduler> agent_group_scheduler_;
+ std::unique_ptr<AgentGroupSchedulerImpl> agent_group_scheduler_;
std::unique_ptr<MockPageSchedulerImpl> page_scheduler_;
std::unique_ptr<FrameSchedulerImpl> main_frame_scheduler_;
std::unique_ptr<WebWidgetScheduler> widget_scheduler_;
@@ -2485,8 +2504,8 @@ TEST_F(MainThreadSchedulerImplTest, StopAndThrottleThrottleableQueue) {
auto pause_handle = scheduler_->PauseRenderer();
base::RunLoop().RunUntilIdle();
- scheduler_->task_queue_throttler()->IncreaseThrottleRefCount(
- throttleable_task_queue()->GetTaskQueue());
+ MainThreadTaskQueue::ThrottleHandle handle =
+ throttleable_task_queue()->Throttle();
base::RunLoop().RunUntilIdle();
EXPECT_THAT(run_order, testing::ElementsAre());
}
@@ -2495,8 +2514,8 @@ TEST_F(MainThreadSchedulerImplTest, ThrottleAndPauseRenderer) {
Vector<String> run_order;
PostTestTasks(&run_order, "T1 T2");
- scheduler_->task_queue_throttler()->IncreaseThrottleRefCount(
- throttleable_task_queue()->GetTaskQueue());
+ MainThreadTaskQueue::ThrottleHandle handle =
+ throttleable_task_queue()->Throttle();
base::RunLoop().RunUntilIdle();
auto pause_handle = scheduler_->PauseRenderer();
base::RunLoop().RunUntilIdle();
@@ -2883,9 +2902,8 @@ TEST_F(MainThreadSchedulerImplTest, SYNCHRONIZED_GESTURE_CompositingExpensive) {
// Throttleable tasks should not have been starved by the expensive compositor
// tasks.
- EXPECT_EQ(
- TaskQueue::kNormalPriority,
- scheduler_->CompositorTaskQueue()->GetTaskQueue()->GetQueuePriority());
+ EXPECT_EQ(TaskQueue::kNormalPriority,
+ compositor_task_queue()->GetTaskQueue()->GetQueuePriority());
EXPECT_EQ(1000u, run_order.size());
}
@@ -2926,9 +2944,8 @@ TEST_F(MainThreadSchedulerImplTest, MAIN_THREAD_CUSTOM_INPUT_HANDLING) {
// Throttleable tasks should not have been starved by the expensive compositor
// tasks.
- EXPECT_EQ(
- TaskQueue::kNormalPriority,
- scheduler_->CompositorTaskQueue()->GetTaskQueue()->GetQueuePriority());
+ EXPECT_EQ(TaskQueue::kNormalPriority,
+ compositor_task_queue()->GetTaskQueue()->GetQueuePriority());
EXPECT_EQ(1000u, run_order.size());
}
@@ -2967,9 +2984,8 @@ TEST_F(MainThreadSchedulerImplTest, MAIN_THREAD_GESTURE) {
EXPECT_EQ(UseCase::kMainThreadGesture, CurrentUseCase()) << "i = " << i;
}
- EXPECT_EQ(
- TaskQueue::kHighestPriority,
- scheduler_->CompositorTaskQueue()->GetTaskQueue()->GetQueuePriority());
+ EXPECT_EQ(TaskQueue::kHighestPriority,
+ compositor_task_queue()->GetTaskQueue()->GetQueuePriority());
EXPECT_EQ(279u, run_order.size());
}
@@ -3140,7 +3156,7 @@ TEST_F(MainThreadSchedulerImplTest, EnableVirtualTime) {
EXPECT_EQ(scheduler_->DefaultTaskQueue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->GetVirtualTimeDomain());
- EXPECT_EQ(scheduler_->CompositorTaskQueue()->GetTaskQueue()->GetTimeDomain(),
+ EXPECT_EQ(compositor_task_queue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->GetVirtualTimeDomain());
EXPECT_EQ(loading_task_queue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->GetVirtualTimeDomain());
@@ -3199,15 +3215,13 @@ TEST_F(MainThreadSchedulerImplTest, EnableVirtualTimeAfterThrottling) {
frame_scheduler->SetCrossOriginToMainFrame(true);
frame_scheduler->SetFrameVisible(false);
- EXPECT_TRUE(scheduler_->task_queue_throttler()->IsThrottled(
- throttleable_tq->GetTaskQueue()));
+ EXPECT_TRUE(throttleable_tq->IsThrottled());
scheduler_->EnableVirtualTime(
MainThreadSchedulerImpl::BaseTimeOverridePolicy::DO_NOT_OVERRIDE);
EXPECT_EQ(throttleable_tq->GetTaskQueue()->GetTimeDomain(),
scheduler_->GetVirtualTimeDomain());
- EXPECT_FALSE(scheduler_->task_queue_throttler()->IsThrottled(
- throttleable_tq->GetTaskQueue()));
+ EXPECT_FALSE(throttleable_tq->IsThrottled());
}
TEST_F(MainThreadSchedulerImplTest, DisableVirtualTimeForTesting) {
@@ -3216,7 +3230,7 @@ TEST_F(MainThreadSchedulerImplTest, DisableVirtualTimeForTesting) {
scheduler_->DisableVirtualTimeForTesting();
EXPECT_EQ(scheduler_->DefaultTaskQueue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->real_time_domain());
- EXPECT_EQ(scheduler_->CompositorTaskQueue()->GetTaskQueue()->GetTimeDomain(),
+ EXPECT_EQ(compositor_task_queue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->real_time_domain());
EXPECT_EQ(loading_task_queue()->GetTaskQueue()->GetTimeDomain(),
scheduler_->real_time_domain());
@@ -3342,7 +3356,7 @@ TEST_F(MainThreadSchedulerImplTest, Tracing) {
FROM_HERE, base::BindOnce(NullTask),
base::TimeDelta::FromMilliseconds(10));
- EXPECT_FALSE(scheduler_->ToString().empty());
+ scheduler_->CreateTraceEventObjectSnapshot();
}
TEST_F(MainThreadSchedulerImplTest,
@@ -4130,6 +4144,22 @@ TEST_F(BestEffortNonMainQueuesUntilOnFMPTimeoutTest,
TaskQueue::QueuePriority::kNormalPriority);
}
+TEST_F(MainThreadSchedulerImplTest, ThrottleHandleThrottlesQueue) {
+ EXPECT_FALSE(throttleable_task_queue()->IsThrottled());
+ {
+ MainThreadTaskQueue::ThrottleHandle handle =
+ throttleable_task_queue()->Throttle();
+ EXPECT_TRUE(throttleable_task_queue()->IsThrottled());
+ {
+ MainThreadTaskQueue::ThrottleHandle handle_2 =
+ throttleable_task_queue()->Throttle();
+ EXPECT_TRUE(throttleable_task_queue()->IsThrottled());
+ }
+ EXPECT_TRUE(throttleable_task_queue()->IsThrottled());
+ }
+ EXPECT_FALSE(throttleable_task_queue()->IsThrottled());
+}
+
} // namespace main_thread_scheduler_impl_unittest
} // namespace scheduler
} // namespace blink