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

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

Issue 1308983005: NOT FOR LANDING Implement WebMediaSession (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add forward declaration Created 4 years, 11 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 c512f3163ecf2392fedbf0d263e91cd153389f00..851fd6f2c9de5575287cc7ee21f260c212bcf42a 100644
--- a/content/browser/media/android/browser_media_player_manager.cc
+++ b/content/browser/media/android/browser_media_player_manager.cc
@@ -9,6 +9,7 @@
#include "base/android/scoped_java_ref.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/media/android/browser_demuxer_android.h"
+#include "content/browser/media/android/browser_media_session_manager.h"
#include "content/browser/media/android/media_resource_getter_impl.h"
#include "content/browser/media/android/media_session.h"
#include "content/browser/media/android/media_throttler.h"
@@ -146,16 +147,13 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
case MEDIA_PLAYER_TYPE_URL: {
const std::string user_agent = GetContentClient()->GetUserAgent();
MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge(
- media_player_params.player_id,
- media_player_params.url,
- media_player_params.first_party_for_cookies,
- user_agent,
- hide_url_log,
+ media_player_params.player_id, media_player_params.url,
+ media_player_params.first_party_for_cookies, user_agent, hide_url_log,
this,
base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
weak_ptr_factory_.GetWeakPtr()),
- media_player_params.frame_url,
- media_player_params.allow_credentials);
+ media_player_params.frame_url, media_player_params.allow_credentials,
+ media_player_params.session_id);
bool should_block = false;
bool extract_metadata =
// Initialize the player will cause MediaMetadataExtractor to decode
@@ -188,20 +186,18 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
case MEDIA_PLAYER_TYPE_MEDIA_SOURCE: {
if (media::UseMediaThreadForMediaPlayback()) {
return new MediaCodecPlayer(
- media_player_params.player_id,
- weak_ptr_factory_.GetWeakPtr(),
+ media_player_params.player_id, weak_ptr_factory_.GetWeakPtr(),
base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
weak_ptr_factory_.GetWeakPtr()),
demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
- media_player_params.frame_url);
+ media_player_params.frame_url, media_player_params.session_id);
} else {
return new MediaSourcePlayer(
- media_player_params.player_id,
- this,
+ media_player_params.player_id, this,
base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
weak_ptr_factory_.GetWeakPtr()),
demuxer->CreateDemuxer(media_player_params.demuxer_client_id),
- media_player_params.frame_url);
+ media_player_params.frame_url, media_player_params.session_id);
}
}
}
@@ -228,7 +224,7 @@ BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {
for (MediaPlayerAndroid* player : players_)
player->DeleteOnCorrectThread();
- MediaSession::Get(web_contents())->RemovePlayers(this);
+ GetMediaSessionManager()->RemovePlayers(this);
players_.weak_clear();
}
@@ -304,7 +300,7 @@ void BrowserMediaPlayerManager::OnMediaMetadataChanged(
void BrowserMediaPlayerManager::OnPlaybackComplete(int player_id) {
Send(new MediaPlayerMsg_MediaPlaybackCompleted(RoutingID(), player_id));
- MediaSession::Get(web_contents())->RemovePlayer(this, player_id);
+ GetMediaSessionManager()->RemovePlayer(this, player_id);
if (fullscreen_player_id_ == player_id)
video_view_->OnPlaybackComplete();
@@ -413,8 +409,14 @@ bool BrowserMediaPlayerManager::RequestPlay(int player_id,
? MediaSession::Type::Content
: MediaSession::Type::Transient;
- bool succeeded = MediaSession::Get(web_contents())->AddPlayer(
- this, player_id, media_session_type);
+ MediaPlayerAndroid* player = GetPlayer(player_id);
+ DCHECK(player);
+
+ MediaSession* media_session =
+ GetMediaSessionManager()->GetSession(player->session_id());
+ // Implicit activation of media session unless already activated
+ bool succeeded =
+ media_session->AddPlayer(this, player_id, media_session_type);
if (!succeeded)
Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(), player_id));
return succeeded;
@@ -603,7 +605,7 @@ void BrowserMediaPlayerManager::OnPause(
player->Pause(is_media_related_action);
if (is_media_related_action)
- MediaSession::Get(web_contents())->OnPlayerPaused(this, player_id);
+ GetMediaSessionManager()->OnPlayerPaused(this, player_id);
}
void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) {
@@ -617,7 +619,7 @@ void BrowserMediaPlayerManager::OnSetPoster(int player_id, const GURL& url) {
}
void BrowserMediaPlayerManager::OnSuspendAndReleaseResources(int player_id) {
- MediaSession::Get(web_contents())->RemovePlayer(this, player_id);
+ GetMediaSessionManager()->RemovePlayer(this, player_id);
ReleaseResources(player_id);
}
@@ -650,7 +652,7 @@ void BrowserMediaPlayerManager::DestroyPlayer(int player_id) {
#endif
(*it)->DeleteOnCorrectThread();
players_.weak_erase(it);
- MediaSession::Get(web_contents())->RemovePlayer(this, player_id);
+ GetMediaSessionManager()->RemovePlayer(this, player_id);
break;
}
}
@@ -769,4 +771,10 @@ void BrowserMediaPlayerManager::StartInternal(int player_id) {
}
}
+BrowserMediaSessionManager*
+BrowserMediaPlayerManager::GetMediaSessionManager() {
+ return MediaWebContentsObserverAndroid::FromWebContents(web_contents())
+ ->GetMediaSessionManager(render_frame_host_);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698