| Index: media/filters/ffmpeg_demuxer_unittest.cc
 | 
| diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
 | 
| index c4924934f724477c130f992db97e86bcc72fe18f..10c216238c95eaac430d085eefa81d2e3c6d84c5 100644
 | 
| --- a/media/filters/ffmpeg_demuxer_unittest.cc
 | 
| +++ b/media/filters/ffmpeg_demuxer_unittest.cc
 | 
| @@ -72,6 +72,9 @@ class FFmpegDemuxerTest : public testing::Test {
 | 
|      demuxer_->set_host(&host_);
 | 
|      data_source_ = new StrictMock<MockDataSource>();
 | 
|  
 | 
| +    EXPECT_CALL(*data_source_, Stop(NotNull()))
 | 
| +        .WillRepeatedly(Invoke(&RunStopFilterCallback));
 | 
| +
 | 
|      // Initialize FFmpeg fixtures.
 | 
|      memset(&format_context_, 0, sizeof(format_context_));
 | 
|      memset(&input_format_, 0, sizeof(input_format_));
 | 
| @@ -137,7 +140,8 @@ class FFmpegDemuxerTest : public testing::Test {
 | 
|          base::TimeDelta::FromMicroseconds(kDurations[AV_STREAM_AUDIO]);
 | 
|      EXPECT_CALL(host_, SetDuration(expected_duration));
 | 
|  
 | 
| -    demuxer_->Initialize(data_source_.get(), NewExpectedCallback());
 | 
| +    demuxer_->Initialize(data_source_.get(),
 | 
| +                         NewExpectedStatusCallback(PIPELINE_OK));
 | 
|      message_loop_.RunAllPending();
 | 
|    }
 | 
|  
 | 
| @@ -175,9 +179,9 @@ TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) {
 | 
|    // Simulate av_open_input_file() failing.
 | 
|    EXPECT_CALL(mock_ffmpeg_, AVOpenInputFile(_, _, NULL, 0, NULL))
 | 
|        .WillOnce(Return(-1));
 | 
| -  EXPECT_CALL(host_, SetError(DEMUXER_ERROR_COULD_NOT_OPEN));
 | 
|  
 | 
| -  demuxer_->Initialize(data_source_.get(), NewExpectedCallback());
 | 
| +  demuxer_->Initialize(data_source_.get(),
 | 
| +                       NewExpectedStatusCallback(DEMUXER_ERROR_COULD_NOT_OPEN));
 | 
|    message_loop_.RunAllPending();
 | 
|  }
 | 
|  
 | 
| @@ -188,9 +192,10 @@ TEST_F(FFmpegDemuxerTest, Initialize_ParseFails) {
 | 
|    EXPECT_CALL(mock_ffmpeg_, AVFindStreamInfo(&format_context_))
 | 
|        .WillOnce(Return(AVERROR_IO));
 | 
|    EXPECT_CALL(mock_ffmpeg_, AVCloseInputFile(&format_context_));
 | 
| -  EXPECT_CALL(host_, SetError(DEMUXER_ERROR_COULD_NOT_PARSE));
 | 
|  
 | 
| -  demuxer_->Initialize(data_source_.get(), NewExpectedCallback());
 | 
| +  demuxer_->Initialize(
 | 
| +      data_source_.get(),
 | 
| +      NewExpectedStatusCallback(DEMUXER_ERROR_COULD_NOT_PARSE));
 | 
|    message_loop_.RunAllPending();
 | 
|  }
 | 
|  
 | 
| @@ -200,10 +205,11 @@ TEST_F(FFmpegDemuxerTest, Initialize_NoStreams) {
 | 
|      SCOPED_TRACE("");
 | 
|      InitializeDemuxerMocks();
 | 
|    }
 | 
| -  EXPECT_CALL(host_, SetError(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
 | 
|    format_context_.nb_streams = 0;
 | 
|  
 | 
| -  demuxer_->Initialize(data_source_.get(), NewExpectedCallback());
 | 
| +  demuxer_->Initialize(
 | 
| +      data_source_.get(),
 | 
| +      NewExpectedStatusCallback(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
 | 
|    message_loop_.RunAllPending();
 | 
|  }
 | 
|  
 | 
| @@ -213,11 +219,12 @@ TEST_F(FFmpegDemuxerTest, Initialize_DataStreamOnly) {
 | 
|      SCOPED_TRACE("");
 | 
|      InitializeDemuxerMocks();
 | 
|    }
 | 
| -  EXPECT_CALL(host_, SetError(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
 | 
|    EXPECT_EQ(format_context_.streams[0], &streams_[AV_STREAM_DATA]);
 | 
|    format_context_.nb_streams = 1;
 | 
|  
 | 
| -  demuxer_->Initialize(data_source_.get(), NewExpectedCallback());
 | 
| +  demuxer_->Initialize(
 | 
| +      data_source_.get(),
 | 
| +      NewExpectedStatusCallback(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
 | 
|    message_loop_.RunAllPending();
 | 
|  }
 | 
|  
 | 
| @@ -553,7 +560,11 @@ TEST_F(FFmpegDemuxerTest, Stop) {
 | 
|    scoped_refptr<DemuxerStream> audio = demuxer_->GetStream(DS_STREAM_AUDIO);
 | 
|    ASSERT_TRUE(audio);
 | 
|  
 | 
| -  // Stop the demuxer.
 | 
| +  // Stop the demuxer, overriding the default expectation to assert that
 | 
| +  // data_source_ really is Stop()'d.
 | 
| +  EXPECT_CALL(*data_source_, Stop(_))
 | 
| +      .WillOnce(Invoke(&RunStopFilterCallback))
 | 
| +      .RetiresOnSaturation();
 | 
|    demuxer_->Stop(NewExpectedCallback());
 | 
|  
 | 
|    // Expect all calls in sequence.
 | 
| 
 |