| Index: media/filters/video_frame_scheduler_impl_unittest.cc
|
| diff --git a/media/filters/video_frame_scheduler_impl_unittest.cc b/media/filters/video_frame_scheduler_impl_unittest.cc
|
| deleted file mode 100644
|
| index cf5ee0a3d45181c971f0614d5e1fa6a38bdf7c0c..0000000000000000000000000000000000000000
|
| --- a/media/filters/video_frame_scheduler_impl_unittest.cc
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -// Copyright 2014 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 "base/message_loop/message_loop.h"
|
| -#include "base/test/simple_test_tick_clock.h"
|
| -#include "media/base/test_helpers.h"
|
| -#include "media/base/video_frame.h"
|
| -#include "media/filters/video_frame_scheduler_impl.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace media {
|
| -
|
| -using testing::_;
|
| -
|
| -// NOTE: millisecond-level resolution is used for times as real delayed tasks
|
| -// are posted. Don't use large values if you want to keep tests running fast.
|
| -class VideoFrameSchedulerImplTest : public testing::Test {
|
| - public:
|
| - VideoFrameSchedulerImplTest()
|
| - : scheduler_(message_loop_.message_loop_proxy(),
|
| - base::Bind(&VideoFrameSchedulerImplTest::OnDisplay,
|
| - base::Unretained(this))),
|
| - tick_clock_(new base::SimpleTestTickClock()) {
|
| - scheduler_.SetTickClockForTesting(scoped_ptr<base::TickClock>(tick_clock_));
|
| - }
|
| -
|
| - virtual ~VideoFrameSchedulerImplTest() {}
|
| -
|
| - MOCK_METHOD1(OnDisplay, void(const scoped_refptr<VideoFrame>&));
|
| - MOCK_METHOD2(OnFrameDone,
|
| - void(const scoped_refptr<VideoFrame>&,
|
| - VideoFrameScheduler::Reason));
|
| -
|
| - void Schedule(const scoped_refptr<VideoFrame>& frame, int64 target_ms) {
|
| - scheduler_.ScheduleVideoFrame(
|
| - frame,
|
| - base::TimeTicks() + base::TimeDelta::FromMilliseconds(target_ms),
|
| - base::Bind(&VideoFrameSchedulerImplTest::OnFrameDone,
|
| - base::Unretained(this)));
|
| - }
|
| -
|
| - void RunUntilTimeHasElapsed(int64 ms) {
|
| - WaitableMessageLoopEvent waiter;
|
| - message_loop_.PostDelayedTask(
|
| - FROM_HERE, waiter.GetClosure(), base::TimeDelta::FromMilliseconds(ms));
|
| - waiter.RunAndWait();
|
| - }
|
| -
|
| - void AdvanceTime(int64 ms) {
|
| - tick_clock_->Advance(base::TimeDelta::FromMilliseconds(ms));
|
| - }
|
| -
|
| - void Reset() {
|
| - scheduler_.Reset();
|
| - }
|
| -
|
| - private:
|
| - base::MessageLoop message_loop_;
|
| - VideoFrameSchedulerImpl scheduler_;
|
| - base::SimpleTestTickClock* tick_clock_; // Owned by |scheduler_|.
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(VideoFrameSchedulerImplTest);
|
| -};
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, ImmediateDisplay) {
|
| - scoped_refptr<VideoFrame> frame =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(frame, 0);
|
| -
|
| - EXPECT_CALL(*this, OnDisplay(frame));
|
| - EXPECT_CALL(*this, OnFrameDone(frame, VideoFrameScheduler::DISPLAYED));
|
| - RunUntilTimeHasElapsed(0);
|
| -}
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, EventualDisplay) {
|
| - scoped_refptr<VideoFrame> frame =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(frame, 10);
|
| -
|
| - // Nothing should happen.
|
| - RunUntilTimeHasElapsed(10);
|
| -
|
| - // Now we should get the frame.
|
| - EXPECT_CALL(*this, OnDisplay(frame));
|
| - EXPECT_CALL(*this, OnFrameDone(frame, VideoFrameScheduler::DISPLAYED));
|
| - AdvanceTime(10);
|
| - RunUntilTimeHasElapsed(10);
|
| -}
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, DroppedFrame) {
|
| - scoped_refptr<VideoFrame> dropped =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - scoped_refptr<VideoFrame> displayed =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(dropped, 10);
|
| - Schedule(displayed, 20);
|
| -
|
| - // The frame past its deadline will get dropped.
|
| - EXPECT_CALL(*this, OnDisplay(displayed));
|
| - EXPECT_CALL(*this, OnFrameDone(dropped, VideoFrameScheduler::DROPPED));
|
| - EXPECT_CALL(*this, OnFrameDone(displayed, VideoFrameScheduler::DISPLAYED));
|
| - AdvanceTime(20);
|
| - RunUntilTimeHasElapsed(20);
|
| -}
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, SingleFrameLate) {
|
| - scoped_refptr<VideoFrame> frame =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(frame, 10);
|
| -
|
| - // Despite frame being late it should still get displayed as it's the only
|
| - // one.
|
| - EXPECT_CALL(*this, OnDisplay(frame));
|
| - EXPECT_CALL(*this, OnFrameDone(frame, VideoFrameScheduler::DISPLAYED));
|
| - AdvanceTime(20);
|
| - RunUntilTimeHasElapsed(20);
|
| -}
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, ManyFramesLate) {
|
| - scoped_refptr<VideoFrame> dropped =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - scoped_refptr<VideoFrame> displayed =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(dropped, 10);
|
| - Schedule(displayed, 20);
|
| -
|
| - // Despite both being late, the scheduler should always displays the latest
|
| - // expired frame.
|
| - EXPECT_CALL(*this, OnDisplay(displayed));
|
| - EXPECT_CALL(*this, OnFrameDone(dropped, VideoFrameScheduler::DROPPED));
|
| - EXPECT_CALL(*this, OnFrameDone(displayed, VideoFrameScheduler::DISPLAYED));
|
| - AdvanceTime(30);
|
| - RunUntilTimeHasElapsed(30);
|
| -}
|
| -
|
| -TEST_F(VideoFrameSchedulerImplTest, Reset) {
|
| - scoped_refptr<VideoFrame> frame =
|
| - VideoFrame::CreateBlackFrame(gfx::Size(8, 8));
|
| - Schedule(frame, 10);
|
| -
|
| - // Despite being on time, frame callback isn't run.
|
| - EXPECT_CALL(*this, OnFrameDone(_, _)).Times(0);
|
| - AdvanceTime(10);
|
| - Reset();
|
| - RunUntilTimeHasElapsed(10);
|
| -}
|
| -
|
| -} // namespace media
|
|
|