| Index: chromecast/media/cdm/browser_cdm_cast.cc
|
| diff --git a/chromecast/media/cdm/browser_cdm_cast.cc b/chromecast/media/cdm/browser_cdm_cast.cc
|
| index bde43a47f24569980853f43bf2e0ea5ac82b8dea..c9fbee746bff4bf5d0241e67f8399f45717a7312 100644
|
| --- a/chromecast/media/cdm/browser_cdm_cast.cc
|
| +++ b/chromecast/media/cdm/browser_cdm_cast.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chromecast/media/cdm/browser_cdm_cast.h"
|
|
|
| +#include "media/base/cdm_key_information.h"
|
| +
|
| namespace chromecast {
|
| namespace media {
|
|
|
| @@ -14,6 +16,19 @@ BrowserCdmCast::~BrowserCdmCast() {
|
| player_tracker_.NotifyCdmUnset();
|
| }
|
|
|
| +void BrowserCdmCast::SetCallbacks(
|
| + const ::media::SessionMessageCB& session_message_cb,
|
| + const ::media::SessionClosedCB& session_closed_cb,
|
| + const ::media::SessionErrorCB& session_error_cb,
|
| + const ::media::SessionKeysChangeCB& session_keys_change_cb,
|
| + const ::media::SessionExpirationUpdateCB& session_expiration_update_cb) {
|
| + session_message_cb_ = session_message_cb;
|
| + session_closed_cb_ = session_closed_cb;
|
| + session_error_cb_ = session_error_cb;
|
| + session_keys_change_cb_ = session_keys_change_cb;
|
| + session_expiration_update_cb_ = session_expiration_update_cb;
|
| +}
|
| +
|
| int BrowserCdmCast::RegisterPlayer(const base::Closure& new_key_cb,
|
| const base::Closure& cdm_unset_cb) {
|
| return player_tracker_.RegisterPlayer(new_key_cb, cdm_unset_cb);
|
| @@ -23,7 +38,36 @@ void BrowserCdmCast::UnregisterPlayer(int registration_id) {
|
| player_tracker_.UnregisterPlayer(registration_id);
|
| }
|
|
|
| -void BrowserCdmCast::NotifyKeyAdded() {
|
| +void BrowserCdmCast::OnSessionMessage(const std::string& web_session_id,
|
| + const std::vector<uint8>& message,
|
| + const GURL& destination_url) {
|
| + // Note: Message type is not supported in Chromecast. Do our best guess here.
|
| + ::media::MediaKeys::MessageType message_type =
|
| + destination_url.is_empty() ? ::media::MediaKeys::LICENSE_REQUEST
|
| + : ::media::MediaKeys::LICENSE_RENEWAL;
|
| + session_message_cb_.Run(web_session_id,
|
| + message_type,
|
| + message,
|
| + destination_url);
|
| +}
|
| +
|
| +void BrowserCdmCast::OnSessionClosed(const std::string& web_session_id) {
|
| + session_closed_cb_.Run(web_session_id);
|
| +}
|
| +
|
| +void BrowserCdmCast::OnSessionKeysChange(
|
| + const std::string& web_session_id,
|
| + const ::media::KeyIdAndKeyPairs& keys) {
|
| + ::media::CdmKeysInfo cdm_keys_info;
|
| + for (const std::pair<std::string, std::string>& key : keys) {
|
| + scoped_ptr< ::media::CdmKeyInformation> cdm_key_information(
|
| + new ::media::CdmKeyInformation());
|
| + cdm_key_information->key_id.assign(key.first.begin(), key.first.end());
|
| + cdm_keys_info.push_back(cdm_key_information.release());
|
| + }
|
| + session_keys_change_cb_.Run(web_session_id, true, cdm_keys_info.Pass());
|
| +
|
| + // Notify listeners of a new key.
|
| player_tracker_.NotifyNewKey();
|
| }
|
|
|
|
|