Index: media/filters/audio_renderer_impl_unittest.cc |
diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc |
index cb7626fe0c5b44cd30edcbd4f3ad5cf6b9767375..eb2537baa2dece3cbb6f11717f33e7ed936fcd7f 100644 |
--- a/media/filters/audio_renderer_impl_unittest.cc |
+++ b/media/filters/audio_renderer_impl_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "base/run_loop.h" |
#include "base/stl_util.h" |
#include "base/strings/stringprintf.h" |
+#include "base/test/simple_test_tick_clock.h" |
#include "media/base/audio_buffer.h" |
#include "media/base/audio_buffer_converter.h" |
#include "media/base/audio_hardware_config.h" |
@@ -62,6 +63,7 @@ class AudioRendererImplTest : public ::testing::Test { |
needs_stop_(true), |
demuxer_stream_(DemuxerStream::AUDIO), |
decoder_(new MockAudioDecoder()), |
+ tick_clock_(new base::SimpleTestTickClock()), |
last_time_update_(kNoTimestamp()) { |
AudioDecoderConfig audio_config(kCodec, |
kSampleFormat, |
@@ -98,10 +100,7 @@ class AudioRendererImplTest : public ::testing::Test { |
decoders.Pass(), |
SetDecryptorReadyCB(), |
&hardware_config_)); |
- |
- // Stub out time. |
- renderer_->set_now_cb_for_testing(base::Bind( |
- &AudioRendererImplTest::GetTime, base::Unretained(this))); |
+ renderer_->SetTickClockForTesting(scoped_ptr<base::TickClock>(tick_clock_)); |
} |
virtual ~AudioRendererImplTest() { |
@@ -417,8 +416,7 @@ class AudioRendererImplTest : public ::testing::Test { |
} |
void AdvanceTime(TimeDelta time) { |
- base::AutoLock auto_lock(lock_); |
- time_ += time; |
+ tick_clock_->Advance(time); |
} |
void force_config_change() { |
@@ -448,11 +446,6 @@ class AudioRendererImplTest : public ::testing::Test { |
bool needs_stop_; |
private: |
- TimeTicks GetTime() { |
- base::AutoLock auto_lock(lock_); |
- return time_; |
- } |
- |
void DecodeDecoder(const scoped_refptr<DecoderBuffer>& buffer, |
const AudioDecoder::DecodeCB& decode_cb) { |
// We shouldn't ever call Read() after Stop(): |
@@ -501,9 +494,7 @@ class AudioRendererImplTest : public ::testing::Test { |
MockDemuxerStream demuxer_stream_; |
MockAudioDecoder* decoder_; |
- // Used for stubbing out time in the audio callback thread. |
- base::Lock lock_; |
- TimeTicks time_; |
+ base::SimpleTestTickClock* tick_clock_; // Owned by |renderer_|. |
// Used for satisfying reads. |
AudioDecoder::OutputCB output_cb_; |
@@ -572,12 +563,14 @@ TEST_F(AudioRendererImplTest, Underflow) { |
// update. |
EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
EXPECT_FALSE(ConsumeBufferedData(kDataSize, NULL)); |
+ base::RunLoop().RunUntilIdle(); |
// Verify we're still not getting audio data. |
bool muted = false; |
EXPECT_EQ(0, frames_buffered()); |
EXPECT_FALSE(ConsumeBufferedData(kDataSize, &muted)); |
EXPECT_TRUE(muted); |
+ base::RunLoop().RunUntilIdle(); |
// Deliver enough data to have enough for buffering. |
EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
@@ -602,6 +595,7 @@ TEST_F(AudioRendererImplTest, Underflow_CapacityResetsAfterFlush) { |
int initial_capacity = buffer_capacity(); |
EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)); |
EXPECT_FALSE(ConsumeBufferedData(kDataSize, NULL)); |
+ base::RunLoop().RunUntilIdle(); |
// Verify that the buffer capacity increased as a result of underflowing. |
EXPECT_GT(buffer_capacity(), initial_capacity); |