Index: media/base/mock_filters.h |
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h |
index 3e6f8be44b3aeb027cb264a7b1739afa1835751a..3ebfd940a5cf37d0b333179149ef6d9d42392923 100644 |
--- a/media/base/mock_filters.h |
+++ b/media/base/mock_filters.h |
@@ -15,9 +15,12 @@ |
#include "media/base/audio_decoder.h" |
#include "media/base/audio_decoder_config.h" |
#include "media/base/audio_renderer.h" |
+#include "media/base/cdm_config.h" |
#include "media/base/cdm_context.h" |
+#include "media/base/cdm_factory.h" |
#include "media/base/cdm_key_information.h" |
#include "media/base/cdm_promise.h" |
+#include "media/base/cdm_promise_adapter.h" |
#include "media/base/content_decryption_module.h" |
#include "media/base/decoder_buffer.h" |
#include "media/base/decryptor.h" |
@@ -446,6 +449,124 @@ class MockCdmSessionPromise : public NewSessionCdmPromise { |
DISALLOW_COPY_AND_ASSIGN(MockCdmSessionPromise); |
}; |
+class MockCdm : public ContentDecryptionModule { |
+ public: |
+ MockCdm(); |
+ |
+ // ContentDecryptionModule implementation. |
+ // As move-only parameters aren't supported by mock methods, convert promises |
+ // into IDs and pass them to On... methods. |
+ void SetServerCertificate(const std::vector<uint8_t>& certificate, |
+ std::unique_ptr<SimpleCdmPromise> promise) override; |
+ MOCK_METHOD2(OnSetServerCertificate, |
+ void(const std::vector<uint8_t>& certificate, |
+ std::unique_ptr<SimpleCdmPromise>& promise)); |
+ |
+ void CreateSessionAndGenerateRequest( |
+ CdmSessionType session_type, |
+ EmeInitDataType init_data_type, |
+ const std::vector<uint8_t>& init_data, |
+ std::unique_ptr<NewSessionCdmPromise> promise) override; |
+ MOCK_METHOD4(OnCreateSessionAndGenerateRequest, |
+ void(CdmSessionType session_type, |
+ EmeInitDataType init_data_type, |
+ const std::vector<uint8_t>& init_data, |
+ std::unique_ptr<NewSessionCdmPromise>& promise)); |
+ |
+ void LoadSession(CdmSessionType session_type, |
+ const std::string& session_id, |
+ std::unique_ptr<NewSessionCdmPromise> promise) override; |
+ MOCK_METHOD3(OnLoadSession, |
+ void(CdmSessionType session_type, |
+ const std::string& session_id, |
+ std::unique_ptr<NewSessionCdmPromise>& promise)); |
+ |
+ void UpdateSession(const std::string& session_id, |
+ const std::vector<uint8_t>& response, |
+ std::unique_ptr<SimpleCdmPromise> promise) override; |
+ MOCK_METHOD3(OnUpdateSession, |
+ void(const std::string& session_id, |
+ const std::vector<uint8_t>& response, |
+ std::unique_ptr<SimpleCdmPromise>& promise)); |
+ |
+ void CloseSession(const std::string& session_id, |
+ std::unique_ptr<SimpleCdmPromise> promise) override; |
+ MOCK_METHOD2(OnCloseSession, |
+ void(const std::string& session_id, |
+ std::unique_ptr<SimpleCdmPromise>& promise)); |
+ |
+ void RemoveSession(const std::string& session_id, |
+ std::unique_ptr<SimpleCdmPromise> promise) override; |
+ MOCK_METHOD2(OnRemoveSession, |
+ void(const std::string& session_id, |
+ std::unique_ptr<SimpleCdmPromise>& promise)); |
+ |
+ MOCK_METHOD0(GetCdmContext, CdmContext*()); |
+ |
+ // As MockCdmFactory returns the MockCdm provided to it, this sets the |
+ // actual callbacks used when MockCdmFactory::Create() is called. |
+ void SetCallbacks( |
+ const SessionMessageCB& session_message_cb, |
+ const SessionClosedCB& session_closed_cb, |
+ const SessionKeysChangeCB& session_keys_change_cb, |
+ const SessionExpirationUpdateCB& session_expiration_update_cb); |
+ void CallSessionMessageCB(const std::string& session_id, |
+ ContentDecryptionModule::MessageType message_type, |
+ const std::vector<uint8_t>& message); |
+ void CallSessionClosedCB(const std::string& session_id); |
+ void CallSessionKeysChangeCB(const std::string& session_id, |
+ bool has_additional_usable_key, |
+ CdmKeysInfo keys_info); |
+ void CallSessionExpirationUpdateCB(const std::string& session_id, |
+ base::Time new_expiry_time); |
+ |
+ protected: |
+ ~MockCdm() override; |
+ |
+ private: |
+ // Callbacks. |
+ SessionMessageCB session_message_cb_; |
+ SessionClosedCB session_closed_cb_; |
+ SessionKeysChangeCB session_keys_change_cb_; |
+ SessionExpirationUpdateCB session_expiration_update_cb_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockCdm); |
+}; |
+ |
+class MockCdmFactory : public CdmFactory { |
+ public: |
+ MockCdmFactory(); |
+ ~MockCdmFactory() override; |
+ |
+ // CdmFactory implementation. |
+ void Create(const std::string& key_system, |
+ const GURL& security_origin, |
+ const CdmConfig& cdm_config, |
+ const SessionMessageCB& session_message_cb, |
+ const SessionClosedCB& session_closed_cb, |
+ const SessionKeysChangeCB& session_keys_change_cb, |
+ const SessionExpirationUpdateCB& session_expiration_update_cb, |
+ const CdmCreatedCB& cdm_created_cb) override; |
+ |
+ // Provide the CDM to be returned by Create(). If not provided, Create() |
+ // will fail (|cdm_created_cb| will return an error). |before_creation_cb|, |
+ // if provided, will be called before the CDM is returned. |
+ // Note: This will take another reference to |cdm|, which it will keep until |
+ // Create() is called (in which case it will pass ownership to |
+ // |cdm_created_cb|). |
+ void Initialize(const scoped_refptr<MockCdm>& cdm, |
+ const base::Closure& before_creation_cb); |
+ |
+ private: |
+ // CDM to be used for Create(). If not specified, Create() will fail. |
+ scoped_refptr<MockCdm> cdm_; |
+ |
+ // Callback to be used before Create() successfully calls |cdm_created_cb|. |
+ base::Closure before_creation_cb_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockCdmFactory); |
+}; |
+ |
class MockStreamParser : public StreamParser { |
public: |
MockStreamParser(); |