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

Unified Diff: chrome/browser/media/android/remote/remote_media_player_manager.cc

Issue 1895873005: [Android,VideoFling] Never add null players to alternative ones (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
Patch Set: Created 4 years, 8 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
« no previous file with comments | « chrome/browser/media/android/remote/remote_media_player_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/media/android/remote/remote_media_player_manager.cc
diff --git a/chrome/browser/media/android/remote/remote_media_player_manager.cc b/chrome/browser/media/android/remote/remote_media_player_manager.cc
index 90b70ea60454f890deffdc2cdd9d74a486e4b345..f6e15c596a24e3b9d04027bde4807a66bdde6743 100644
--- a/chrome/browser/media/android/remote/remote_media_player_manager.cc
+++ b/chrome/browser/media/android/remote/remote_media_player_manager.cc
@@ -142,23 +142,32 @@ RemoteMediaPlayerBridge* RemoteMediaPlayerManager::CreateRemoteMediaPlayer(
return player;
}
-void RemoteMediaPlayerManager::SwapCurrentPlayer(int player_id) {
- // Find the remote player
+bool RemoteMediaPlayerManager::SwapCurrentPlayer(int player_id) {
+ // Find the alternative player to swap the current one with.
auto it = GetAlternativePlayer(player_id);
if (it == alternative_players_.end())
- return;
+ return false;
+
MediaPlayerAndroid* new_player = *it;
std::unique_ptr<MediaPlayerAndroid> old_player =
SwapPlayer(player_id, new_player);
+ if (!old_player) {
+ // There's no player to swap with, destroy the alternative player and exit.
+ alternative_players_.erase(it);
+ return false;
+ }
+
alternative_players_.weak_erase(it);
alternative_players_.push_back(old_player.release());
+ return true;
}
void RemoteMediaPlayerManager::SwitchToRemotePlayer(
int player_id,
const std::string& casting_message) {
DCHECK(!IsPlayingRemotely(player_id));
- SwapCurrentPlayer(player_id);
+ if (!SwapCurrentPlayer(player_id))
+ return;
players_playing_remotely_.insert(player_id);
Send(new MediaPlayerMsg_DidMediaPlayerPlay(RoutingID(), player_id));
Send(new MediaPlayerMsg_ConnectedToRemoteDevice(RoutingID(), player_id,
« no previous file with comments | « chrome/browser/media/android/remote/remote_media_player_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698