| Index: media/filters/video_decoder_selector_unittest.cc
|
| diff --git a/media/filters/video_decoder_selector_unittest.cc b/media/filters/video_decoder_selector_unittest.cc
|
| index d0d84059bf114502adc0b5f4b3c5580c0a74a694..16043cd6ad66e6fb6af975ed183a515e3def6ac5 100644
|
| --- a/media/filters/video_decoder_selector_unittest.cc
|
| +++ b/media/filters/video_decoder_selector_unittest.cc
|
| @@ -28,16 +28,6 @@ using ::testing::StrictMock;
|
| // times across multiple test files. Sadly we can't use static for them.
|
| namespace {
|
|
|
| -ACTION_P3(ExecuteCallbackWithVerifier, cdm_context, done_cb, verifier) {
|
| - // verifier must be called first since |done_cb| call will invoke it as well.
|
| - verifier->RecordACalled();
|
| - arg0.Run(cdm_context, done_cb);
|
| -}
|
| -
|
| -ACTION_P(ReportCallback, verifier) {
|
| - verifier->RecordBCalled();
|
| -}
|
| -
|
| MATCHER(EncryptedConfig, "") {
|
| return arg.is_encrypted();
|
| }
|
| @@ -52,11 +42,8 @@ namespace media {
|
| class VideoDecoderSelectorTest : public ::testing::Test {
|
| public:
|
| enum DecryptorCapability {
|
| - kNoDecryptor,
|
| - // Used to test destruction during DecryptingVideoDecoder::Initialize() and
|
| - // DecryptingDemuxerStream::Initialize(). We don't need this for normal
|
| - // VideoDecoders since we use MockVideoDecoder.
|
| - kHoldSetDecryptor,
|
| + kNoCdm, // No CDM. Only possible for clear stream.
|
| + kNoDecryptor, // CDM is available but Decryptor is not supported.
|
| kDecryptOnly,
|
| kDecryptAndDecode
|
| };
|
| @@ -64,25 +51,20 @@ class VideoDecoderSelectorTest : public ::testing::Test {
|
| VideoDecoderSelectorTest()
|
| : demuxer_stream_(
|
| new StrictMock<MockDemuxerStream>(DemuxerStream::VIDEO)),
|
| - cdm_context_(new StrictMock<MockCdmContext>()),
|
| - decryptor_(new NiceMock<MockDecryptor>()),
|
| decoder_1_(new StrictMock<MockVideoDecoder>()),
|
| decoder_2_(new StrictMock<MockVideoDecoder>()) {
|
| all_decoders_.push_back(decoder_1_);
|
| all_decoders_.push_back(decoder_2_);
|
| -
|
| - EXPECT_CALL(*cdm_context_, GetDecryptor())
|
| - .WillRepeatedly(Return(decryptor_.get()));
|
| + // |cdm_context_| and |decryptor_| are conditionally created in
|
| + // InitializeDecoderSelector().
|
| }
|
|
|
| ~VideoDecoderSelectorTest() {
|
| message_loop_.RunUntilIdle();
|
| }
|
|
|
| - MOCK_METHOD1(SetCdmReadyCallback, void(const media::CdmReadyCB&));
|
| MOCK_METHOD2(OnDecoderSelected,
|
| void(VideoDecoder*, DecryptingDemuxerStream*));
|
| - MOCK_METHOD1(CdmSet, void(bool));
|
|
|
| void MockOnDecoderSelected(
|
| scoped_ptr<VideoDecoder> decoder,
|
| @@ -102,30 +84,20 @@ class VideoDecoderSelectorTest : public ::testing::Test {
|
|
|
| void InitializeDecoderSelector(DecryptorCapability decryptor_capability,
|
| int num_decoders) {
|
| - if (decryptor_capability == kDecryptOnly ||
|
| - decryptor_capability == kDecryptAndDecode) {
|
| - EXPECT_CALL(*this, SetCdmReadyCallback(_))
|
| - .WillRepeatedly(ExecuteCallbackWithVerifier(
|
| - cdm_context_.get(), base::Bind(&VideoDecoderSelectorTest::CdmSet,
|
| - base::Unretained(this)),
|
| - &verifier_));
|
| - EXPECT_CALL(*this, CdmSet(true))
|
| - .WillRepeatedly(ReportCallback(&verifier_));
|
| -
|
| - if (decryptor_capability == kDecryptOnly) {
|
| - EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _))
|
| - .WillRepeatedly(RunCallback<1>(false));
|
| + if (decryptor_capability != kNoCdm) {
|
| + cdm_context_.reset(new StrictMock<MockCdmContext>());
|
| +
|
| + if (decryptor_capability == kNoDecryptor) {
|
| + EXPECT_CALL(*cdm_context_, GetDecryptor())
|
| + .WillRepeatedly(Return(nullptr));
|
| } else {
|
| + decryptor_.reset(new NiceMock<MockDecryptor>());
|
| + EXPECT_CALL(*cdm_context_, GetDecryptor())
|
| + .WillRepeatedly(Return(decryptor_.get()));
|
| EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _))
|
| - .WillRepeatedly(RunCallback<1>(true));
|
| + .WillRepeatedly(
|
| + RunCallback<1>(decryptor_capability == kDecryptAndDecode));
|
| }
|
| - } else if (decryptor_capability == kHoldSetDecryptor) {
|
| - // Set and cancel CdmReadyCB but the callback is never fired.
|
| - EXPECT_CALL(*this, SetCdmReadyCallback(_)).Times(2);
|
| - } else if (decryptor_capability == kNoDecryptor) {
|
| - EXPECT_CALL(*this, SetCdmReadyCallback(_))
|
| - .WillRepeatedly(
|
| - RunCallback<0>(nullptr, base::Bind(&IgnoreCdmAttached)));
|
| }
|
|
|
| DCHECK_GE(all_decoders_.size(), static_cast<size_t>(num_decoders));
|
| @@ -138,9 +110,7 @@ class VideoDecoderSelectorTest : public ::testing::Test {
|
|
|
| void SelectDecoder() {
|
| decoder_selector_->SelectDecoder(
|
| - demuxer_stream_.get(),
|
| - base::Bind(&VideoDecoderSelectorTest::SetCdmReadyCallback,
|
| - base::Unretained(this)),
|
| + demuxer_stream_.get(), cdm_context_.get(),
|
| base::Bind(&VideoDecoderSelectorTest::MockOnDecoderSelected,
|
| base::Unretained(this)),
|
| base::Bind(&VideoDecoderSelectorTest::FrameReady,
|
| @@ -185,12 +155,12 @@ class VideoDecoderSelectorTest : public ::testing::Test {
|
|
|
| base::MessageLoop message_loop_;
|
|
|
| - CallbackPairChecker verifier_;
|
| -
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(VideoDecoderSelectorTest);
|
| };
|
|
|
| +// TODO(xhwang): Add kNoCdm tests for clear stream.
|
| +
|
| // The stream is not encrypted but we have no clear decoder. No decoder can be
|
| // selected.
|
| TEST_F(VideoDecoderSelectorTest, ClearStream_NoDecryptor_NoClearDecoder) {
|
| @@ -335,14 +305,6 @@ TEST_F(VideoDecoderSelectorTest, EncryptedStream_DecryptOnly_NoDecoder) {
|
| SelectDecoder();
|
| }
|
|
|
| -TEST_F(VideoDecoderSelectorTest,
|
| - Destroy_EncryptedStream_DecryptOnly_NoDecoder) {
|
| - UseEncryptedStream();
|
| - InitializeDecoderSelector(kHoldSetDecryptor, 0);
|
| -
|
| - SelectDecoderAndDestroy();
|
| -}
|
| -
|
| // Decryptor can do decryption-only and there's a decoder available. The decoder
|
| // will be selected and a DecryptingDemuxerStream will be created.
|
| TEST_F(VideoDecoderSelectorTest, EncryptedStream_DecryptOnly_OneClearDecoder) {
|
| @@ -418,11 +380,4 @@ TEST_F(VideoDecoderSelectorTest, EncryptedStream_DecryptAndDecode) {
|
| SelectDecoder();
|
| }
|
|
|
| -TEST_F(VideoDecoderSelectorTest, Destroy_EncryptedStream_DecryptAndDecode) {
|
| - UseEncryptedStream();
|
| - InitializeDecoderSelector(kHoldSetDecryptor, 1);
|
| -
|
| - SelectDecoderAndDestroy();
|
| -}
|
| -
|
| } // namespace media
|
|
|