summaryrefslogtreecommitdiffstats
path: root/content/browser/media
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/media')
-rw-r--r--content/browser/media/android/browser_media_player_manager.cc6
-rw-r--r--content/browser/media/android/browser_media_player_manager.h2
-rw-r--r--content/browser/media/android/media_session.cc5
3 files changed, 11 insertions, 2 deletions
diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc
index 67517d8..8d60c6a 100644
--- a/content/browser/media/android/browser_media_player_manager.cc
+++ b/content/browser/media/android/browser_media_player_manager.cc
@@ -622,7 +622,7 @@ void BrowserMediaPlayerManager::OnPause(
if (player)
player->Pause(is_media_related_action);
- if (is_media_related_action)
+ if (is_media_related_action && !IsPlayingRemotely(player_id))
MediaSession::Get(web_contents())->OnPlayerPaused(this, player_id);
}
@@ -656,6 +656,10 @@ void BrowserMediaPlayerManager::OnRequestRemotePlaybackControl(
// Does nothing if we don't have a remote player
}
+bool BrowserMediaPlayerManager::IsPlayingRemotely(int player_id) {
+ return false;
+}
+
void BrowserMediaPlayerManager::AddPlayer(MediaPlayerAndroid* player) {
DCHECK(!GetPlayer(player->player_id()));
players_.push_back(player);
diff --git a/content/browser/media/android/browser_media_player_manager.h b/content/browser/media/android/browser_media_player_manager.h
index c304e86..4530069 100644
--- a/content/browser/media/android/browser_media_player_manager.h
+++ b/content/browser/media/android/browser_media_player_manager.h
@@ -131,7 +131,9 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
virtual void OnDestroyPlayer(int player_id);
virtual void OnRequestRemotePlayback(int player_id);
virtual void OnRequestRemotePlaybackControl(int player_id);
+ virtual bool IsPlayingRemotely(int player_id);
virtual void ReleaseFullscreenPlayer(media::MediaPlayerAndroid* player);
+
#if defined(VIDEO_HOLE)
void OnNotifyExternalSurface(
int player_id, bool is_request, const gfx::RectF& rect);
diff --git a/content/browser/media/android/media_session.cc b/content/browser/media/android/media_session.cc
index ed5d71f..e90daf4 100644
--- a/content/browser/media/android/media_session.cc
+++ b/content/browser/media/android/media_session.cc
@@ -139,7 +139,10 @@ void MediaSession::OnResume(JNIEnv* env, const JavaParamRef<jobject>& obj) {
void MediaSession::OnPlayerPaused(MediaSessionObserver* observer,
int player_id) {
// If a playback is completed, BrowserMediaPlayerManager will call
- // OnPlayerPaused() after RemovePlayer(). This is a workaround for this.
+ // OnPlayerPaused() after RemovePlayer(). This is a workaround.
+ // Also, this method may be called when a player that is not added
+ // to this session (e.g. a silent video) is paused. MediaSession
+ // should ignore the paused player for this case.
if (!players_.count(PlayerIdentifier(observer, player_id)))
return;