mock_filters.cc 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/base/mock_filters.h"
  5. #include "base/check_op.h"
  6. using ::testing::_;
  7. using ::testing::NiceMock;
  8. using ::testing::Return;
  9. using ::testing::SaveArg;
  10. MATCHER(NotEmpty, "") {
  11. return !arg.empty();
  12. }
  13. namespace media {
  14. MockPipelineClient::MockPipelineClient() = default;
  15. MockPipelineClient::~MockPipelineClient() = default;
  16. MockPipeline::MockPipeline() = default;
  17. MockPipeline::~MockPipeline() = default;
  18. MockMediaResource::MockMediaResource() = default;
  19. MockMediaResource::~MockMediaResource() = default;
  20. MockDemuxer::MockDemuxer() = default;
  21. MockDemuxer::~MockDemuxer() = default;
  22. std::string MockDemuxer::GetDisplayName() const {
  23. return "MockDemuxer";
  24. }
  25. MockDemuxerStream::MockDemuxerStream(DemuxerStream::Type type) : type_(type) {}
  26. MockDemuxerStream::~MockDemuxerStream() = default;
  27. DemuxerStream::Type MockDemuxerStream::type() const {
  28. return type_;
  29. }
  30. StreamLiveness MockDemuxerStream::liveness() const {
  31. return liveness_;
  32. }
  33. AudioDecoderConfig MockDemuxerStream::audio_decoder_config() {
  34. DCHECK_EQ(type_, DemuxerStream::AUDIO);
  35. return audio_decoder_config_;
  36. }
  37. VideoDecoderConfig MockDemuxerStream::video_decoder_config() {
  38. DCHECK_EQ(type_, DemuxerStream::VIDEO);
  39. return video_decoder_config_;
  40. }
  41. void MockDemuxerStream::set_audio_decoder_config(
  42. const AudioDecoderConfig& config) {
  43. DCHECK_EQ(type_, DemuxerStream::AUDIO);
  44. audio_decoder_config_ = config;
  45. }
  46. void MockDemuxerStream::set_video_decoder_config(
  47. const VideoDecoderConfig& config) {
  48. DCHECK_EQ(type_, DemuxerStream::VIDEO);
  49. video_decoder_config_ = config;
  50. }
  51. void MockDemuxerStream::set_liveness(StreamLiveness liveness) {
  52. liveness_ = liveness;
  53. }
  54. MockVideoDecoder::MockVideoDecoder() : MockVideoDecoder(0) {}
  55. MockVideoDecoder::MockVideoDecoder(int decoder_id)
  56. : MockVideoDecoder(false, false, decoder_id) {}
  57. MockVideoDecoder::MockVideoDecoder(bool is_platform_decoder,
  58. bool supports_decryption,
  59. int decoder_id)
  60. : is_platform_decoder_(is_platform_decoder),
  61. supports_decryption_(supports_decryption),
  62. decoder_id_(decoder_id) {
  63. ON_CALL(*this, CanReadWithoutStalling()).WillByDefault(Return(true));
  64. }
  65. MockVideoDecoder::~MockVideoDecoder() = default;
  66. bool MockVideoDecoder::IsPlatformDecoder() const {
  67. return is_platform_decoder_;
  68. }
  69. bool MockVideoDecoder::SupportsDecryption() const {
  70. return supports_decryption_;
  71. }
  72. MockAudioEncoder::MockAudioEncoder() = default;
  73. MockAudioEncoder::~MockAudioEncoder() {
  74. OnDestruct();
  75. }
  76. MockVideoEncoder::MockVideoEncoder() = default;
  77. MockVideoEncoder::~MockVideoEncoder() {
  78. Dtor();
  79. }
  80. MockAudioDecoder::MockAudioDecoder() : MockAudioDecoder(0) {}
  81. MockAudioDecoder::MockAudioDecoder(int decoder_id)
  82. : MockAudioDecoder(false, false, decoder_id) {}
  83. MockAudioDecoder::MockAudioDecoder(bool is_platform_decoder,
  84. bool supports_decryption,
  85. int decoder_id)
  86. : is_platform_decoder_(is_platform_decoder),
  87. supports_decryption_(supports_decryption),
  88. decoder_id_(decoder_id) {}
  89. MockAudioDecoder::~MockAudioDecoder() = default;
  90. bool MockAudioDecoder::IsPlatformDecoder() const {
  91. return is_platform_decoder_;
  92. }
  93. bool MockAudioDecoder::SupportsDecryption() const {
  94. return supports_decryption_;
  95. }
  96. MockRendererClient::MockRendererClient() = default;
  97. MockRendererClient::~MockRendererClient() = default;
  98. MockVideoRenderer::MockVideoRenderer() = default;
  99. MockVideoRenderer::~MockVideoRenderer() = default;
  100. MockAudioRenderer::MockAudioRenderer() = default;
  101. MockAudioRenderer::~MockAudioRenderer() = default;
  102. MockRenderer::MockRenderer() = default;
  103. MockRenderer::~MockRenderer() = default;
  104. MockRendererFactory::MockRendererFactory() = default;
  105. MockRendererFactory::~MockRendererFactory() = default;
  106. MockTimeSource::MockTimeSource() = default;
  107. MockTimeSource::~MockTimeSource() = default;
  108. MockTextTrack::MockTextTrack() = default;
  109. MockTextTrack::~MockTextTrack() = default;
  110. MockCdmClient::MockCdmClient() = default;
  111. MockCdmClient::~MockCdmClient() = default;
  112. MockDecryptor::MockDecryptor() = default;
  113. MockDecryptor::~MockDecryptor() = default;
  114. MockCdmContext::MockCdmContext() = default;
  115. MockCdmContext::~MockCdmContext() = default;
  116. absl::optional<base::UnguessableToken> MockCdmContext::GetCdmId() const {
  117. return cdm_id_;
  118. }
  119. void MockCdmContext::set_cdm_id(const base::UnguessableToken& cdm_id) {
  120. cdm_id_ = absl::make_optional(cdm_id);
  121. }
  122. MockCdmPromise::MockCdmPromise(bool expect_success) {
  123. if (expect_success) {
  124. EXPECT_CALL(*this, resolve());
  125. EXPECT_CALL(*this, reject(_, _, _)).Times(0);
  126. } else {
  127. EXPECT_CALL(*this, resolve()).Times(0);
  128. EXPECT_CALL(*this, reject(_, _, NotEmpty()));
  129. }
  130. }
  131. MockCdmPromise::~MockCdmPromise() {
  132. // The EXPECT calls will verify that the promise is in fact fulfilled.
  133. MarkPromiseSettled();
  134. }
  135. MockCdmSessionPromise::MockCdmSessionPromise(bool expect_success,
  136. std::string* new_session_id) {
  137. if (expect_success) {
  138. EXPECT_CALL(*this, resolve(_)).WillOnce(SaveArg<0>(new_session_id));
  139. EXPECT_CALL(*this, reject(_, _, _)).Times(0);
  140. } else {
  141. EXPECT_CALL(*this, resolve(_)).Times(0);
  142. EXPECT_CALL(*this, reject(_, _, NotEmpty()));
  143. }
  144. }
  145. MockCdmSessionPromise::~MockCdmSessionPromise() {
  146. // The EXPECT calls will verify that the promise is in fact fulfilled.
  147. MarkPromiseSettled();
  148. }
  149. MockCdmKeyStatusPromise::MockCdmKeyStatusPromise(
  150. bool expect_success,
  151. CdmKeyInformation::KeyStatus* key_status) {
  152. if (expect_success) {
  153. EXPECT_CALL(*this, resolve(_)).WillOnce(SaveArg<0>(key_status));
  154. EXPECT_CALL(*this, reject(_, _, _)).Times(0);
  155. } else {
  156. EXPECT_CALL(*this, resolve(_)).Times(0);
  157. EXPECT_CALL(*this, reject(_, _, NotEmpty()));
  158. }
  159. }
  160. MockCdmKeyStatusPromise::~MockCdmKeyStatusPromise() {
  161. // The EXPECT calls will verify that the promise is in fact fulfilled.
  162. MarkPromiseSettled();
  163. }
  164. MockCdm::MockCdm() = default;
  165. MockCdm::MockCdm(
  166. const CdmConfig& cdm_config,
  167. const SessionMessageCB& session_message_cb,
  168. const SessionClosedCB& session_closed_cb,
  169. const SessionKeysChangeCB& session_keys_change_cb,
  170. const SessionExpirationUpdateCB& session_expiration_update_cb) {
  171. Initialize(cdm_config, session_message_cb, session_closed_cb,
  172. session_keys_change_cb, session_expiration_update_cb);
  173. }
  174. MockCdm::~MockCdm() = default;
  175. void MockCdm::Initialize(
  176. const CdmConfig& cdm_config,
  177. const SessionMessageCB& session_message_cb,
  178. const SessionClosedCB& session_closed_cb,
  179. const SessionKeysChangeCB& session_keys_change_cb,
  180. const SessionExpirationUpdateCB& session_expiration_update_cb) {
  181. key_system_ = cdm_config.key_system;
  182. session_message_cb_ = session_message_cb;
  183. session_closed_cb_ = session_closed_cb;
  184. session_keys_change_cb_ = session_keys_change_cb;
  185. session_expiration_update_cb_ = session_expiration_update_cb;
  186. }
  187. void MockCdm::CallSessionMessageCB(const std::string& session_id,
  188. CdmMessageType message_type,
  189. const std::vector<uint8_t>& message) {
  190. session_message_cb_.Run(session_id, message_type, message);
  191. }
  192. void MockCdm::CallSessionClosedCB(const std::string& session_id,
  193. CdmSessionClosedReason reason) {
  194. session_closed_cb_.Run(session_id, reason);
  195. }
  196. void MockCdm::CallSessionKeysChangeCB(const std::string& session_id,
  197. bool has_additional_usable_key,
  198. CdmKeysInfo keys_info) {
  199. session_keys_change_cb_.Run(session_id, has_additional_usable_key,
  200. std::move(keys_info));
  201. }
  202. void MockCdm::CallSessionExpirationUpdateCB(const std::string& session_id,
  203. base::Time new_expiry_time) {
  204. session_expiration_update_cb_.Run(session_id, new_expiry_time);
  205. }
  206. MockCdmFactory::MockCdmFactory(scoped_refptr<MockCdm> mock_cdm)
  207. : mock_cdm_(mock_cdm) {}
  208. MockCdmFactory::~MockCdmFactory() = default;
  209. void MockCdmFactory::Create(
  210. const CdmConfig& cdm_config,
  211. const SessionMessageCB& session_message_cb,
  212. const SessionClosedCB& session_closed_cb,
  213. const SessionKeysChangeCB& session_keys_change_cb,
  214. const SessionExpirationUpdateCB& session_expiration_update_cb,
  215. CdmCreatedCB cdm_created_cb) {
  216. // If no key system specified, notify that Create() failed.
  217. if (cdm_config.key_system.empty()) {
  218. std::move(cdm_created_cb).Run(nullptr, "CDM creation failed");
  219. return;
  220. }
  221. // Since there is a CDM, call |before_creation_cb_| first.
  222. if (before_creation_cb_)
  223. before_creation_cb_.Run();
  224. mock_cdm_->Initialize(cdm_config, session_message_cb, session_closed_cb,
  225. session_keys_change_cb, session_expiration_update_cb);
  226. std::move(cdm_created_cb).Run(mock_cdm_, "");
  227. }
  228. void MockCdmFactory::SetBeforeCreationCB(
  229. base::RepeatingClosure before_creation_cb) {
  230. before_creation_cb_ = std::move(before_creation_cb);
  231. }
  232. MockStreamParser::MockStreamParser() = default;
  233. MockStreamParser::~MockStreamParser() = default;
  234. MockMediaClient::MockMediaClient() = default;
  235. MockMediaClient::~MockMediaClient() = default;
  236. } // namespace media