Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc

Issue 969373002: [content]: Add CanExceedIdleDeadlineIfRequired function to RendererScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@long_idle_5
Patch Set: Rebased Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/scheduler/renderer_scheduler_impl.h" 5 #include "content/renderer/scheduler/renderer_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "cc/output/begin_frame_args.h" 8 #include "cc/output/begin_frame_args.h"
9 #include "cc/test/ordered_simple_task_runner.h" 9 #include "cc/test/ordered_simple_task_runner.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 scheduler_->BeginFrameNotExpectedSoon(); 998 scheduler_->BeginFrameNotExpectedSoon();
999 RunUntilIdle(); 999 RunUntilIdle();
1000 EXPECT_EQ(0, run_count); 1000 EXPECT_EQ(0, run_count);
1001 1001
1002 // The long idle period should start after the touchstart policy has finished. 1002 // The long idle period should start after the touchstart policy has finished.
1003 clock_->AdvanceNow(priority_escalation_after_input_duration()); 1003 clock_->AdvanceNow(priority_escalation_after_input_duration());
1004 RunUntilIdle(); 1004 RunUntilIdle();
1005 EXPECT_EQ(1, run_count); 1005 EXPECT_EQ(1, run_count);
1006 } 1006 }
1007 1007
1008 void TestCanExceedIdleDeadlineIfRequiredTask(RendererScheduler* scheduler,
1009 bool* can_exceed_idle_deadline_out,
1010 int* run_count,
1011 base::TimeTicks deadline) {
1012 *can_exceed_idle_deadline_out = scheduler->CanExceedIdleDeadlineIfRequired();
1013 (*run_count)++;
1014 }
1015
1016 TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) {
1017 int run_count = 0;
1018 bool can_exceed_idle_deadline = false;
1019
1020 // Should return false if not in an idle period.
1021 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
1022
1023 // Should return false for short idle periods.
1024 idle_task_runner_->PostIdleTask(
1025 FROM_HERE,
1026 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1027 &can_exceed_idle_deadline, &run_count));
1028 EnableIdleTasks();
1029 RunUntilIdle();
1030 EXPECT_EQ(1, run_count);
1031 EXPECT_FALSE(can_exceed_idle_deadline);
1032
1033 // Should return false for a long idle period which is shortened due to a
1034 // pending delayed task.
1035 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask),
1036 base::TimeDelta::FromMilliseconds(10));
1037 idle_task_runner_->PostIdleTask(
1038 FROM_HERE,
1039 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1040 &can_exceed_idle_deadline, &run_count));
1041 scheduler_->BeginFrameNotExpectedSoon();
1042 RunUntilIdle();
1043 EXPECT_EQ(2, run_count);
1044 EXPECT_FALSE(can_exceed_idle_deadline);
1045
1046 // Next long idle period will be for the maximum time, so
1047 // CanExceedIdleDeadlineIfRequired should return true.
1048 clock_->AdvanceNow(maximum_idle_period_duration());
1049 idle_task_runner_->PostIdleTask(
1050 FROM_HERE,
1051 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1052 &can_exceed_idle_deadline, &run_count));
1053 RunUntilIdle();
1054 EXPECT_EQ(3, run_count);
1055 EXPECT_TRUE(can_exceed_idle_deadline);
1056
1057 // Next long idle period will be for the maximum time, so
1058 // CanExceedIdleDeadlineIfRequired should return true.
1059 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
1060 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
1061 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
1062 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
1063 }
1064
1008 } // namespace content 1065 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698