Index: media/filters/ffmpeg_demuxer_unittest.cc |
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc |
index 2c468942ddf90fc0e46dcc50471d7a1e8dcacc39..dfdc1fa5cd19033aaabdb1caab094a103adb03c8 100644 |
--- a/media/filters/ffmpeg_demuxer_unittest.cc |
+++ b/media/filters/ffmpeg_demuxer_unittest.cc |
@@ -491,18 +491,31 @@ TEST_F(FFmpegDemuxerTest, DisableAudioStream) { |
ASSERT_TRUE(video); |
ASSERT_TRUE(audio); |
- // Attempt a read from the video stream and run the message loop until done. |
+ // Attempt a read from the video stream: it should return valid data. |
scoped_refptr<DemuxerStreamReader> reader(new DemuxerStreamReader()); |
reader->Read(video); |
message_loop_.RunAllPending(); |
- EXPECT_TRUE(reader->called()); |
+ ASSERT_TRUE(reader->called()); |
ValidateBuffer(FROM_HERE, reader->buffer(), 22084, 0); |
+ // We should have read a little bit into the file. |
+ int64 position = 0; |
+ int64 size = 0; |
+ EXPECT_TRUE(demuxer_->GetPosition(&position)); |
+ EXPECT_TRUE(demuxer_->GetSize(&size)); |
+ EXPECT_LT(position, size); |
+ |
+ // Attempt a read from the audio stream: it should immediately return end of |
+ // stream without requiring the message loop to read data. |
reader->Reset(); |
reader->Read(audio); |
- message_loop_.RunAllPending(); |
- EXPECT_TRUE(reader->called()); |
+ ASSERT_TRUE(reader->called()); |
EXPECT_TRUE(reader->buffer()->IsEndOfStream()); |
+ |
+ // As a sanity check, verify that while we're getting end of stream packets |
+ // we aren't at the end of the file. |
+ EXPECT_TRUE(demuxer_->GetPosition(&position)); |
acolwell GONE FROM CHROMIUM
2011/12/13 16:45:44
This feels fragile & too indirect. What about just
scherkus (not reviewing)
2011/12/13 17:24:56
I'll give it a shot.
|
+ EXPECT_LT(position, size); |
} |
class MockFFmpegDemuxer : public FFmpegDemuxer { |