Chromium Code Reviews| 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 |