| Index: cc/CCFrameRateControllerTest.cpp
|
| diff --git a/cc/CCFrameRateControllerTest.cpp b/cc/CCFrameRateControllerTest.cpp
|
| deleted file mode 100644
|
| index 5895c21d6cd940e51b3b69fba44e4fb99138f8c7..0000000000000000000000000000000000000000
|
| --- a/cc/CCFrameRateControllerTest.cpp
|
| +++ /dev/null
|
| @@ -1,171 +0,0 @@
|
| -// Copyright 2011 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 "config.h"
|
| -
|
| -#include "CCFrameRateController.h"
|
| -
|
| -#include "CCSchedulerTestCommon.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using namespace cc;
|
| -using namespace WebKitTests;
|
| -using namespace WTF;
|
| -
|
| -namespace {
|
| -
|
| -class FakeCCFrameRateControllerClient : public cc::CCFrameRateControllerClient {
|
| -public:
|
| - FakeCCFrameRateControllerClient() { reset(); }
|
| -
|
| - void reset() { m_vsyncTicked = false; }
|
| - bool vsyncTicked() const { return m_vsyncTicked; }
|
| -
|
| - virtual void vsyncTick(bool throttled) { m_vsyncTicked = !throttled; }
|
| -
|
| -protected:
|
| - bool m_vsyncTicked;
|
| -};
|
| -
|
| -
|
| -TEST(CCFrameRateControllerTest, TestFrameThrottling_ImmediateAck)
|
| -{
|
| - FakeCCThread thread;
|
| - FakeCCFrameRateControllerClient client;
|
| - base::TimeDelta interval = base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / 60);
|
| - RefPtr<FakeCCDelayBasedTimeSource> timeSource = FakeCCDelayBasedTimeSource::create(interval, &thread);
|
| - CCFrameRateController controller(timeSource);
|
| -
|
| - controller.setClient(&client);
|
| - controller.setActive(true);
|
| -
|
| - base::TimeTicks elapsed; // Muck around with time a bit
|
| -
|
| - // Trigger one frame, make sure the vsync callback is called
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // Tell the controller we drew
|
| - controller.didBeginFrame();
|
| -
|
| - // Tell the controller the frame ended 5ms later
|
| - timeSource->setNow(timeSource->now() + base::TimeDelta::FromMilliseconds(5));
|
| - controller.didFinishFrame();
|
| -
|
| - // Trigger another frame, make sure vsync runs again
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - EXPECT_TRUE(elapsed >= timeSource->now()); // Sanity check that previous code didn't move time backward.
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| -}
|
| -
|
| -TEST(CCFrameRateControllerTest, TestFrameThrottling_TwoFramesInFlight)
|
| -{
|
| - FakeCCThread thread;
|
| - FakeCCFrameRateControllerClient client;
|
| - base::TimeDelta interval = base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / 60);
|
| - RefPtr<FakeCCDelayBasedTimeSource> timeSource = FakeCCDelayBasedTimeSource::create(interval, &thread);
|
| - CCFrameRateController controller(timeSource);
|
| -
|
| - controller.setClient(&client);
|
| - controller.setActive(true);
|
| - controller.setMaxFramesPending(2);
|
| -
|
| - base::TimeTicks elapsed; // Muck around with time a bit
|
| -
|
| - // Trigger one frame, make sure the vsync callback is called
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // Tell the controller we drew
|
| - controller.didBeginFrame();
|
| -
|
| - // Trigger another frame, make sure vsync callback runs again
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - EXPECT_TRUE(elapsed >= timeSource->now()); // Sanity check that previous code didn't move time backward.
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // Tell the controller we drew, again.
|
| - controller.didBeginFrame();
|
| -
|
| - // Trigger another frame. Since two frames are pending, we should not draw.
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - EXPECT_TRUE(elapsed >= timeSource->now()); // Sanity check that previous code didn't move time backward.
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_FALSE(client.vsyncTicked());
|
| -
|
| - // Tell the controller the first frame ended 5ms later
|
| - timeSource->setNow(timeSource->now() + base::TimeDelta::FromMilliseconds(5));
|
| - controller.didFinishFrame();
|
| -
|
| - // Tick should not have been called
|
| - EXPECT_FALSE(client.vsyncTicked());
|
| -
|
| - // Trigger yet another frame. Since one frames is pending, another vsync callback should run.
|
| - elapsed += base::TimeDelta::FromMilliseconds(thread.pendingDelayMs());
|
| - EXPECT_TRUE(elapsed >= timeSource->now()); // Sanity check that previous code didn't move time backward.
|
| - timeSource->setNow(elapsed);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| -}
|
| -
|
| -TEST(CCFrameRateControllerTest, TestFrameThrottling_Unthrottled)
|
| -{
|
| - FakeCCThread thread;
|
| - FakeCCFrameRateControllerClient client;
|
| - CCFrameRateController controller(&thread);
|
| -
|
| - controller.setClient(&client);
|
| - controller.setMaxFramesPending(2);
|
| -
|
| - // setActive triggers 1st frame, make sure the vsync callback is called
|
| - controller.setActive(true);
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // Even if we don't call didBeginFrame, CCFrameRateController should
|
| - // still attempt to vsync tick multiple times until it does result in
|
| - // a didBeginFrame.
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // didBeginFrame triggers 2nd frame, make sure the vsync callback is called
|
| - controller.didBeginFrame();
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // didBeginFrame triggers 3rd frame (> maxFramesPending), make sure the vsync callback is NOT called
|
| - controller.didBeginFrame();
|
| - thread.runPendingTask();
|
| - EXPECT_FALSE(client.vsyncTicked());
|
| - client.reset();
|
| -
|
| - // Make sure there is no pending task since we can't do anything until we receive a didFinishFrame anyway.
|
| - EXPECT_FALSE(thread.hasPendingTask());
|
| -
|
| - // didFinishFrame triggers a frame, make sure the vsync callback is called
|
| - controller.didFinishFrame();
|
| - thread.runPendingTask();
|
| - EXPECT_TRUE(client.vsyncTicked());
|
| -}
|
| -
|
| -}
|
|
|