Index: media/filters/renderer_impl_unittest.cc |
diff --git a/media/filters/renderer_impl_unittest.cc b/media/filters/renderer_impl_unittest.cc |
index 8edc1202e82c6b7f4cf829984281e35fb7b77b4d..ce2f72cef411fe0f0cf2ba1a199d965b48f0c921 100644 |
--- a/media/filters/renderer_impl_unittest.cc |
+++ b/media/filters/renderer_impl_unittest.cc |
@@ -11,7 +11,6 @@ |
#include "media/base/gmock_callback_support.h" |
#include "media/base/mock_filters.h" |
#include "media/base/test_helpers.h" |
-#include "media/base/time_delta_interpolator.h" |
#include "media/filters/renderer_impl.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -26,27 +25,15 @@ using ::testing::StrictMock; |
namespace media { |
const int64 kStartPlayingTimeInMs = 100; |
-const int64 kDurationInMs = 3000; |
-const int64 kAudioUpdateTimeMs = 150; |
-const int64 kAudioUpdateMaxTimeMs = 1000; |
ACTION_P2(SetBufferingState, cb, buffering_state) { |
cb->Run(buffering_state); |
} |
-ACTION_P3(UpdateAudioTime, cb, time, max_time) { |
- cb->Run(base::TimeDelta::FromMilliseconds(time), |
- base::TimeDelta::FromMilliseconds(max_time)); |
-} |
- |
ACTION_P2(AudioError, cb, error) { |
cb->Run(error); |
} |
-static base::TimeDelta GetDuration() { |
- return base::TimeDelta::FromMilliseconds(kDurationInMs); |
-} |
- |
class RendererImplTest : public ::testing::Test { |
public: |
// Used for setting expectations on pipeline callbacks. Using a StrictMock |
@@ -103,24 +90,19 @@ class RendererImplTest : public ::testing::Test { |
// Sets up expectations to allow the audio renderer to initialize. |
void SetAudioRendererInitializeExpectations(PipelineStatus status) { |
EXPECT_CALL(*audio_renderer_, |
- Initialize(audio_stream_.get(), _, _, _, _, _, _)) |
- .WillOnce(DoAll(SaveArg<3>(&audio_time_cb_), |
- SaveArg<4>(&audio_buffering_state_cb_), |
- SaveArg<5>(&audio_ended_cb_), |
- SaveArg<6>(&audio_error_cb_), |
+ Initialize(audio_stream_.get(), _, _, _, _, _)) |
+ .WillOnce(DoAll(SaveArg<3>(&audio_buffering_state_cb_), |
+ SaveArg<4>(&audio_ended_cb_), |
+ SaveArg<5>(&audio_error_cb_), |
RunCallback<1>(status))); |
- if (status == PIPELINE_OK) { |
- EXPECT_CALL(*audio_renderer_, GetTimeSource()) |
- .WillOnce(Return(&time_source_)); |
- } |
} |
// Sets up expectations to allow the video renderer to initialize. |
void SetVideoRendererInitializeExpectations(PipelineStatus status) { |
EXPECT_CALL(*video_renderer_, |
- Initialize(video_stream_.get(), _, _, _, _, _, _, _, _, _)) |
- .WillOnce(DoAll(SaveArg<5>(&video_buffering_state_cb_), |
- SaveArg<6>(&video_ended_cb_), |
+ Initialize(video_stream_.get(), _, _, _, _, _, _, _)) |
+ .WillOnce(DoAll(SaveArg<4>(&video_buffering_state_cb_), |
+ SaveArg<5>(&video_ended_cb_), |
RunCallback<2>(status))); |
} |
@@ -130,6 +112,11 @@ class RendererImplTest : public ::testing::Test { |
EXPECT_CALL(callbacks_, OnInitialize()); |
+ if (start_status == PIPELINE_OK && audio_stream_) { |
+ EXPECT_CALL(*audio_renderer_, GetTimeSource()) |
+ .WillOnce(Return(&time_source_)); |
+ } |
+ |
renderer_impl_->Initialize( |
base::Bind(&CallbackHelper::OnInitialize, |
base::Unretained(&callbacks_)), |
@@ -138,8 +125,7 @@ class RendererImplTest : public ::testing::Test { |
base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), |
base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
base::Bind(&CallbackHelper::OnBufferingStateChange, |
- base::Unretained(&callbacks_)), |
- base::Bind(&GetDuration)); |
+ base::Unretained(&callbacks_))); |
base::RunLoop().RunUntilIdle(); |
} |
@@ -273,7 +259,6 @@ class RendererImplTest : public ::testing::Test { |
scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; |
scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; |
MockDemuxerStreamVector streams_; |
- AudioRenderer::TimeCB audio_time_cb_; |
BufferingStateCB audio_buffering_state_cb_; |
BufferingStateCB video_buffering_state_cb_; |
base::Closure audio_ended_cb_; |
@@ -367,86 +352,6 @@ TEST_F(RendererImplTest, SetVolume) { |
renderer_impl_->SetVolume(2.0f); |
} |
-TEST_F(RendererImplTest, GetMediaTime) { |
- // Replace what's used for interpolating to simulate wall clock time. |
- renderer_impl_->SetTimeDeltaInterpolatorForTesting( |
- new TimeDeltaInterpolator(&test_tick_clock_)); |
- |
- InitializeWithAudioAndVideo(); |
- Play(); |
- |
- EXPECT_EQ(kStartPlayingTimeInMs, GetMediaTimeMs()); |
- |
- // Verify that the clock doesn't advance since it hasn't been started by |
- // a time update from the audio stream. |
- EXPECT_FALSE(IsMediaTimeAdvancing()); |
- |
- // Provide an initial time update so that the pipeline transitions out of the |
- // "waiting for time update" state. |
- audio_time_cb_.Run(base::TimeDelta::FromMilliseconds(kAudioUpdateTimeMs), |
- base::TimeDelta::FromMilliseconds(kAudioUpdateMaxTimeMs)); |
- EXPECT_EQ(kAudioUpdateTimeMs, GetMediaTimeMs()); |
- |
- // Advance the clock so that GetMediaTime() also advances. This also verifies |
- // that the default playback rate is 1. |
- EXPECT_TRUE(IsMediaTimeAdvancing()); |
- |
- // Verify that playback rate affects the rate GetMediaTime() advances. |
- SetPlaybackRate(2.0f); |
- EXPECT_TRUE(IsMediaTimeAdvancing(2.0f)); |
- |
- // Verify that GetMediaTime() is bounded by audio max time. |
- DCHECK_GT(GetMediaTimeMs() + 2000, kAudioUpdateMaxTimeMs); |
- test_tick_clock_.Advance(base::TimeDelta::FromMilliseconds(2000)); |
- EXPECT_EQ(kAudioUpdateMaxTimeMs, GetMediaTimeMs()); |
-} |
- |
-TEST_F(RendererImplTest, AudioTimeUpdateDuringFlush) { |
- // Replace what's used for interpolating to simulate wall clock time. |
- renderer_impl_->SetTimeDeltaInterpolatorForTesting( |
- new TimeDeltaInterpolator(&test_tick_clock_)); |
- |
- InitializeWithAudio(); |
- Play(); |
- |
- // Provide an initial time update so that the pipeline transitions out of the |
- // "waiting for time update" state. |
- audio_time_cb_.Run(base::TimeDelta::FromMilliseconds(kAudioUpdateTimeMs), |
- base::TimeDelta::FromMilliseconds(kAudioUpdateMaxTimeMs)); |
- EXPECT_EQ(kAudioUpdateTimeMs, GetMediaTimeMs()); |
- |
- int64 start_time = GetMediaTimeMs(); |
- |
- EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(DoAll( |
- UpdateAudioTime( |
- &audio_time_cb_, kAudioUpdateTimeMs + 100, kAudioUpdateMaxTimeMs), |
- SetBufferingState(&audio_buffering_state_cb_, BUFFERING_HAVE_NOTHING), |
- RunClosure<0>())); |
- EXPECT_CALL(time_source_, StopTicking()); |
- EXPECT_CALL(callbacks_, OnFlushed()); |
- renderer_impl_->Flush( |
- base::Bind(&CallbackHelper::OnFlushed, base::Unretained(&callbacks_))); |
- |
- // Audio time update during Flush() has no effect. |
- EXPECT_EQ(start_time, GetMediaTimeMs()); |
- |
- // Verify that the clock doesn't advance since it hasn't been started by |
- // a time update from the audio stream. |
- EXPECT_FALSE(IsMediaTimeAdvancing()); |
-} |
- |
-TEST_F(RendererImplTest, PostTimeUpdateDuringDestroy) { |
- InitializeWithAudioAndVideo(); |
- |
- // Simulate the case where TimeCB is posted during ~AudioRenderer(), which is |
- // triggered in ~Renderer(). |
- base::TimeDelta time = base::TimeDelta::FromMilliseconds(100); |
- message_loop_.PostTask(FROM_HERE, base::Bind(audio_time_cb_, time, time)); |
- |
- renderer_impl_.reset(); |
- message_loop_.RunUntilIdle(); |
-} |
- |
TEST_F(RendererImplTest, AudioStreamEnded) { |
InitializeWithAudio(); |
Play(); |