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

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

Powered by Google App Engine
This is Rietveld 408576698