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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/child/idle_helper_unittest.cc

Issue 2118903002: scheduler: Move the Blink scheduler into Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another GYP fix Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/scheduler/child/idle_helper.h" 5 #include "platform/scheduler/child/idle_helper.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/test/simple_test_tick_clock.h" 12 #include "base/test/simple_test_tick_clock.h"
13 #include "cc/test/ordered_simple_task_runner.h" 13 #include "cc/test/ordered_simple_task_runner.h"
14 #include "components/scheduler/base/real_time_domain.h" 14 #include "platform/scheduler/base/real_time_domain.h"
15 #include "components/scheduler/base/task_queue.h" 15 #include "public/platform/scheduler/base/task_queue.h"
16 #include "components/scheduler/base/task_queue_manager.h" 16 #include "platform/scheduler/base/task_queue_manager.h"
17 #include "components/scheduler/base/test_time_source.h" 17 #include "platform/scheduler/base/test_time_source.h"
18 #include "components/scheduler/child/scheduler_helper.h" 18 #include "platform/scheduler/child/scheduler_helper.h"
19 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h" 19 #include "platform/scheduler/child/scheduler_tqm_delegate_for_test.h"
20 #include "components/scheduler/child/scheduler_tqm_delegate_impl.h" 20 #include "platform/scheduler/child/scheduler_tqm_delegate_impl.h"
21 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 23
24 using testing::_; 24 using testing::_;
25 using testing::AnyNumber; 25 using testing::AnyNumber;
26 using testing::AtLeast; 26 using testing::AtLeast;
27 using testing::Exactly; 27 using testing::Exactly;
28 using testing::Invoke; 28 using testing::Invoke;
29 using testing::Return; 29 using testing::Return;
30 30
31 namespace blink {
31 namespace scheduler { 32 namespace scheduler {
32 33
33 namespace { 34 namespace {
34 void AppendToVectorTestTask(std::vector<std::string>* vector, 35 void AppendToVectorTestTask(std::vector<std::string>* vector,
35 std::string value) { 36 std::string value) {
36 vector->push_back(value); 37 vector->push_back(value);
37 } 38 }
38 39
39 void AppendToVectorIdleTestTask(std::vector<std::string>* vector, 40 void AppendToVectorIdleTestTask(std::vector<std::string>* vector,
40 std::string value, 41 std::string value,
41 base::TimeTicks deadline) { 42 base::TimeTicks deadline) {
42 AppendToVectorTestTask(vector, value); 43 AppendToVectorTestTask(vector, value);
43 } 44 }
44 45
45 void NullTask() { 46 void NullTask() {}
46 }
47 47
48 void NullIdleTask(base::TimeTicks deadline) { 48 void NullIdleTask(base::TimeTicks deadline) {}
49 }
50 49
51 void AppendToVectorReentrantTask(base::SingleThreadTaskRunner* task_runner, 50 void AppendToVectorReentrantTask(base::SingleThreadTaskRunner* task_runner,
52 std::vector<int>* vector, 51 std::vector<int>* vector,
53 int* reentrant_count, 52 int* reentrant_count,
54 int max_reentrant_count) { 53 int max_reentrant_count) {
55 vector->push_back((*reentrant_count)++); 54 vector->push_back((*reentrant_count)++);
56 if (*reentrant_count < max_reentrant_count) { 55 if (*reentrant_count < max_reentrant_count) {
57 task_runner->PostTask( 56 task_runner->PostTask(
58 FROM_HERE, 57 FROM_HERE,
59 base::Bind(AppendToVectorReentrantTask, base::Unretained(task_runner), 58 base::Bind(AppendToVectorReentrantTask, base::Unretained(task_runner),
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 clock_->NowTicks() + base::TimeDelta::FromMilliseconds(10)); 524 clock_->NowTicks() + base::TimeDelta::FromMilliseconds(10));
526 idle_helper_->EndIdlePeriod(); 525 idle_helper_->EndIdlePeriod();
527 } 526 }
528 527
529 class IdleHelperWithMessageLoopTest : public BaseIdleHelperTest { 528 class IdleHelperWithMessageLoopTest : public BaseIdleHelperTest {
530 public: 529 public:
531 IdleHelperWithMessageLoopTest() 530 IdleHelperWithMessageLoopTest()
532 : BaseIdleHelperTest(new base::MessageLoop(), base::TimeDelta()) {} 531 : BaseIdleHelperTest(new base::MessageLoop(), base::TimeDelta()) {}
533 ~IdleHelperWithMessageLoopTest() override {} 532 ~IdleHelperWithMessageLoopTest() override {}
534 533
535 void PostFromNestedRunloop(std::vector< 534 void PostFromNestedRunloop(
536 std::pair<SingleThreadIdleTaskRunner::IdleTask, bool>>* tasks) { 535 std::vector<std::pair<SingleThreadIdleTaskRunner::IdleTask, bool>>*
536 tasks) {
537 base::MessageLoop::ScopedNestableTaskAllower allow(message_loop_.get()); 537 base::MessageLoop::ScopedNestableTaskAllower allow(message_loop_.get());
538 for (std::pair<SingleThreadIdleTaskRunner::IdleTask, bool>& pair : *tasks) { 538 for (std::pair<SingleThreadIdleTaskRunner::IdleTask, bool>& pair : *tasks) {
539 if (pair.second) { 539 if (pair.second) {
540 idle_task_runner_->PostIdleTask(FROM_HERE, pair.first); 540 idle_task_runner_->PostIdleTask(FROM_HERE, pair.first);
541 } else { 541 } else {
542 idle_task_runner_->PostNonNestableIdleTask(FROM_HERE, pair.first); 542 idle_task_runner_->PostNonNestableIdleTask(FROM_HERE, pair.first);
543 } 543 }
544 } 544 }
545 idle_helper_->StartIdlePeriod( 545 idle_helper_->StartIdlePeriod(
546 IdleHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->NowTicks(), 546 IdleHelper::IdlePeriodState::IN_SHORT_IDLE_PERIOD, clock_->NowTicks(),
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 void MakeNonQuiescent() { 978 void MakeNonQuiescent() {
979 // Run an arbitrary task so we're deemed to be not quiescent. 979 // Run an arbitrary task so we're deemed to be not quiescent.
980 default_task_runner_->PostTask(FROM_HERE, base::Bind(NullTask)); 980 default_task_runner_->PostTask(FROM_HERE, base::Bind(NullTask));
981 RunUntilIdle(); 981 RunUntilIdle();
982 } 982 }
983 983
984 private: 984 private:
985 DISALLOW_COPY_AND_ASSIGN(IdleHelperWithQuiescencePeriodTest); 985 DISALLOW_COPY_AND_ASSIGN(IdleHelperWithQuiescencePeriodTest);
986 }; 986 };
987 987
988 class IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver : 988 class IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver
989 public IdleHelperWithQuiescencePeriodTest { 989 : public IdleHelperWithQuiescencePeriodTest {
990 public: 990 public:
991
992 IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver() 991 IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver()
993 : IdleHelperWithQuiescencePeriodTest() {} 992 : IdleHelperWithQuiescencePeriodTest() {}
994 993
995 ~IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver() override {} 994 ~IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver() override {}
996 995
997 void SetUp() override { 996 void SetUp() override {
998 // Don't set expectations on IdleHelper::Delegate. 997 // Don't set expectations on IdleHelper::Delegate.
999 } 998 }
1000 999
1001 private: 1000 private:
1002 DISALLOW_COPY_AND_ASSIGN( 1001 DISALLOW_COPY_AND_ASSIGN(
1003 IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver); 1002 IdleHelperWithQuiescencePeriodTestWithIdlePeriodObserver);
1004 }; 1003 };
1005 1004
1006
1007 TEST_F(IdleHelperWithQuiescencePeriodTest, 1005 TEST_F(IdleHelperWithQuiescencePeriodTest,
1008 LongIdlePeriodStartsImmediatelyIfQuiescent) { 1006 LongIdlePeriodStartsImmediatelyIfQuiescent) {
1009 base::TimeTicks actual_deadline; 1007 base::TimeTicks actual_deadline;
1010 int run_count = 0; 1008 int run_count = 0;
1011 max_idle_task_reposts = 1; 1009 max_idle_task_reposts = 1;
1012 idle_task_runner_->PostIdleTask( 1010 idle_task_runner_->PostIdleTask(
1013 FROM_HERE, 1011 FROM_HERE,
1014 base::Bind(&RepostingIdleTestTask, base::RetainedRef(idle_task_runner_), 1012 base::Bind(&RepostingIdleTestTask, base::RetainedRef(idle_task_runner_),
1015 &run_count, &actual_deadline)); 1013 &run_count, &actual_deadline));
1016 1014
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 EXPECT_EQ(0, run_count); 1148 EXPECT_EQ(0, run_count);
1151 1149
1152 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), 1150 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask),
1153 more_than_min_deadline_duration); 1151 more_than_min_deadline_duration);
1154 idle_helper_->EnableLongIdlePeriod(); 1152 idle_helper_->EnableLongIdlePeriod();
1155 RunUntilIdle(); 1153 RunUntilIdle();
1156 EXPECT_EQ(1, run_count); 1154 EXPECT_EQ(1, run_count);
1157 } 1155 }
1158 1156
1159 } // namespace scheduler 1157 } // namespace scheduler
1158 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698