diff options
Diffstat (limited to 'content/browser/media')
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; |