| 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/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
| 10 #include "cc/test/begin_frame_args_test.h" | 11 #include "cc/test/begin_frame_args_test.h" |
| 11 #include "cc/test/begin_frame_source_test.h" | 12 #include "cc/test/begin_frame_source_test.h" |
| 12 #include "cc/test/scheduler_test_common.h" | 13 #include "cc/test/scheduler_test_common.h" |
| 13 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 16 |
| 16 using testing::Mock; | 17 using testing::Mock; |
| 17 using testing::StrictMock; | 18 using testing::StrictMock; |
| 18 | 19 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 void OnBeginFrameSourcePausedChanged(bool paused) override {} | 193 void OnBeginFrameSourcePausedChanged(bool paused) override {} |
| 193 }; | 194 }; |
| 194 | 195 |
| 195 TEST(BeginFrameSourceBaseTest, DetectAsValueIntoLoop) { | 196 TEST(BeginFrameSourceBaseTest, DetectAsValueIntoLoop) { |
| 196 LoopingBeginFrameObserver obs; | 197 LoopingBeginFrameObserver obs; |
| 197 FakeBeginFrameSource source; | 198 FakeBeginFrameSource source; |
| 198 | 199 |
| 199 obs.source_ = &source; | 200 obs.source_ = &source; |
| 200 source.AddObserver(&obs); | 201 source.AddObserver(&obs); |
| 201 | 202 |
| 202 scoped_ptr<base::trace_event::TracedValue> state( | 203 std::unique_ptr<base::trace_event::TracedValue> state( |
| 203 new base::trace_event::TracedValue()); | 204 new base::trace_event::TracedValue()); |
| 204 source.AsValueInto(state.get()); | 205 source.AsValueInto(state.get()); |
| 205 } | 206 } |
| 206 | 207 |
| 207 // BackToBackBeginFrameSource testing ----------------------------------------- | 208 // BackToBackBeginFrameSource testing ----------------------------------------- |
| 208 class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource { | 209 class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource { |
| 209 public: | 210 public: |
| 210 TestBackToBackBeginFrameSource(base::SimpleTestTickClock* now_src, | 211 TestBackToBackBeginFrameSource(base::SimpleTestTickClock* now_src, |
| 211 base::SingleThreadTaskRunner* task_runner) | 212 base::SingleThreadTaskRunner* task_runner) |
| 212 : BackToBackBeginFrameSource(task_runner), now_src_(now_src) {} | 213 : BackToBackBeginFrameSource(task_runner), now_src_(now_src) {} |
| 213 | 214 |
| 214 protected: | 215 protected: |
| 215 base::TimeTicks Now() override { return now_src_->NowTicks(); } | 216 base::TimeTicks Now() override { return now_src_->NowTicks(); } |
| 216 | 217 |
| 217 // Not owned. | 218 // Not owned. |
| 218 base::SimpleTestTickClock* now_src_; | 219 base::SimpleTestTickClock* now_src_; |
| 219 }; | 220 }; |
| 220 | 221 |
| 221 class BackToBackBeginFrameSourceTest : public ::testing::Test { | 222 class BackToBackBeginFrameSourceTest : public ::testing::Test { |
| 222 public: | 223 public: |
| 223 static const int64_t kDeadline; | 224 static const int64_t kDeadline; |
| 224 static const int64_t kInterval; | 225 static const int64_t kInterval; |
| 225 | 226 |
| 226 scoped_ptr<base::SimpleTestTickClock> now_src_; | 227 std::unique_ptr<base::SimpleTestTickClock> now_src_; |
| 227 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; | 228 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; |
| 228 scoped_ptr<TestBackToBackBeginFrameSource> source_; | 229 std::unique_ptr<TestBackToBackBeginFrameSource> source_; |
| 229 scoped_ptr<MockBeginFrameObserver> obs_; | 230 std::unique_ptr<MockBeginFrameObserver> obs_; |
| 230 | 231 |
| 231 void SetUp() override { | 232 void SetUp() override { |
| 232 now_src_.reset(new base::SimpleTestTickClock()); | 233 now_src_.reset(new base::SimpleTestTickClock()); |
| 233 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); | 234 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); |
| 234 task_runner_ = | 235 task_runner_ = |
| 235 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); | 236 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); |
| 236 source_.reset( | 237 source_.reset( |
| 237 new TestBackToBackBeginFrameSource(now_src_.get(), task_runner_.get())); | 238 new TestBackToBackBeginFrameSource(now_src_.get(), task_runner_.get())); |
| 238 obs_ = make_scoped_ptr(new ::testing::StrictMock<MockBeginFrameObserver>()); | 239 obs_ = |
| 240 base::WrapUnique(new ::testing::StrictMock<MockBeginFrameObserver>()); |
| 239 } | 241 } |
| 240 | 242 |
| 241 void TearDown() override { obs_.reset(); } | 243 void TearDown() override { obs_.reset(); } |
| 242 }; | 244 }; |
| 243 | 245 |
| 244 const int64_t BackToBackBeginFrameSourceTest::kDeadline = | 246 const int64_t BackToBackBeginFrameSourceTest::kDeadline = |
| 245 BeginFrameArgs::DefaultInterval().ToInternalValue(); | 247 BeginFrameArgs::DefaultInterval().ToInternalValue(); |
| 246 | 248 |
| 247 const int64_t BackToBackBeginFrameSourceTest::kInterval = | 249 const int64_t BackToBackBeginFrameSourceTest::kInterval = |
| 248 BeginFrameArgs::DefaultInterval().ToInternalValue(); | 250 BeginFrameArgs::DefaultInterval().ToInternalValue(); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 now_src_->Advance(base::TimeDelta::FromMicroseconds(50)); | 397 now_src_->Advance(base::TimeDelta::FromMicroseconds(50)); |
| 396 EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval); | 398 EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval); |
| 397 | 399 |
| 398 EXPECT_TRUE(task_runner_->HasPendingTasks()); | 400 EXPECT_TRUE(task_runner_->HasPendingTasks()); |
| 399 task_runner_->RunPendingTasks(); | 401 task_runner_->RunPendingTasks(); |
| 400 } | 402 } |
| 401 | 403 |
| 402 // SyntheticBeginFrameSource testing ------------------------------------------ | 404 // SyntheticBeginFrameSource testing ------------------------------------------ |
| 403 class SyntheticBeginFrameSourceTest : public ::testing::Test { | 405 class SyntheticBeginFrameSourceTest : public ::testing::Test { |
| 404 public: | 406 public: |
| 405 scoped_ptr<base::SimpleTestTickClock> now_src_; | 407 std::unique_ptr<base::SimpleTestTickClock> now_src_; |
| 406 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; | 408 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; |
| 407 scoped_ptr<TestSyntheticBeginFrameSource> source_; | 409 std::unique_ptr<TestSyntheticBeginFrameSource> source_; |
| 408 scoped_ptr<MockBeginFrameObserver> obs_; | 410 std::unique_ptr<MockBeginFrameObserver> obs_; |
| 409 | 411 |
| 410 void SetUp() override { | 412 void SetUp() override { |
| 411 now_src_.reset(new base::SimpleTestTickClock()); | 413 now_src_.reset(new base::SimpleTestTickClock()); |
| 412 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); | 414 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); |
| 413 task_runner_ = | 415 task_runner_ = |
| 414 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); | 416 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); |
| 415 source_.reset(new TestSyntheticBeginFrameSource( | 417 source_.reset(new TestSyntheticBeginFrameSource( |
| 416 now_src_.get(), task_runner_.get(), | 418 now_src_.get(), task_runner_.get(), |
| 417 base::TimeDelta::FromMicroseconds(10000))); | 419 base::TimeDelta::FromMicroseconds(10000))); |
| 418 obs_ = make_scoped_ptr(new MockBeginFrameObserver()); | 420 obs_ = base::WrapUnique(new MockBeginFrameObserver()); |
| 419 } | 421 } |
| 420 | 422 |
| 421 void TearDown() override { obs_.reset(); } | 423 void TearDown() override { obs_.reset(); } |
| 422 }; | 424 }; |
| 423 | 425 |
| 424 TEST_F(SyntheticBeginFrameSourceTest, | 426 TEST_F(SyntheticBeginFrameSourceTest, |
| 425 AddObserverCallsOnBeginFrameWithMissedTick) { | 427 AddObserverCallsOnBeginFrameWithMissedTick) { |
| 426 now_src_->Advance(base::TimeDelta::FromMicroseconds(9010)); | 428 now_src_->Advance(base::TimeDelta::FromMicroseconds(9010)); |
| 427 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); | 429 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); |
| 428 EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 10000, 20000, 10000); | 430 EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 10000, 20000, 10000); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 base::TimeDelta::FromInternalValue(10000)); | 556 base::TimeDelta::FromInternalValue(10000)); |
| 555 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); | 557 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); |
| 556 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); | 558 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
| 557 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); | 559 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); |
| 558 source_->AddObserver(&obs); | 560 source_->AddObserver(&obs); |
| 559 source_->RemoveObserver(&obs); | 561 source_->RemoveObserver(&obs); |
| 560 } | 562 } |
| 561 | 563 |
| 562 } // namespace | 564 } // namespace |
| 563 } // namespace cc | 565 } // namespace cc |
| OLD | NEW |