| Index: media/filters/video_frame_stream_unittest.cc
|
| diff --git a/media/filters/video_frame_stream_unittest.cc b/media/filters/video_frame_stream_unittest.cc
|
| index 492e7cf9ffbb50e3b17f6fdfa28e7c46940a5fa5..96848e42cd5f56aac7c2d975a96e21a1fb4a84c8 100644
|
| --- a/media/filters/video_frame_stream_unittest.cc
|
| +++ b/media/filters/video_frame_stream_unittest.cc
|
| @@ -17,6 +17,7 @@ using ::testing::_;
|
| using ::testing::AnyNumber;
|
| using ::testing::Assign;
|
| using ::testing::Invoke;
|
| +using ::testing::InvokeWithoutArgs;
|
| using ::testing::NiceMock;
|
| using ::testing::Return;
|
| using ::testing::SaveArg;
|
| @@ -24,6 +25,22 @@ using ::testing::SaveArg;
|
| static const int kNumConfigs = 3;
|
| static const int kNumBuffersInOneConfig = 5;
|
|
|
| +// Use anonymous namespace here to prevent the actions to be defined multiple
|
| +// times across multiple test files. Sadly we can't use static for them.
|
| +namespace {
|
| +
|
| +ACTION_P3(ExecuteCallbackWithVerifier, decryptor, done_cb, verifier) {
|
| + // verifier must be called first since |done_cb| call will invoke it as well.
|
| + verifier->RecordACalled();
|
| + arg0.Run(decryptor, done_cb);
|
| +}
|
| +
|
| +ACTION_P(ReportCallback, verifier) {
|
| + verifier->RecordBCalled();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| namespace media {
|
|
|
| struct VideoFrameStreamTestParams {
|
| @@ -93,6 +110,7 @@ class VideoFrameStreamTest
|
|
|
| MOCK_METHOD1(OnNewSpliceBuffer, void(base::TimeDelta));
|
| MOCK_METHOD1(SetDecryptorReadyCallback, void(const media::DecryptorReadyCB&));
|
| + MOCK_METHOD1(DecryptorSet, void(bool));
|
|
|
| void OnStatistics(const PipelineStatistics& statistics) {
|
| total_bytes_decoded_ += statistics.video_bytes_decoded;
|
| @@ -197,6 +215,17 @@ class VideoFrameStreamTest
|
| DECODER_RESET
|
| };
|
|
|
| + void ExpectDecryptorNotification() {
|
| + EXPECT_CALL(*this, SetDecryptorReadyCallback(_))
|
| + .WillRepeatedly(ExecuteCallbackWithVerifier(
|
| + decryptor_.get(),
|
| + base::Bind(&VideoFrameStreamTest::DecryptorSet,
|
| + base::Unretained(this)),
|
| + &verifier_));
|
| + EXPECT_CALL(*this, DecryptorSet(true))
|
| + .WillRepeatedly(ReportCallback(&verifier_));
|
| + }
|
| +
|
| void EnterPendingState(PendingState state) {
|
| DCHECK_NE(state, NOT_PENDING);
|
| switch (state) {
|
| @@ -219,15 +248,13 @@ class VideoFrameStreamTest
|
| break;
|
|
|
| case DECRYPTOR_NO_KEY:
|
| - EXPECT_CALL(*this, SetDecryptorReadyCallback(_))
|
| - .WillRepeatedly(RunCallback<0>(decryptor_.get()));
|
| + ExpectDecryptorNotification();
|
| has_no_key_ = true;
|
| ReadOneFrame();
|
| break;
|
|
|
| case DECODER_INIT:
|
| - EXPECT_CALL(*this, SetDecryptorReadyCallback(_))
|
| - .WillRepeatedly(RunCallback<0>(decryptor_.get()));
|
| + ExpectDecryptorNotification();
|
| decoder_->HoldNextInit();
|
| InitializeVideoFrameStream();
|
| break;
|
| @@ -332,6 +359,8 @@ class VideoFrameStreamTest
|
| // Decryptor has no key to decrypt a frame.
|
| bool has_no_key_;
|
|
|
| + CallbackPairChecker verifier_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(VideoFrameStreamTest);
|
| };
|
|
|