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

Side by Side Diff: cc/surfaces/display_scheduler_unittest.cc

Issue 1205483004: cc: Remove unnecessary task runner refptrs from schedulers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_begin_frame_source_constructor
Patch Set: fix surfaces_scheduler compile error Created 5 years, 6 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
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | cc/surfaces/display_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "cc/surfaces/display_scheduler.h" 5 #include "cc/surfaces/display_scheduler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/test/null_task_runner.h" 8 #include "base/test/null_task_runner.h"
9 #include "base/test/simple_test_tick_clock.h" 9 #include "base/test/simple_test_tick_clock.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
11 #include "cc/output/begin_frame_args.h" 11 #include "cc/output/begin_frame_args.h"
12 #include "cc/surfaces/display.h" 12 #include "cc/surfaces/display.h"
13 #include "cc/test/scheduler_test_common.h" 13 #include "cc/test/scheduler_test_common.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace cc { 16 namespace cc {
17 namespace { 17 namespace {
18 18
19 const int kMaxPendingSwaps = 1;
20
19 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { 21 class FakeDisplaySchedulerClient : public DisplaySchedulerClient {
20 public: 22 public:
21 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} 23 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {}
22 24
23 ~FakeDisplaySchedulerClient() override {} 25 ~FakeDisplaySchedulerClient() override {}
24 26
25 bool DrawAndSwap() override { 27 bool DrawAndSwap() override {
26 draw_and_swap_count_++; 28 draw_and_swap_count_++;
27 return true; 29 return true;
28 } 30 }
29 31
30 void Reset() { draw_and_swap_count_ = 0; } 32 void Reset() { draw_and_swap_count_ = 0; }
31 33
32 int draw_and_swap_count() const { return draw_and_swap_count_; } 34 int draw_and_swap_count() const { return draw_and_swap_count_; }
33 35
34 protected: 36 protected:
35 int draw_and_swap_count_; 37 int draw_and_swap_count_;
36 }; 38 };
37 39
38 class TestDisplayScheduler : public DisplayScheduler { 40 class TestDisplayScheduler : public DisplayScheduler {
39 public: 41 public:
40 TestDisplayScheduler(DisplaySchedulerClient* client, 42 TestDisplayScheduler(DisplaySchedulerClient* client,
41 BeginFrameSource* begin_frame_source, 43 BeginFrameSource* begin_frame_source,
42 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 44 base::SingleThreadTaskRunner* task_runner,
43 int max_pending_swaps) 45 int max_pending_swaps)
44 : DisplayScheduler(client, 46 : DisplayScheduler(client,
45 begin_frame_source, 47 begin_frame_source,
46 task_runner, 48 task_runner,
47 max_pending_swaps), 49 max_pending_swaps),
48 scheduler_begin_frame_deadline_count_(0) {} 50 scheduler_begin_frame_deadline_count_(0) {}
49 51
50 base::TimeTicks DesiredBeginFrameDeadlineTimeForTest() { 52 base::TimeTicks DesiredBeginFrameDeadlineTimeForTest() {
51 return DesiredBeginFrameDeadlineTime(); 53 return DesiredBeginFrameDeadlineTime();
52 } 54 }
53 55
54 void BeginFrameDeadlineForTest() { OnBeginFrameDeadline(); } 56 void BeginFrameDeadlineForTest() { OnBeginFrameDeadline(); }
55 57
56 void ScheduleBeginFrameDeadline() override { 58 void ScheduleBeginFrameDeadline() override {
57 scheduler_begin_frame_deadline_count_++; 59 scheduler_begin_frame_deadline_count_++;
58 DisplayScheduler::ScheduleBeginFrameDeadline(); 60 DisplayScheduler::ScheduleBeginFrameDeadline();
59 } 61 }
60 62
61 int scheduler_begin_frame_deadline_count() { 63 int scheduler_begin_frame_deadline_count() {
62 return scheduler_begin_frame_deadline_count_; 64 return scheduler_begin_frame_deadline_count_;
63 } 65 }
64 66
65 protected: 67 protected:
66 int scheduler_begin_frame_deadline_count_; 68 int scheduler_begin_frame_deadline_count_;
67 }; 69 };
68 70
69 class DisplaySchedulerTest : public testing::Test { 71 class DisplaySchedulerTest : public testing::Test {
70 public: 72 public:
71 DisplaySchedulerTest() : now_src_(new base::SimpleTestTickClock()) { 73 DisplaySchedulerTest()
72 const int max_pending_swaps = 1; 74 : now_src_(new base::SimpleTestTickClock()),
75 task_runner_(new base::NullTaskRunner),
76 client_(new FakeDisplaySchedulerClient),
77 scheduler_(new TestDisplayScheduler(client_.get(),
78 &fake_begin_frame_source_,
79 task_runner_.get(),
80 kMaxPendingSwaps)) {
73 now_src_->Advance(base::TimeDelta::FromMicroseconds(10000)); 81 now_src_->Advance(base::TimeDelta::FromMicroseconds(10000));
74 null_task_runner_ = make_scoped_refptr(new base::NullTaskRunner);
75 client_ = make_scoped_ptr(new FakeDisplaySchedulerClient);
76 scheduler_ = make_scoped_ptr(
77 new TestDisplayScheduler(client_.get(), &fake_begin_frame_source_,
78 null_task_runner_, max_pending_swaps));
79 } 82 }
80 83
81 ~DisplaySchedulerTest() override {} 84 ~DisplaySchedulerTest() override {}
82 85
83 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); } 86 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); }
84 87
85 void BeginFrameForTest() { 88 void BeginFrameForTest() {
86 base::TimeTicks frame_time = now_src_->NowTicks(); 89 base::TimeTicks frame_time = now_src_->NowTicks();
87 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); 90 base::TimeDelta interval = BeginFrameArgs::DefaultInterval();
88 base::TimeTicks deadline = frame_time + interval; 91 base::TimeTicks deadline = frame_time + interval;
89 fake_begin_frame_source_.TestOnBeginFrame( 92 fake_begin_frame_source_.TestOnBeginFrame(
90 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, 93 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline,
91 interval, BeginFrameArgs::NORMAL)); 94 interval, BeginFrameArgs::NORMAL));
92 } 95 }
93 96
94 protected: 97 protected:
95 base::SimpleTestTickClock& now_src() { return *now_src_; } 98 base::SimpleTestTickClock& now_src() { return *now_src_; }
96 FakeDisplaySchedulerClient& client() { return *client_; } 99 FakeDisplaySchedulerClient& client() { return *client_; }
97 DisplayScheduler& scheduler() { return *scheduler_; } 100 DisplayScheduler& scheduler() { return *scheduler_; }
98 101
102 FakeBeginFrameSource fake_begin_frame_source_;
103
99 scoped_ptr<base::SimpleTestTickClock> now_src_; 104 scoped_ptr<base::SimpleTestTickClock> now_src_;
100 scoped_refptr<base::NullTaskRunner> null_task_runner_; 105 scoped_refptr<base::NullTaskRunner> task_runner_;
101
102 FakeBeginFrameSource fake_begin_frame_source_;
103 scoped_ptr<FakeDisplaySchedulerClient> client_; 106 scoped_ptr<FakeDisplaySchedulerClient> client_;
104 scoped_ptr<TestDisplayScheduler> scheduler_; 107 scoped_ptr<TestDisplayScheduler> scheduler_;
105 }; 108 };
106 109
107 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) { 110 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) {
108 SurfaceId root_surface_id(1); 111 SurfaceId root_surface_id(1);
109 BeginFrameForTest(); 112 BeginFrameForTest();
110 EXPECT_LT(now_src().NowTicks(), 113 EXPECT_LT(now_src().NowTicks(),
111 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 114 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
112 scheduler_->EntireDisplayDamaged(root_surface_id); 115 scheduler_->EntireDisplayDamaged(root_surface_id);
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 338
336 scheduler_->SetRootSurfaceResourcesLocked(true); 339 scheduler_->SetRootSurfaceResourcesLocked(true);
337 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 340 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
338 341
339 scheduler_->OutputSurfaceLost(); 342 scheduler_->OutputSurfaceLost();
340 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 343 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
341 } 344 }
342 345
343 } // namespace 346 } // namespace
344 } // namespace cc 347 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | cc/surfaces/display_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698