Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 MojoRendererService::InitiateSurfaceRequestCB(), | 70 MojoRendererService::InitiateSurfaceRequestCB(), |
| 71 mojo::MakeRequest(&remote_renderer)); | 71 mojo::MakeRequest(&remote_renderer)); |
| 72 | 72 |
| 73 mojo_renderer_.reset( | 73 mojo_renderer_.reset( |
| 74 new MojoRenderer(message_loop_.task_runner(), | 74 new MojoRenderer(message_loop_.task_runner(), |
| 75 std::unique_ptr<VideoOverlayFactory>(nullptr), nullptr, | 75 std::unique_ptr<VideoOverlayFactory>(nullptr), nullptr, |
| 76 std::move(remote_renderer))); | 76 std::move(remote_renderer))); |
| 77 | 77 |
| 78 // CreateAudioStream() and CreateVideoStream() overrides expectations for | 78 // CreateAudioStream() and CreateVideoStream() overrides expectations for |
| 79 // expected non-NULL streams. | 79 // expected non-NULL streams. |
| 80 EXPECT_CALL(demuxer_, GetStream(_)).WillRepeatedly(Return(nullptr)); | 80 std::vector<DemuxerStream*> empty; |
| 81 EXPECT_CALL(demuxer_, GetStreams()).WillRepeatedly(Return(empty)); | |
| 81 | 82 |
| 82 EXPECT_CALL(*mock_renderer_, GetMediaTime()) | 83 EXPECT_CALL(*mock_renderer_, GetMediaTime()) |
| 83 .WillRepeatedly(Return(base::TimeDelta())); | 84 .WillRepeatedly(Return(base::TimeDelta())); |
| 84 } | 85 } |
| 85 | 86 |
| 86 virtual ~MojoRendererTest() {} | 87 virtual ~MojoRendererTest() {} |
| 87 | 88 |
| 88 void Destroy() { | 89 void Destroy() { |
| 89 mojo_renderer_.reset(); | 90 mojo_renderer_.reset(); |
| 90 base::RunLoop().RunUntilIdle(); | 91 base::RunLoop().RunUntilIdle(); |
| 91 } | 92 } |
| 92 | 93 |
| 93 // Completion callbacks. | 94 // Completion callbacks. |
| 94 MOCK_METHOD1(OnInitialized, void(PipelineStatus)); | 95 MOCK_METHOD1(OnInitialized, void(PipelineStatus)); |
| 95 MOCK_METHOD0(OnFlushed, void()); | 96 MOCK_METHOD0(OnFlushed, void()); |
| 96 MOCK_METHOD1(OnCdmAttached, void(bool)); | 97 MOCK_METHOD1(OnCdmAttached, void(bool)); |
| 97 MOCK_METHOD1(OnSurfaceRequestToken, void(const base::UnguessableToken&)); | 98 MOCK_METHOD1(OnSurfaceRequestToken, void(const base::UnguessableToken&)); |
| 98 | 99 |
| 99 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( | 100 std::unique_ptr<StrictMock<MockDemuxerStream>> CreateStream( |
| 100 DemuxerStream::Type type) { | 101 DemuxerStream::Type type) { |
| 101 std::unique_ptr<StrictMock<MockDemuxerStream>> stream( | 102 std::unique_ptr<StrictMock<MockDemuxerStream>> stream( |
| 102 new StrictMock<MockDemuxerStream>(type)); | 103 new StrictMock<MockDemuxerStream>(type)); |
| 103 return stream; | 104 return stream; |
| 104 } | 105 } |
| 105 | 106 |
| 106 void CreateAudioStream() { | 107 void CreateAudioStream() { |
| 107 audio_stream_ = CreateStream(DemuxerStream::AUDIO); | 108 audio_stream_ = CreateStream(DemuxerStream::AUDIO); |
| 108 EXPECT_CALL(demuxer_, GetStream(DemuxerStream::AUDIO)) | 109 std::vector<DemuxerStream*> streams; |
| 109 .WillRepeatedly(Return(audio_stream_.get())); | 110 streams.push_back(audio_stream_.get()); |
| 111 if (video_stream_) | |
| 112 streams.push_back(video_stream_.get()); | |
| 113 EXPECT_CALL(demuxer_, GetStreams()).WillRepeatedly(Return(streams)); | |
|
xhwang
2017/02/01 18:26:04
It's odd that CreateAudioStream() needs to worry a
servolk
2017/02/01 22:29:17
Done.
| |
| 110 } | 114 } |
| 111 | 115 |
| 112 void CreateVideoStream(bool is_encrypted = false) { | 116 void CreateVideoStream(bool is_encrypted = false) { |
| 113 video_stream_ = CreateStream(DemuxerStream::VIDEO); | 117 video_stream_ = CreateStream(DemuxerStream::VIDEO); |
| 114 video_stream_->set_video_decoder_config( | 118 video_stream_->set_video_decoder_config( |
| 115 is_encrypted ? TestVideoConfig::NormalEncrypted() | 119 is_encrypted ? TestVideoConfig::NormalEncrypted() |
| 116 : TestVideoConfig::Normal()); | 120 : TestVideoConfig::Normal()); |
| 117 EXPECT_CALL(demuxer_, GetStream(DemuxerStream::VIDEO)) | 121 std::vector<DemuxerStream*> streams; |
| 118 .WillRepeatedly(Return(video_stream_.get())); | 122 if (audio_stream_) |
|
xhwang
2017/02/01 18:26:04
ditto
servolk
2017/02/01 22:29:17
Done.
| |
| 123 streams.push_back(audio_stream_.get()); | |
| 124 streams.push_back(video_stream_.get()); | |
| 125 EXPECT_CALL(demuxer_, GetStreams()).WillRepeatedly(Return(streams)); | |
| 119 } | 126 } |
| 120 | 127 |
| 121 void InitializeAndExpect(PipelineStatus status) { | 128 void InitializeAndExpect(PipelineStatus status) { |
| 122 DVLOG(1) << __func__ << ": " << status; | 129 DVLOG(1) << __func__ << ": " << status; |
| 123 EXPECT_CALL(*this, OnInitialized(status)); | 130 EXPECT_CALL(*this, OnInitialized(status)); |
| 124 mojo_renderer_->Initialize( | 131 mojo_renderer_->Initialize( |
| 125 &demuxer_, &renderer_client_, | 132 &demuxer_, &renderer_client_, |
| 126 base::Bind(&MojoRendererTest::OnInitialized, base::Unretained(this))); | 133 base::Bind(&MojoRendererTest::OnInitialized, base::Unretained(this))); |
| 127 base::RunLoop().RunUntilIdle(); | 134 base::RunLoop().RunUntilIdle(); |
| 128 } | 135 } |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 459 Play(); | 466 Play(); |
| 460 remote_renderer_client_->OnError(PIPELINE_ERROR_DECODE); | 467 remote_renderer_client_->OnError(PIPELINE_ERROR_DECODE); |
| 461 base::RunLoop().RunUntilIdle(); | 468 base::RunLoop().RunUntilIdle(); |
| 462 | 469 |
| 463 EXPECT_CALL(*mock_renderer_, SetPlaybackRate(0.0)).Times(1); | 470 EXPECT_CALL(*mock_renderer_, SetPlaybackRate(0.0)).Times(1); |
| 464 mojo_renderer_->SetPlaybackRate(0.0); | 471 mojo_renderer_->SetPlaybackRate(0.0); |
| 465 Flush(); | 472 Flush(); |
| 466 } | 473 } |
| 467 | 474 |
| 468 } // namespace media | 475 } // namespace media |
| OLD | NEW |