summaryrefslogtreecommitdiffstats
path: root/media/mojo
diff options
context:
space:
mode:
authorjrummell <jrummell@chromium.org>2015-01-13 16:34:32 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-14 00:35:31 +0000
commitc842f110b2b69639b4764e85d48dd404f6de8ee4 (patch)
tree7d769946dc293212ca32746fb46d19d6b9c877e2 /media/mojo
parent6ebc820381ef4694c6bbef164c84181ec434ae3c (diff)
downloadchromium_src-c842f110b2b69639b4764e85d48dd404f6de8ee4.zip
chromium_src-c842f110b2b69639b4764e85d48dd404f6de8ee4.tar.gz
chromium_src-c842f110b2b69639b4764e85d48dd404f6de8ee4.tar.bz2
Add |legacy_destination_url| back to SessionMessage for EME
Recent changes to CDM_7 removed |destination_url| as it is no longer used in the EME spec. However legacy applications using the prefixed EME API depend on it, so adding it back in so that it is available to those applications. BUG=448242 TEST=existing EME tests pass + Play movies play Review URL: https://codereview.chromium.org/813683005 Cr-Commit-Position: refs/heads/master@{#311371}
Diffstat (limited to 'media/mojo')
-rw-r--r--media/mojo/interfaces/content_decryption_module.mojom3
-rw-r--r--media/mojo/services/mojo_cdm.cc12
-rw-r--r--media/mojo/services/mojo_cdm.h3
-rw-r--r--media/mojo/services/mojo_cdm_service.cc6
-rw-r--r--media/mojo/services/mojo_cdm_service.h3
5 files changed, 20 insertions, 7 deletions
diff --git a/media/mojo/interfaces/content_decryption_module.mojom b/media/mojo/interfaces/content_decryption_module.mojom
index aa3414df8..aeee15b 100644
--- a/media/mojo/interfaces/content_decryption_module.mojom
+++ b/media/mojo/interfaces/content_decryption_module.mojom
@@ -117,7 +117,8 @@ interface ContentDecryptionModule {
// Session callbacks. See media/base/media_keys.h for details.
interface ContentDecryptionModuleClient {
- OnSessionMessage(string session_id, CdmMessageType message_type, array<uint8> message);
+ OnSessionMessage(string session_id, CdmMessageType message_type,
+ array<uint8> message, string legacy_destination_url);
OnSessionClosed(string session_id);
diff --git a/media/mojo/services/mojo_cdm.cc b/media/mojo/services/mojo_cdm.cc
index efe7bac..69d2046 100644
--- a/media/mojo/services/mojo_cdm.cc
+++ b/media/mojo/services/mojo_cdm.cc
@@ -122,10 +122,18 @@ CdmContext* MojoCdm::GetCdmContext() {
void MojoCdm::OnSessionMessage(const mojo::String& session_id,
mojo::CdmMessageType message_type,
- mojo::Array<uint8_t> message) {
+ mojo::Array<uint8_t> message,
+ const mojo::String& legacy_destination_url) {
+ GURL verified_gurl = GURL(legacy_destination_url);
+ if (!verified_gurl.is_valid() && !verified_gurl.is_empty()) {
+ DLOG(WARNING) << "SessionMessage destination_url is invalid : "
+ << verified_gurl.possibly_invalid_spec();
+ verified_gurl = GURL::EmptyGURL(); // Replace invalid destination_url.
+ }
+
session_message_cb_.Run(session_id,
static_cast<MediaKeys::MessageType>(message_type),
- message.storage());
+ message.storage(), verified_gurl);
}
void MojoCdm::OnSessionClosed(const mojo::String& session_id) {
diff --git a/media/mojo/services/mojo_cdm.h b/media/mojo/services/mojo_cdm.h
index 4fda2ac..4083728 100644
--- a/media/mojo/services/mojo_cdm.h
+++ b/media/mojo/services/mojo_cdm.h
@@ -59,7 +59,8 @@ class MojoCdm : public MediaKeys, public mojo::ContentDecryptionModuleClient {
// mojo::ContentDecryptionModuleClient implementation.
void OnSessionMessage(const mojo::String& session_id,
mojo::CdmMessageType message_type,
- mojo::Array<uint8_t> message) final;
+ mojo::Array<uint8_t> message,
+ const mojo::String& legacy_destination_url) final;
void OnSessionClosed(const mojo::String& session_id) final;
void OnSessionError(const mojo::String& session_id,
mojo::CdmException exception,
diff --git a/media/mojo/services/mojo_cdm_service.cc b/media/mojo/services/mojo_cdm_service.cc
index e53d43e0..17c3919 100644
--- a/media/mojo/services/mojo_cdm_service.cc
+++ b/media/mojo/services/mojo_cdm_service.cc
@@ -108,10 +108,12 @@ void MojoCdmService::GetCdmContext(
void MojoCdmService::OnSessionMessage(const std::string& session_id,
MediaKeys::MessageType message_type,
- const std::vector<uint8_t>& message) {
+ const std::vector<uint8_t>& message,
+ const GURL& legacy_destination_url) {
client()->OnSessionMessage(session_id,
static_cast<mojo::CdmMessageType>(message_type),
- mojo::Array<uint8_t>::From(message));
+ mojo::Array<uint8_t>::From(message),
+ mojo::String::From(legacy_destination_url));
}
void MojoCdmService::OnSessionKeysChange(const std::string& session_id,
diff --git a/media/mojo/services/mojo_cdm_service.h b/media/mojo/services/mojo_cdm_service.h
index bccd8e1..da8f372 100644
--- a/media/mojo/services/mojo_cdm_service.h
+++ b/media/mojo/services/mojo_cdm_service.h
@@ -53,7 +53,8 @@ class MojoCdmService
// Callbacks for firing session events.
void OnSessionMessage(const std::string& session_id,
MediaKeys::MessageType message_type,
- const std::vector<uint8_t>& message);
+ const std::vector<uint8_t>& message,
+ const GURL& legacy_destination_url);
void OnSessionKeysChange(const std::string& session_id,
bool has_additional_usable_key,
CdmKeysInfo keys_info);