1 // Copyright 2017 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 5 #ifndef MEDIA_CDM_LIBRARY_CDM_CDM_HOST_PROXY_H_ 6 #define MEDIA_CDM_LIBRARY_CDM_CDM_HOST_PROXY_H_ 7 8 #include "media/cdm/api/content_decryption_module.h" 9 10 namespace media { 11 12 // An interface to proxy calls to the CDM Host. 13 class CdmHostProxy { 14 public: 15 virtual ~CdmHostProxy() = default; 16 17 // This needs to be a superset of all Host interfaces supported. 18 virtual void OnInitialized(bool success) = 0; 19 virtual cdm::Buffer* Allocate(uint32_t capacity) = 0; 20 virtual void SetTimer(int64_t delay_ms, void* context) = 0; 21 virtual cdm::Time GetCurrentWallTime() = 0; 22 virtual void OnResolveKeyStatusPromise(uint32_t promise_id, 23 cdm::KeyStatus key_status) = 0; 24 virtual void OnResolveNewSessionPromise(uint32_t promise_id, 25 const char* session_id, 26 uint32_t session_id_size) = 0; 27 virtual void OnResolvePromise(uint32_t promise_id) = 0; 28 virtual void OnRejectPromise(uint32_t promise_id, 29 cdm::Exception exception, 30 uint32_t system_code, 31 const char* error_message, 32 uint32_t error_message_size) = 0; 33 virtual void OnSessionMessage(const char* session_id, 34 uint32_t session_id_size, 35 cdm::MessageType message_type, 36 const char* message, 37 uint32_t message_size) = 0; 38 virtual void OnSessionKeysChange(const char* session_id, 39 uint32_t session_id_size, 40 bool has_additional_usable_key, 41 const cdm::KeyInformation* keys_info, 42 uint32_t keys_info_count) = 0; 43 virtual void OnExpirationChange(const char* session_id, 44 uint32_t session_id_size, 45 cdm::Time new_expiry_time) = 0; 46 virtual void OnSessionClosed(const char* session_id, 47 uint32_t session_id_size) = 0; 48 virtual void SendPlatformChallenge(const char* service_id, 49 uint32_t service_id_size, 50 const char* challenge, 51 uint32_t challenge_size) = 0; 52 virtual void EnableOutputProtection(uint32_t desired_protection_mask) = 0; 53 virtual void QueryOutputProtectionStatus() = 0; 54 virtual void OnDeferredInitializationDone(cdm::StreamType stream_type, 55 cdm::Status decoder_status) = 0; 56 virtual cdm::FileIO* CreateFileIO(cdm::FileIOClient* client) = 0; 57 virtual cdm::CdmProxy* RequestCdmProxy(cdm::CdmProxyClient* client) = 0; 58 virtual void RequestStorageId(uint32_t version) = 0; 59 }; 60 61 } // namespace media 62 63 #endif // MEDIA_CDM_LIBRARY_CDM_CDM_HOST_PROXY_H_ 64