// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_REMOTING_REMOTING_CDM_H_ #define MEDIA_REMOTING_REMOTING_CDM_H_ #include "media/base/cdm_factory.h" #include "media/base/content_decryption_module.h" #include "media/remoting/remoting_cdm_context.h" #include "media/remoting/remoting_cdm_controller.h" namespace media { namespace remoting { // TODO(xjz): Merge this with erickung's implementation. // TODO(miu): Execute renaming on all RemotingCdm* classes after erickung's // implementation is merged-in. class RemotingCdm : public ContentDecryptionModule { public: RemotingCdm(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, std::unique_ptr remoting_cdm_controller); // ContentDecryptionModule implementations. void SetServerCertificate(const std::vector& certificate, std::unique_ptr promise) override; void CreateSessionAndGenerateRequest( CdmSessionType session_type, EmeInitDataType init_data_type, const std::vector& init_data, std::unique_ptr promise) override; void LoadSession(CdmSessionType session_type, const std::string& session_id, std::unique_ptr promise) override; void UpdateSession(const std::string& session_id, const std::vector& response, std::unique_ptr promise) override; void CloseSession(const std::string& session_id, std::unique_ptr promise) override; void RemoveSession(const std::string& session_id, std::unique_ptr promise) override; CdmContext* GetCdmContext() override; SharedSession* session() const { return remoting_cdm_controller_->session(); } private: ~RemotingCdm() override; const std::unique_ptr remoting_cdm_controller_; RemotingCdmContext remoting_cdm_context_; DISALLOW_COPY_AND_ASSIGN(RemotingCdm); }; } // namespace remoting } // namespace media #endif // MEDIA_REMOTING_REMOTING_CDM_H_