OLD | NEW |
---|---|
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" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 } | 66 } |
67 | 67 |
68 protected: | 68 protected: |
69 int scheduler_begin_frame_deadline_count_; | 69 int scheduler_begin_frame_deadline_count_; |
70 }; | 70 }; |
71 | 71 |
72 class DisplaySchedulerTest : public testing::Test { | 72 class DisplaySchedulerTest : public testing::Test { |
73 public: | 73 public: |
74 DisplaySchedulerTest() | 74 DisplaySchedulerTest() |
75 : fake_begin_frame_source_(0.f, false), | 75 : fake_begin_frame_source_(0.f, false), |
76 next_begin_frame_number_(BeginFrameArgs::kStartingFrameNumber), | |
76 task_runner_(new base::NullTaskRunner), | 77 task_runner_(new base::NullTaskRunner), |
77 scheduler_(&fake_begin_frame_source_, | 78 scheduler_(&fake_begin_frame_source_, |
78 task_runner_.get(), | 79 task_runner_.get(), |
79 kMaxPendingSwaps) { | 80 kMaxPendingSwaps) { |
80 now_src_.Advance(base::TimeDelta::FromMicroseconds(10000)); | 81 now_src_.Advance(base::TimeDelta::FromMicroseconds(10000)); |
81 scheduler_.SetClient(&client_); | 82 scheduler_.SetClient(&client_); |
82 } | 83 } |
83 | 84 |
84 ~DisplaySchedulerTest() override {} | 85 ~DisplaySchedulerTest() override {} |
85 | 86 |
86 void SetUp() override { scheduler_.SetRootSurfaceResourcesLocked(false); } | 87 void SetUp() override { scheduler_.SetRootSurfaceResourcesLocked(false); } |
87 | 88 |
88 void BeginFrameForTest() { | 89 void BeginFrameForTest() { |
89 base::TimeTicks frame_time = now_src_.NowTicks(); | 90 base::TimeTicks frame_time = now_src_.NowTicks(); |
90 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); | 91 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); |
91 base::TimeTicks deadline = frame_time + interval; | 92 base::TimeTicks deadline = frame_time + interval; |
92 fake_begin_frame_source_.TestOnBeginFrame( | 93 fake_begin_frame_source_.TestOnBeginFrame(BeginFrameArgs::Create( |
93 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, | 94 BEGINFRAME_FROM_HERE, fake_begin_frame_source_.source_id(), |
94 interval, BeginFrameArgs::NORMAL)); | 95 next_begin_frame_number_++, frame_time, deadline, interval, |
96 BeginFrameArgs::NORMAL)); | |
95 } | 97 } |
96 | 98 |
97 protected: | 99 protected: |
98 base::SimpleTestTickClock& now_src() { return now_src_; } | 100 base::SimpleTestTickClock& now_src() { return now_src_; } |
99 FakeDisplaySchedulerClient& client() { return client_; } | 101 FakeDisplaySchedulerClient& client() { return client_; } |
100 DisplayScheduler& scheduler() { return scheduler_; } | 102 DisplayScheduler& scheduler() { return scheduler_; } |
101 | 103 |
102 FakeExternalBeginFrameSource fake_begin_frame_source_; | 104 FakeExternalBeginFrameSource fake_begin_frame_source_; |
105 uint64_t next_begin_frame_number_; | |
brianderson
2016/12/15 22:10:33
In this case, does it make sense for this to be tr
Eric Seckler
2016/12/16 17:25:58
true, that's nicer :) Done.
| |
103 | 106 |
104 base::SimpleTestTickClock now_src_; | 107 base::SimpleTestTickClock now_src_; |
105 scoped_refptr<base::NullTaskRunner> task_runner_; | 108 scoped_refptr<base::NullTaskRunner> task_runner_; |
106 FakeDisplaySchedulerClient client_; | 109 FakeDisplaySchedulerClient client_; |
107 TestDisplayScheduler scheduler_; | 110 TestDisplayScheduler scheduler_; |
108 }; | 111 }; |
109 | 112 |
110 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { | 113 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { |
111 SurfaceId root_surface_id1(kArbitraryFrameSinkId, | 114 SurfaceId root_surface_id1(kArbitraryFrameSinkId, |
112 LocalFrameId(1, base::UnguessableToken::Create())); | 115 LocalFrameId(1, base::UnguessableToken::Create())); |
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
570 | 573 |
571 scheduler_.SetRootSurfaceResourcesLocked(true); | 574 scheduler_.SetRootSurfaceResourcesLocked(true); |
572 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 575 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
573 | 576 |
574 scheduler_.OutputSurfaceLost(); | 577 scheduler_.OutputSurfaceLost(); |
575 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | 578 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
576 } | 579 } |
577 | 580 |
578 } // namespace | 581 } // namespace |
579 } // namespace cc | 582 } // namespace cc |
OLD | NEW |