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

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

Issue 1110833004: Move audio focus control from media/ to content/ and make it per WebContents. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 68268f7406d215d98953787c36061d5b870c0f8f..c77ead00d628256ff9c02032484d8daab23525c4 100644
--- a/content/browser/media/android/browser_media_player_manager.cc
+++ b/content/browser/media/android/browser_media_player_manager.cc
@@ -10,6 +10,7 @@
#include "content/browser/android/media_players_observer.h"
#include "content/browser/media/android/browser_demuxer_android.h"
#include "content/browser/media/android/media_resource_getter_impl.h"
+#include "content/browser/media/android/media_session.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/web_contents/web_contents_view_android.h"
#include "content/common/media/media_player_messages_android.h"
@@ -44,6 +45,9 @@ namespace content {
const int kMediaPlayerThreshold = 1;
const int kInvalidMediaPlayerId = -1;
+// Minimal duration of a media player in order to be considered as Content type.
+const int kMinimumDurationForContentInSeconds = 5;
+
static BrowserMediaPlayerManager::Factory g_factory = NULL;
static media::MediaUrlInterceptor* media_url_interceptor_ = NULL;
@@ -160,6 +164,7 @@ BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {
for (MediaPlayerAndroid* player : players_)
player->DeleteOnCorrectThread();
+ MediaSession::Get(web_contents())->RemovePlayers(this);
players_.weak_clear();
}
@@ -228,6 +233,8 @@ void BrowserMediaPlayerManager::OnMediaMetadataChanged(
void BrowserMediaPlayerManager::OnPlaybackComplete(int player_id) {
Send(new MediaPlayerMsg_MediaPlaybackCompleted(RoutingID(), player_id));
+ MediaSession::Get(web_contents())->RemovePlayer(this, player_id);
+
if (fullscreen_player_id_ == player_id)
video_view_->OnPlaybackComplete();
}
@@ -341,6 +348,21 @@ void BrowserMediaPlayerManager::RequestFullScreen(int player_id) {
Send(new MediaPlayerMsg_RequestFullscreen(RoutingID(), player_id));
}
+bool BrowserMediaPlayerManager::RequestPlay(int player_id) {
+ MediaPlayerAndroid* player = GetPlayer(player_id);
+ DCHECK(player);
+
+ MediaSession::Type media_session_type =
+ player->GetDuration().InSeconds() > kMinimumDurationForContentInSeconds
+ ? MediaSession::Type::Content : MediaSession::Type::Transient;
+
+ bool succeeded = MediaSession::Get(web_contents())->AddPlayer(
+ this, player_id, media_session_type);
+ if (!succeeded)
+ Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(), player_id));
+ return succeeded;
+}
+
#if defined(VIDEO_HOLE)
void BrowserMediaPlayerManager::AttachExternalVideoSurface(int player_id,
jobject surface) {
@@ -365,6 +387,22 @@ void BrowserMediaPlayerManager::OnFrameInfoUpdated() {
external_video_surface_container_->OnFrameInfoUpdated();
}
+void BrowserMediaPlayerManager::OnSuspend(int player_id) {
+ MediaPlayerAndroid* player = GetPlayer(player_id);
+ DCHECK(player);
+
+ player->Pause(true);
+ Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(), player_id));
+}
+
+void BrowserMediaPlayerManager::OnResume(int player_id) {
+ MediaPlayerAndroid* player = GetPlayer(player_id);
+ DCHECK(player);
+
+ player->Start();
+ Send(new MediaPlayerMsg_DidMediaPlayerPlay(RoutingID(), player_id));
+}
+
void BrowserMediaPlayerManager::OnNotifyExternalSurface(
int player_id, bool is_request, const gfx::RectF& rect) {
if (!web_contents_)
@@ -503,6 +541,8 @@ void BrowserMediaPlayerManager::OnPause(
MediaPlayerAndroid* player = GetPlayer(player_id);
if (player)
player->Pause(is_media_related_action);
+
+ MediaSession::Get(web_contents())->RemovePlayer(this, player_id);
}
void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) {
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | content/browser/media/android/media_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698