Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1486)

Unified Diff: content/browser/media/android/browser_media_player_manager.cc

Issue 308073004: Add PlayerTracker and BrowserCdm interfaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | media/base/android/browser_cdm_factory_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698