| Index: content/browser/media/android/browser_media_player_manager.cc
|
| diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc
|
| index 937ffea83b8bbc534721cef5eff0b30cf553f57c..a4c5e0a68c6c0584e8c9e6d5d541c11065832aac 100644
|
| --- a/content/browser/media/android/browser_media_player_manager.cc
|
| +++ b/content/browser/media/android/browser_media_player_manager.cc
|
| @@ -28,9 +28,11 @@
|
| #include "content/public/common/content_switches.h"
|
| #include "media/base/android/media_player_bridge.h"
|
| #include "media/base/android/media_source_player.h"
|
| -#include "media/base/cdm_factory.h"
|
| +#include "media/base/browser_cdm.h"
|
| +#include "media/base/browser_cdm_factory.h"
|
| #include "media/base/media_switches.h"
|
|
|
| +using media::BrowserCdm;
|
| using media::MediaKeys;
|
| using media::MediaPlayerAndroid;
|
| using media::MediaPlayerBridge;
|
| @@ -317,7 +319,7 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::GetPlayer(int player_id) {
|
| return NULL;
|
| }
|
|
|
| -MediaKeys* BrowserMediaPlayerManager::GetCdm(int cdm_id) {
|
| +BrowserCdm* BrowserMediaPlayerManager::GetCdm(int cdm_id) {
|
| CdmMap::const_iterator iter = cdm_map_.find(cdm_id);
|
| return (iter == cdm_map_.end()) ? NULL : iter->second;
|
| }
|
| @@ -376,11 +378,10 @@ void BrowserMediaPlayerManager::OnSessionClosed(int cdm_id, uint32 session_id) {
|
| Send(new CdmMsg_SessionClosed(RoutingID(), cdm_id, session_id));
|
| }
|
|
|
| -void BrowserMediaPlayerManager::OnSessionError(
|
| - int cdm_id,
|
| - uint32 session_id,
|
| - media::MediaKeys::KeyError error_code,
|
| - uint32 system_code) {
|
| +void BrowserMediaPlayerManager::OnSessionError(int cdm_id,
|
| + uint32 session_id,
|
| + MediaKeys::KeyError error_code,
|
| + uint32 system_code) {
|
| Send(new CdmMsg_SessionError(
|
| RoutingID(), cdm_id, session_id, error_code, system_code));
|
| }
|
| @@ -576,7 +577,7 @@ void BrowserMediaPlayerManager::OnCreateSession(
|
| if (init_data.size() > kMaxInitDataLength) {
|
| LOG(WARNING) << "InitData for ID: " << cdm_id
|
| << " too long: " << init_data.size();
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| @@ -603,10 +604,10 @@ void BrowserMediaPlayerManager::OnCreateSession(
|
| return;
|
| }
|
|
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| if (!cdm) {
|
| DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| @@ -617,7 +618,7 @@ void BrowserMediaPlayerManager::OnCreateSession(
|
| cdm_security_origin_map_.find(cdm_id);
|
| if (iter == cdm_security_origin_map_.end()) {
|
| NOTREACHED();
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| @@ -637,38 +638,29 @@ void BrowserMediaPlayerManager::OnUpdateSession(
|
| int cdm_id,
|
| uint32 session_id,
|
| const std::vector<uint8>& response) {
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| if (!cdm) {
|
| DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| if (response.size() > kMaxSessionResponseLength) {
|
| LOG(WARNING) << "Response for ID " << cdm_id
|
| << " is too long: " << response.size();
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| cdm->UpdateSession(session_id, &response[0], response.size());
|
| -
|
| - CdmToPlayerMap::const_iterator iter = cdm_to_player_map_.find(cdm_id);
|
| - if (iter == cdm_to_player_map_.end())
|
| - return;
|
| -
|
| - int player_id = iter->second;
|
| - MediaPlayerAndroid* player = GetPlayer(player_id);
|
| - if (player)
|
| - player->OnKeyAdded();
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnReleaseSession(int cdm_id,
|
| uint32 session_id) {
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| if (!cdm) {
|
| DLOG(WARNING) << "No CDM for ID " << cdm_id << " found";
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| @@ -676,7 +668,7 @@ void BrowserMediaPlayerManager::OnReleaseSession(int cdm_id,
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnDestroyCdm(int cdm_id) {
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| if (!cdm)
|
| return;
|
|
|
| @@ -711,15 +703,6 @@ void BrowserMediaPlayerManager::RemovePlayer(int player_id) {
|
| break;
|
| }
|
| }
|
| -
|
| - for (CdmToPlayerMap::iterator it = cdm_to_player_map_.begin();
|
| - it != cdm_to_player_map_.end();
|
| - ++it) {
|
| - if (it->second == player_id) {
|
| - cdm_to_player_map_.erase(it);
|
| - break;
|
| - }
|
| - }
|
| }
|
|
|
| scoped_ptr<media::MediaPlayerAndroid> BrowserMediaPlayerManager::SwapPlayer(
|
| @@ -744,18 +727,14 @@ void BrowserMediaPlayerManager::AddCdm(int cdm_id,
|
| base::WeakPtr<BrowserMediaPlayerManager> weak_this =
|
| weak_ptr_factory_.GetWeakPtr();
|
|
|
| - scoped_ptr<MediaKeys> cdm(media::CreateBrowserCdm(
|
| + int id = cdm_id;
|
| + scoped_ptr<BrowserCdm> cdm(media::CreateBrowserCdm(
|
| key_system,
|
| - base::Bind(
|
| - &BrowserMediaPlayerManager::OnSessionCreated, weak_this, cdm_id),
|
| - base::Bind(
|
| - &BrowserMediaPlayerManager::OnSessionMessage, weak_this, cdm_id),
|
| - base::Bind(
|
| - &BrowserMediaPlayerManager::OnSessionReady, weak_this, cdm_id),
|
| - base::Bind(
|
| - &BrowserMediaPlayerManager::OnSessionClosed, weak_this, cdm_id),
|
| - base::Bind(
|
| - &BrowserMediaPlayerManager::OnSessionError, weak_this, cdm_id)));
|
| + base::Bind(&BrowserMediaPlayerManager::OnSessionCreated, weak_this, id),
|
| + base::Bind(&BrowserMediaPlayerManager::OnSessionMessage, weak_this, id),
|
| + base::Bind(&BrowserMediaPlayerManager::OnSessionReady, weak_this, id),
|
| + base::Bind(&BrowserMediaPlayerManager::OnSessionClosed, weak_this, id),
|
| + base::Bind(&BrowserMediaPlayerManager::OnSessionError, weak_this, id)));
|
|
|
| if (!cdm) {
|
| // This failure will be discovered and reported by OnCreateSession()
|
| @@ -778,29 +757,21 @@ void BrowserMediaPlayerManager::RemoveCdm(int cdm_id) {
|
| delete iter->second;
|
| cdm_map_.erase(iter);
|
| }
|
| - cdm_to_player_map_.erase(cdm_id);
|
| cdm_security_origin_map_.erase(cdm_id);
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSetCdm(int player_id, int cdm_id) {
|
| MediaPlayerAndroid* player = GetPlayer(player_id);
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| + // Currently we do not support detaching CDM from a player.
|
| if (!cdm || !player) {
|
| - DVLOG(1) << "Cannot set CDM on the specified player.";
|
| + NOTREACHED() << "Cannot set CDM on the specified player.";
|
| return;
|
| }
|
|
|
| // TODO(qinmin): add the logic to decide whether we should create the
|
| // fullscreen surface for EME lv1.
|
| player->SetCdm(cdm);
|
| - // Do now support setting one CDM on multiple players.
|
| -
|
| - if (ContainsKey(cdm_to_player_map_, cdm_id)) {
|
| - DVLOG(1) << "CDM is already set on another player.";
|
| - return;
|
| - }
|
| -
|
| - cdm_to_player_map_[cdm_id] = player_id;
|
| }
|
|
|
| int BrowserMediaPlayerManager::RoutingID() {
|
| @@ -818,14 +789,14 @@ void BrowserMediaPlayerManager::CreateSessionIfPermitted(
|
| const std::vector<uint8>& init_data,
|
| bool permitted) {
|
| if (!permitted) {
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
| - MediaKeys* cdm = GetCdm(cdm_id);
|
| + BrowserCdm* cdm = GetCdm(cdm_id);
|
| if (!cdm) {
|
| DLOG(WARNING) << "No CDM for ID: " << cdm_id << " found";
|
| - OnSessionError(cdm_id, session_id, media::MediaKeys::kUnknownError, 0);
|
| + OnSessionError(cdm_id, session_id, MediaKeys::kUnknownError, 0);
|
| return;
|
| }
|
|
|
|
|