Index: media/filters/audio_renderer_base_unittest.cc |
diff --git a/media/filters/audio_renderer_base_unittest.cc b/media/filters/audio_renderer_base_unittest.cc |
index 62889d0a8b132fd2a438351494d2aab46bba256d..064f7a635e3fde5d602ca97def939e18696185c0 100644 |
--- a/media/filters/audio_renderer_base_unittest.cc |
+++ b/media/filters/audio_renderer_base_unittest.cc |
@@ -49,11 +49,12 @@ class AudioRendererBaseTest : public ::testing::Test { |
// Give the decoder some non-garbage media properties. |
AudioRendererBaseTest() |
: renderer_(new MockAudioRendererBase()), |
- decoder_(new MockAudioDecoder()) { |
+ decoder_(new MockAudioDecoder()), |
+ pending_reads_(0) { |
renderer_->set_host(&host_); |
// Queue all reads from the decoder. |
- EXPECT_CALL(*decoder_, Read(NotNull())) |
+ EXPECT_CALL(*decoder_, FillThisBuffer(_)) |
.WillRepeatedly(Invoke(this, &AudioRendererBaseTest::EnqueueCallback)); |
// Sets the essential media format keys for this decoder. |
@@ -67,8 +68,6 @@ class AudioRendererBaseTest : public ::testing::Test { |
} |
virtual ~AudioRendererBaseTest() { |
- STLDeleteElements(&read_queue_); |
- |
// Expect a call into the subclass. |
EXPECT_CALL(*renderer_, OnStop()); |
renderer_->Stop(); |
@@ -84,12 +83,12 @@ class AudioRendererBaseTest : public ::testing::Test { |
StrictMock<MockFilterCallback> callback_; |
MediaFormat decoder_media_format_; |
- // Receives asynchronous read requests sent to |decoder_|. |
- std::deque<Callback1<Buffer*>::Type*> read_queue_; |
+ // Number of asynchronous read requests sent to |decoder_|. |
+ size_t pending_reads_; |
private: |
- void EnqueueCallback(Callback1<Buffer*>::Type* callback) { |
- read_queue_.push_back(callback); |
+ void EnqueueCallback(scoped_refptr<Buffer> buffer) { |
+ ++pending_reads_; |
} |
DISALLOW_COPY_AND_ASSIGN(AudioRendererBaseTest); |
@@ -113,7 +112,7 @@ TEST_F(AudioRendererBaseTest, Initialize_Failed) { |
// Initialize, we expect to have no reads. |
renderer_->Initialize(decoder_, callback_.NewCallback()); |
- EXPECT_EQ(0u, read_queue_.size()); |
+ EXPECT_EQ(0u, pending_reads_); |
} |
TEST_F(AudioRendererBaseTest, Initialize_Successful) { |
@@ -136,23 +135,22 @@ TEST_F(AudioRendererBaseTest, Initialize_Successful) { |
// Initialize, we shouldn't have any reads. |
renderer_->Initialize(decoder_, callback_.NewCallback()); |
- EXPECT_EQ(0u, read_queue_.size()); |
+ EXPECT_EQ(0u, pending_reads_); |
// Now seek to trigger prerolling. |
renderer_->Seek(base::TimeDelta(), seek_callback.NewCallback()); |
- EXPECT_EQ(kMaxQueueSize, read_queue_.size()); |
+ EXPECT_EQ(kMaxQueueSize, pending_reads_); |
// Verify our seek callback hasn't been executed yet. |
renderer_->CheckPoint(0); |
// Now satisfy the read requests. Our callback should be executed after |
// exiting this loop. |
- while (!read_queue_.empty()) { |
+ while (pending_reads_) { |
scoped_refptr<DataBuffer> buffer = new DataBuffer(1024); |
buffer->SetDataSize(1024); |
- read_queue_.front()->Run(buffer); |
- delete read_queue_.front(); |
- read_queue_.pop_front(); |
+ --pending_reads_; |
+ decoder_->fill_buffer_done_callback()->Run(buffer); |
} |
} |
@@ -176,11 +174,11 @@ TEST_F(AudioRendererBaseTest, OneCompleteReadCycle) { |
// Initialize, we shouldn't have any reads. |
renderer_->Initialize(decoder_, callback_.NewCallback()); |
- EXPECT_EQ(0u, read_queue_.size()); |
+ EXPECT_EQ(0u, pending_reads_); |
// Now seek to trigger prerolling. |
renderer_->Seek(base::TimeDelta(), seek_callback.NewCallback()); |
- EXPECT_EQ(kMaxQueueSize, read_queue_.size()); |
+ EXPECT_EQ(kMaxQueueSize, pending_reads_); |
// Verify our seek callback hasn't been executed yet. |
renderer_->CheckPoint(0); |
@@ -189,12 +187,11 @@ TEST_F(AudioRendererBaseTest, OneCompleteReadCycle) { |
// exiting this loop. |
const uint32 kDataSize = 1024; |
uint32 bytes_buffered = 0; |
- while (!read_queue_.empty()) { |
+ while (pending_reads_) { |
scoped_refptr<DataBuffer> buffer = new DataBuffer(kDataSize); |
buffer->SetDataSize(kDataSize); |
- read_queue_.front()->Run(buffer); |
- delete read_queue_.front(); |
- read_queue_.pop_front(); |
+ decoder_->fill_buffer_done_callback()->Run(buffer); |
+ --pending_reads_; |
bytes_buffered += kDataSize; |
} |
@@ -216,19 +213,18 @@ TEST_F(AudioRendererBaseTest, OneCompleteReadCycle) { |
} |
// Make sure the read request queue is full. |
- EXPECT_EQ(kMaxQueueSize, read_queue_.size()); |
+ EXPECT_EQ(kMaxQueueSize, pending_reads_); |
// Fulfill the read with an end-of-stream packet. |
scoped_refptr<DataBuffer> last_buffer = new DataBuffer(0); |
- read_queue_.front()->Run(last_buffer); |
- delete read_queue_.front(); |
- read_queue_.pop_front(); |
+ decoder_->fill_buffer_done_callback()->Run(last_buffer); |
+ --pending_reads_; |
// We shouldn't report ended until all data has been flushed out. |
EXPECT_FALSE(renderer_->HasEnded()); |
// We should have one less read request in the queue. |
- EXPECT_EQ(kMaxQueueSize - 1, read_queue_.size()); |
+ EXPECT_EQ(kMaxQueueSize - 1, pending_reads_); |
// Flush the entire internal buffer and verify NotifyEnded() isn't called |
// right away. |