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

Unified Diff: cc/scheduler/vsync_time_source_unittest.cc

Issue 16833003: cc: Emulate BeginFrame in OutputSurfaces that don't support it natively (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/scheduler/vsync_time_source.cc ('k') | cc/test/fake_layer_tree_host_impl_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/vsync_time_source_unittest.cc
diff --git a/cc/scheduler/vsync_time_source_unittest.cc b/cc/scheduler/vsync_time_source_unittest.cc
deleted file mode 100644
index 4834630e6a1592b1a86025c4b26ce104317b9704..0000000000000000000000000000000000000000
--- a/cc/scheduler/vsync_time_source_unittest.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/scheduler/vsync_time_source.h"
-
-#include "cc/test/scheduler_test_common.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cc {
-namespace {
-
-class FakeVSyncProvider : public VSyncProvider {
- public:
- FakeVSyncProvider() : client_(NULL) {}
-
- // VSyncProvider implementation.
- virtual void RequestVSyncNotification(VSyncClient* client) OVERRIDE {
- client_ = client;
- }
-
- bool IsVSyncNotificationEnabled() const { return client_ != NULL; }
-
- void Trigger(base::TimeTicks frame_time) {
- if (client_)
- client_->DidVSync(frame_time);
- }
-
- private:
- VSyncClient* client_;
-};
-
-class VSyncTimeSourceTest : public testing::Test {
- public:
- VSyncTimeSourceTest()
- : timer_(VSyncTimeSource::Create(
- &provider_, VSyncTimeSource::DISABLE_ON_NEXT_TICK)) {
- timer_->SetClient(&client_);
- }
-
- protected:
- FakeTimeSourceClient client_;
- FakeVSyncProvider provider_;
- scoped_refptr<VSyncTimeSource> timer_;
-};
-
-TEST_F(VSyncTimeSourceTest, TaskPostedAndTickCalled) {
- EXPECT_FALSE(provider_.IsVSyncNotificationEnabled());
-
- timer_->SetActive(true);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
-
- base::TimeTicks frame_time = base::TimeTicks::Now();
- provider_.Trigger(frame_time);
- EXPECT_TRUE(client_.TickCalled());
- EXPECT_EQ(timer_->LastTickTime(), frame_time);
-}
-
-TEST_F(VSyncTimeSourceTest, NotificationDisabledLazily) {
- base::TimeTicks frame_time = base::TimeTicks::Now();
-
- // Enable timer and trigger sync once.
- timer_->SetActive(true);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
- provider_.Trigger(frame_time);
- EXPECT_TRUE(client_.TickCalled());
-
- // Disabling the timer should not disable vsync notification immediately.
- client_.Reset();
- timer_->SetActive(false);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
-
- // At the next vsync the notification is disabled, but the timer isn't ticked.
- provider_.Trigger(frame_time);
- EXPECT_FALSE(provider_.IsVSyncNotificationEnabled());
- EXPECT_FALSE(client_.TickCalled());
-
- // The notification should not be disabled multiple times.
- provider_.RequestVSyncNotification(timer_.get());
- provider_.Trigger(frame_time);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
- EXPECT_FALSE(client_.TickCalled());
-}
-
-TEST_F(VSyncTimeSourceTest, NotificationDisabledImmediatelyForSetting) {
- timer_ = VSyncTimeSource::Create(&provider_,
- VSyncTimeSource::DISABLE_SYNCHRONOUSLY);
- timer_->SetClient(&client_);
- base::TimeTicks frame_time = base::TimeTicks::Now();
-
- // Enable timer and trigger sync once.
- timer_->SetActive(true);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
- provider_.Trigger(frame_time);
- EXPECT_TRUE(client_.TickCalled());
-
- // Disable timer should disable vsync notification immediately.
- timer_->SetActive(false);
- EXPECT_FALSE(provider_.IsVSyncNotificationEnabled());
-
- // Enable again and timer can be ticked again.
- client_.Reset();
- timer_->SetActive(true);
- EXPECT_TRUE(provider_.IsVSyncNotificationEnabled());
- provider_.Trigger(frame_time);
- EXPECT_TRUE(client_.TickCalled());
-}
-
-TEST_F(VSyncTimeSourceTest, ValidNextTickTime) {
- base::TimeTicks frame_time = base::TimeTicks::Now();
- base::TimeDelta interval = base::TimeDelta::FromSeconds(1);
-
- ASSERT_EQ(timer_->NextTickTime(), base::TimeTicks());
-
- timer_->SetActive(true);
- provider_.Trigger(frame_time);
- ASSERT_EQ(timer_->NextTickTime(), frame_time);
-
- timer_->SetTimebaseAndInterval(frame_time, interval);
- ASSERT_EQ(timer_->NextTickTime(), frame_time + interval);
-}
-
-} // namespace
-} // namespace cc
« no previous file with comments | « cc/scheduler/vsync_time_source.cc ('k') | cc/test/fake_layer_tree_host_impl_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698