Index: media/cdm/ppapi/cdm_adapter.cc |
diff --git a/media/cdm/ppapi/cdm_adapter.cc b/media/cdm/ppapi/cdm_adapter.cc |
index 1d36db9595365be0c97e50fd221a25785644232c..00a2fe3958a0225b56d744494adbb8a26eda380b 100644 |
--- a/media/cdm/ppapi/cdm_adapter.cc |
+++ b/media/cdm/ppapi/cdm_adapter.cc |
@@ -715,11 +715,21 @@ void CdmAdapter::OnSessionMessage(const char* session_id, |
uint32_t session_id_size, |
cdm::MessageType message_type, |
const char* message, |
- uint32_t message_size) { |
+ uint32_t message_size, |
+ const char* legacy_destination_url, |
+ uint32_t legacy_destination_url_size) { |
+ // Only license renewals should specify |legacy_destination_url|. |
+ // |legacy_destination_url| is not passed to unprefixed EME applications, |
+ // so it can be removed when the prefixed API is removed. |
+ PP_DCHECK(legacy_destination_url_size == 0 || |
+ message_type == cdm::MessageType::kLicenseRenewal); |
+ |
PostOnMain(callback_factory_.NewCallback( |
&CdmAdapter::SendSessionMessageInternal, |
- std::string(session_id, session_id_size), message_type, |
- std::vector<uint8_t>(message, message + message_size))); |
+ SessionMessage( |
+ std::string(session_id, session_id_size), message_type, message, |
+ message_size, |
+ std::string(legacy_destination_url, legacy_destination_url_size)))); |
} |
// cdm::Host_6 only. |
@@ -729,16 +739,17 @@ void CdmAdapter::OnSessionMessage(const char* session_id, |
uint32_t message_size, |
const char* destination_url, |
uint32_t destination_url_size) { |
- // |destination_url| is no longer passed to EME applications, so it is |
- // dropped. All messages will appear as license renewals if |destination_url| |
- // is provided, license request if not. |
+ // |destination_url| is no longer passed to unprefixed EME applications, |
+ // so it will be dropped. All messages will appear as license renewals |
+ // if |destination_url| is provided, license request if not. |
cdm::MessageType message_type = (destination_url_size > 0) |
? cdm::MessageType::kLicenseRenewal |
: cdm::MessageType::kLicenseRequest; |
PostOnMain(callback_factory_.NewCallback( |
&CdmAdapter::SendSessionMessageInternal, |
- std::string(session_id, session_id_size), message_type, |
- std::vector<uint8_t>(message, message + message_size))); |
+ SessionMessage(std::string(session_id, session_id_size), message_type, |
+ message, message_size, |
+ std::string(destination_url, destination_url_size)))); |
} |
// cdm::Host_7 only. |
@@ -851,21 +862,19 @@ void CdmAdapter::SendPromiseRejectedInternal(int32_t result, |
error.error_description); |
} |
-void CdmAdapter::SendSessionMessageInternal( |
- int32_t result, |
- const std::string& session_id, |
- cdm::MessageType message_type, |
- const std::vector<uint8_t>& message) { |
+void CdmAdapter::SendSessionMessageInternal(int32_t result, |
+ const SessionMessage& message) { |
PP_DCHECK(result == PP_OK); |
- pp::VarArrayBuffer message_array_buffer(message.size()); |
- if (message.size() > 0) { |
- memcpy(message_array_buffer.Map(), message.data(), message.size()); |
+ pp::VarArrayBuffer message_array_buffer(message.message.size()); |
+ if (message.message.size() > 0) { |
+ memcpy(message_array_buffer.Map(), message.message.data(), |
+ message.message.size()); |
} |
pp::ContentDecryptor_Private::SessionMessage( |
- session_id, CdmMessageTypeToPpMessageType(message_type), |
- message_array_buffer); |
+ message.session_id, CdmMessageTypeToPpMessageType(message.message_type), |
+ message_array_buffer, message.legacy_destination_url); |
} |
void CdmAdapter::SendSessionClosedInternal(int32_t result, |
@@ -1300,12 +1309,24 @@ void CdmAdapter::QueryOutputProtectionStatusDone(int32_t result) { |
CdmAdapter::SessionError::SessionError(cdm::Error error, |
uint32_t system_code, |
- std::string error_description) |
+ const std::string& error_description) |
: error(error), |
system_code(system_code), |
error_description(error_description) { |
} |
+CdmAdapter::SessionMessage::SessionMessage( |
+ const std::string& session_id, |
+ cdm::MessageType message_type, |
+ const char* message, |
+ uint32_t message_size, |
+ const std::string& legacy_destination_url) |
+ : session_id(session_id), |
+ message_type(message_type), |
+ message(message, message + message_size), |
+ legacy_destination_url(legacy_destination_url) { |
+} |
+ |
void* GetCdmHost(int host_interface_version, void* user_data) { |
if (!host_interface_version || !user_data) |
return NULL; |