| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/scheduler/begin_frame_source.h" | 5 #include "cc/scheduler/begin_frame_source.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 static const int64_t kDeadline; | 24 static const int64_t kDeadline; |
| 25 static const int64_t kInterval; | 25 static const int64_t kInterval; |
| 26 | 26 |
| 27 void SetUp() override { | 27 void SetUp() override { |
| 28 now_src_.reset(new base::SimpleTestTickClock()); | 28 now_src_.reset(new base::SimpleTestTickClock()); |
| 29 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); | 29 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); |
| 30 task_runner_ = | 30 task_runner_ = |
| 31 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); | 31 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); |
| 32 std::unique_ptr<TestDelayBasedTimeSource> time_source( | 32 std::unique_ptr<TestDelayBasedTimeSource> time_source( |
| 33 new TestDelayBasedTimeSource(now_src_.get(), task_runner_.get())); | 33 new TestDelayBasedTimeSource(now_src_.get(), task_runner_.get())); |
| 34 delay_based_time_source_ = time_source.get(); |
| 34 source_.reset(new BackToBackBeginFrameSource(std::move(time_source))); | 35 source_.reset(new BackToBackBeginFrameSource(std::move(time_source))); |
| 35 obs_ = base::WrapUnique(new ::testing::StrictMock<MockBeginFrameObserver>); | 36 obs_ = base::WrapUnique(new ::testing::StrictMock<MockBeginFrameObserver>); |
| 36 } | 37 } |
| 37 | 38 |
| 38 void TearDown() override { obs_.reset(); } | 39 void TearDown() override { obs_.reset(); } |
| 39 | 40 |
| 40 std::unique_ptr<base::SimpleTestTickClock> now_src_; | 41 std::unique_ptr<base::SimpleTestTickClock> now_src_; |
| 41 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; | 42 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; |
| 42 std::unique_ptr<BackToBackBeginFrameSource> source_; | 43 std::unique_ptr<BackToBackBeginFrameSource> source_; |
| 43 std::unique_ptr<MockBeginFrameObserver> obs_; | 44 std::unique_ptr<MockBeginFrameObserver> obs_; |
| 45 TestDelayBasedTimeSource* delay_based_time_source_; // Owned by |now_src_|. |
| 44 }; | 46 }; |
| 45 | 47 |
| 46 const int64_t BackToBackBeginFrameSourceTest::kDeadline = | 48 const int64_t BackToBackBeginFrameSourceTest::kDeadline = |
| 47 BeginFrameArgs::DefaultInterval().ToInternalValue(); | 49 BeginFrameArgs::DefaultInterval().ToInternalValue(); |
| 48 | 50 |
| 49 const int64_t BackToBackBeginFrameSourceTest::kInterval = | 51 const int64_t BackToBackBeginFrameSourceTest::kInterval = |
| 50 BeginFrameArgs::DefaultInterval().ToInternalValue(); | 52 BeginFrameArgs::DefaultInterval().ToInternalValue(); |
| 51 | 53 |
| 52 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) { | 54 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) { |
| 53 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); | 55 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval); | 260 EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval); |
| 259 task_runner_->RunPendingTasks(); | 261 task_runner_->RunPendingTasks(); |
| 260 | 262 |
| 261 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); | 263 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); |
| 262 source_->DidFinishFrame(&obs1, 0); | 264 source_->DidFinishFrame(&obs1, 0); |
| 263 EXPECT_BEGIN_FRAME_USED(obs1, 1200, 1200 + kDeadline, kInterval); | 265 EXPECT_BEGIN_FRAME_USED(obs1, 1200, 1200 + kDeadline, kInterval); |
| 264 task_runner_->RunPendingTasks(); | 266 task_runner_->RunPendingTasks(); |
| 265 | 267 |
| 266 source_->DidFinishFrame(&obs1, 0); | 268 source_->DidFinishFrame(&obs1, 0); |
| 267 source_->RemoveObserver(&obs1); | 269 source_->RemoveObserver(&obs1); |
| 270 // Removing all finished observers should disable the time source. |
| 271 EXPECT_FALSE(delay_based_time_source_->Active()); |
| 268 // Finishing the frame for |obs1| posts a begin frame task, which will be | 272 // Finishing the frame for |obs1| posts a begin frame task, which will be |
| 269 // aborted since |obs1| is removed. Clear that from the task runner. | 273 // aborted since |obs1| is removed. Clear that from the task runner. |
| 270 task_runner_->RunPendingTasks(); | 274 task_runner_->RunPendingTasks(); |
| 271 | 275 |
| 272 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); | 276 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); |
| 273 source_->DidFinishFrame(&obs2, 0); | 277 source_->DidFinishFrame(&obs2, 0); |
| 274 EXPECT_BEGIN_FRAME_USED(obs2, 1300, 1300 + kDeadline, kInterval); | 278 EXPECT_BEGIN_FRAME_USED(obs2, 1300, 1300 + kDeadline, kInterval); |
| 275 task_runner_->RunPendingTasks(); | 279 task_runner_->RunPendingTasks(); |
| 276 | 280 |
| 277 source_->DidFinishFrame(&obs2, 0); | 281 source_->DidFinishFrame(&obs2, 0); |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 base::TimeDelta::FromInternalValue(10000)); | 497 base::TimeDelta::FromInternalValue(10000)); |
| 494 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); | 498 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); |
| 495 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); | 499 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
| 496 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); | 500 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); |
| 497 source_->AddObserver(&obs); | 501 source_->AddObserver(&obs); |
| 498 source_->RemoveObserver(&obs); | 502 source_->RemoveObserver(&obs); |
| 499 } | 503 } |
| 500 | 504 |
| 501 } // namespace | 505 } // namespace |
| 502 } // namespace cc | 506 } // namespace cc |
| OLD | NEW |