Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Unified Diff: media/renderers/renderer_impl_unittest.cc

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/renderers/renderer_impl_unittest.cc
diff --git a/media/renderers/renderer_impl_unittest.cc b/media/renderers/renderer_impl_unittest.cc
index 3fc74307f58a292851cd40c47be835f95a1dd97b..10c39bc4f3f17446f6b10a8faba3b769b88db15d 100644
--- a/media/renderers/renderer_impl_unittest.cc
+++ b/media/renderers/renderer_impl_unittest.cc
@@ -82,9 +82,8 @@ class RendererImplTest : public ::testing::Test {
initialization_status_(PIPELINE_OK) {
// CreateAudioStream() and CreateVideoStream() overrides expectations for
// expected non-NULL streams.
- DemuxerStream* null_pointer = NULL;
- EXPECT_CALL(*demuxer_, GetStream(_))
- .WillRepeatedly(Return(null_pointer));
+ std::vector<DemuxerStream*> empty;
+ EXPECT_CALL(*demuxer_, GetStreams()).WillRepeatedly(Return(empty));
}
virtual ~RendererImplTest() { Destroy(); }
@@ -99,6 +98,7 @@ class RendererImplTest : public ::testing::Test {
DemuxerStream::Type type) {
std::unique_ptr<StrictMock<MockDemuxerStream>> stream(
new StrictMock<MockDemuxerStream>(type));
+ EXPECT_CALL(*stream, enabled()).WillRepeatedly(Return(true));
EXPECT_CALL(*stream, SetStreamStatusChangeCB(_))
.Times(testing::AnyNumber());
return stream;
@@ -138,8 +138,11 @@ class RendererImplTest : public ::testing::Test {
void CreateAudioStream() {
audio_stream_ = CreateStream(DemuxerStream::AUDIO);
- EXPECT_CALL(*demuxer_, GetStream(DemuxerStream::AUDIO))
- .WillRepeatedly(Return(audio_stream_.get()));
+ std::vector<DemuxerStream*> streams;
+ streams.push_back(audio_stream_.get());
+ if (video_stream_)
tguilbert 2017/01/24 23:24:41 Is there a way to make CreateAudioStream and Creat
servolk 2017/01/25 00:57:32 TBH I don't have any ideas how to improve this. Th
+ streams.push_back(video_stream_.get());
+ EXPECT_CALL(*demuxer_, GetStreams()).WillRepeatedly(Return(streams));
}
void CreateVideoStream(bool is_encrypted = false) {
@@ -147,8 +150,11 @@ class RendererImplTest : public ::testing::Test {
video_stream_->set_video_decoder_config(
is_encrypted ? TestVideoConfig::NormalEncrypted()
: TestVideoConfig::Normal());
- EXPECT_CALL(*demuxer_, GetStream(DemuxerStream::VIDEO))
- .WillRepeatedly(Return(video_stream_.get()));
+ std::vector<DemuxerStream*> streams;
+ if (audio_stream_)
+ streams.push_back(audio_stream_.get());
+ streams.push_back(video_stream_.get());
+ EXPECT_CALL(*demuxer_, GetStreams()).WillRepeatedly(Return(streams));
}
void CreateEncryptedVideoStream() { CreateVideoStream(true); }
@@ -162,16 +168,19 @@ class RendererImplTest : public ::testing::Test {
CreateAudioStream();
SetAudioRendererInitializeExpectations(PIPELINE_OK);
// There is a potential race between HTMLMediaElement/WMPI shutdown and
- // renderers being initialized which might result in DemuxerStreamProvider
- // GetStream suddenly returning NULL (see crbug.com/668604). So we are going
- // to check here that GetStream will be invoked exactly 3 times during
+ // renderers being initialized which might result in MediaResource
+ // GetStreams suddenly returning fewer streams than before or even returning
+ // and empty stream collection (see crbug.com/668604). So we are going to
+ // check here that GetStreams will be invoked exactly 3 times during
// RendererImpl initialization to help catch potential issues. Currently the
- // GetStream is invoked once directly from RendererImpl::Initialize, once
- // indirectly from RendererImpl::Initialize via HasEncryptedStream and once
- // from RendererImpl::InitializeAudioRenderer.
- EXPECT_CALL(*demuxer_, GetStream(DemuxerStream::AUDIO))
- .Times(2)
- .WillRepeatedly(Return(audio_stream_.get()));
+ // GetStreams is invoked once from the RendererImpl::Initialize via
+ // HasEncryptedStream, once from the RendererImpl::InitializeAudioRenderer
+ // and once from the RendererImpl::InitializeVideoRenderer.
+ std::vector<DemuxerStream*> streams;
+ streams.push_back(audio_stream_.get());
+ EXPECT_CALL(*demuxer_, GetStreams())
+ .Times(3)
+ .WillRepeatedly(Return(streams));
InitializeAndExpect(PIPELINE_OK);
}
@@ -179,16 +188,19 @@ class RendererImplTest : public ::testing::Test {
CreateVideoStream();
SetVideoRendererInitializeExpectations(PIPELINE_OK);
// There is a potential race between HTMLMediaElement/WMPI shutdown and
- // renderers being initialized which might result in DemuxerStreamProvider
- // GetStream suddenly returning NULL (see crbug.com/668604). So we are going
- // to check here that GetStream will be invoked exactly 3 times during
+ // renderers being initialized which might result in MediaResource
+ // GetStreams suddenly returning fewer streams than before or even returning
+ // and empty stream collection (see crbug.com/668604). So we are going to
+ // check here that GetStreams will be invoked exactly 3 times during
// RendererImpl initialization to help catch potential issues. Currently the
- // GetStream is invoked once directly from RendererImpl::Initialize, once
- // indirectly from RendererImpl::Initialize via HasEncryptedStream and once
- // from RendererImpl::InitializeVideoRenderer.
- EXPECT_CALL(*demuxer_, GetStream(DemuxerStream::VIDEO))
- .Times(2)
- .WillRepeatedly(Return(video_stream_.get()));
+ // GetStreams is invoked once from the RendererImpl::Initialize via
+ // HasEncryptedStream, once from the RendererImpl::InitializeAudioRenderer
+ // and once from the RendererImpl::InitializeVideoRenderer.
+ std::vector<DemuxerStream*> streams;
+ streams.push_back(video_stream_.get());
+ EXPECT_CALL(*demuxer_, GetStreams())
+ .Times(3)
+ .WillRepeatedly(Return(streams));
InitializeAndExpect(PIPELINE_OK);
}

Powered by Google App Engine
This is Rietveld 408576698