diff options
author | zqzhang <zqzhang@chromium.org> | 2016-01-22 04:03:37 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-22 12:04:48 +0000 |
commit | 3a7894afc3fde501d514b66c0873c27ad2f6673f (patch) | |
tree | 94a792577366eb7667cf753bd5154745555b2514 /content/browser/media | |
parent | 16745d37d74f99fef03e089258a7e57c12cc2c63 (diff) | |
download | chromium_src-3a7894afc3fde501d514b66c0873c27ad2f6673f.zip chromium_src-3a7894afc3fde501d514b66c0873c27ad2f6673f.tar.gz chromium_src-3a7894afc3fde501d514b66c0873c27ad2f6673f.tar.bz2 |
Remote player pause should not notify MediaSession
This patch fixes an issue that in Cast mode, when pausing a casted media
from the browser, it will notify the MediaSession that a player has been
paused. This should not happen since the MediaSession should not take
care of remote players.
BUG=577819
Review URL: https://codereview.chromium.org/1591603003
Cr-Commit-Position: refs/heads/master@{#370949}
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; |