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

Side by Side Diff: chrome/browser/media/android/remote/remote_media_player_manager.cc

Issue 2767893002: Remove ScopedVector from chrome/browser/. (Closed)
Patch Set: Address comments from zea@ Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/media/android/remote/remote_media_player_manager.h" 5 #include "chrome/browser/media/android/remote/remote_media_player_manager.h"
6 6
7 #include "base/memory/ptr_util.h"
7 #include "chrome/browser/android/tab_android.h" 8 #include "chrome/browser/android/tab_android.h"
8 #include "chrome/common/chrome_content_client.h" 9 #include "chrome/common/chrome_content_client.h"
9 #include "content/common/media/media_player_messages_android.h" 10 #include "content/common/media/media_player_messages_android.h"
10 #include "third_party/WebKit/public/platform/modules/remoteplayback/WebRemotePla ybackAvailability.h" 11 #include "third_party/WebKit/public/platform/modules/remoteplayback/WebRemotePla ybackAvailability.h"
11 #include "third_party/skia/include/core/SkBitmap.h" 12 #include "third_party/skia/include/core/SkBitmap.h"
12 #include "ui/gfx/android/java_bitmap.h" 13 #include "ui/gfx/android/java_bitmap.h"
13 14
14 using media::MediaPlayerAndroid; 15 using media::MediaPlayerAndroid;
15 16
16 static const int MAX_POSTER_BITMAP_SIZE = 1024 * 1024; 17 static const int MAX_POSTER_BITMAP_SIZE = 1024 * 1024;
17 18
18 namespace remote_media { 19 namespace remote_media {
19 20
20 RemoteMediaPlayerManager::RemoteMediaPlayerManager( 21 RemoteMediaPlayerManager::RemoteMediaPlayerManager(
21 content::RenderFrameHost* render_frame_host) 22 content::RenderFrameHost* render_frame_host)
22 : BrowserMediaPlayerManager(render_frame_host), 23 : BrowserMediaPlayerManager(render_frame_host),
23 weak_ptr_factory_(this) { 24 weak_ptr_factory_(this) {
24 } 25 }
25 26
26 RemoteMediaPlayerManager::~RemoteMediaPlayerManager() { 27 RemoteMediaPlayerManager::~RemoteMediaPlayerManager() {
27 for (MediaPlayerAndroid* player : alternative_players_) 28 for (auto& player : alternative_players_)
28 player->DeleteOnCorrectThread(); 29 player.release()->DeleteOnCorrectThread();
29 30
30 alternative_players_.weak_clear(); 31 alternative_players_.clear();
31 } 32 }
32 33
33 void RemoteMediaPlayerManager::OnStart(int player_id) { 34 void RemoteMediaPlayerManager::OnStart(int player_id) {
34 RemoteMediaPlayerBridge* remote_player = GetRemotePlayer(player_id); 35 RemoteMediaPlayerBridge* remote_player = GetRemotePlayer(player_id);
35 if (remote_player && IsPlayingRemotely(player_id)) 36 if (remote_player && IsPlayingRemotely(player_id))
36 remote_player->Start(); 37 remote_player->Start();
37 38
38 BrowserMediaPlayerManager::OnStart(player_id); 39 BrowserMediaPlayerManager::OnStart(player_id);
39 } 40 }
40 41
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 const GURL& image_url, 136 const GURL& image_url,
136 const std::vector<SkBitmap>& bitmaps, 137 const std::vector<SkBitmap>& bitmaps,
137 const std::vector<gfx::Size>& original_bitmap_sizes) { 138 const std::vector<gfx::Size>& original_bitmap_sizes) {
138 RemoteMediaPlayerBridge* player = GetRemotePlayer(player_id); 139 RemoteMediaPlayerBridge* player = GetRemotePlayer(player_id);
139 if (player) 140 if (player)
140 player->SetPosterBitmap(bitmaps); 141 player->SetPosterBitmap(bitmaps);
141 } 142 }
142 143
143 RemoteMediaPlayerBridge* RemoteMediaPlayerManager::CreateRemoteMediaPlayer( 144 RemoteMediaPlayerBridge* RemoteMediaPlayerManager::CreateRemoteMediaPlayer(
144 int player_id) { 145 int player_id) {
145 RemoteMediaPlayerBridge* player = 146 alternative_players_.push_back(base::MakeUnique<RemoteMediaPlayerBridge>(
146 new RemoteMediaPlayerBridge(player_id, GetUserAgent(), this); 147 player_id, GetUserAgent(), this));
147 alternative_players_.push_back(player); 148 RemoteMediaPlayerBridge* remote =
148 player->Initialize(); 149 static_cast<RemoteMediaPlayerBridge*>(alternative_players_.back().get());
149 return player; 150 remote->Initialize();
151 return remote;
150 } 152 }
151 153
152 bool RemoteMediaPlayerManager::SwapCurrentPlayer(int player_id) { 154 bool RemoteMediaPlayerManager::SwapCurrentPlayer(int player_id) {
153 // Find the alternative player to swap the current one with. 155 // Find the alternative player to swap the current one with.
154 auto it = GetAlternativePlayer(player_id); 156 auto it = GetAlternativePlayer(player_id);
155 if (it == alternative_players_.end()) 157 if (it == alternative_players_.end())
156 return false; 158 return false;
157 159
158 MediaPlayerAndroid* new_player = *it; 160 // Release ownership of the alternative player.
159 std::unique_ptr<MediaPlayerAndroid> old_player = 161 std::unique_ptr<MediaPlayerAndroid> old_player =
160 SwapPlayer(player_id, new_player); 162 SwapPlayer(player_id, std::move(*it));
163 alternative_players_.erase(it);
161 if (!old_player) { 164 if (!old_player) {
162 // There's no player to swap with, destroy the alternative player and exit.
163 alternative_players_.erase(it);
164 return false; 165 return false;
165 } 166 }
166 167
167 alternative_players_.weak_erase(it); 168 alternative_players_.push_back(std::move(old_player));
168 alternative_players_.push_back(old_player.release());
169 return true; 169 return true;
170 } 170 }
171 171
172 void RemoteMediaPlayerManager::SwitchToRemotePlayer( 172 void RemoteMediaPlayerManager::SwitchToRemotePlayer(
173 int player_id, 173 int player_id,
174 const std::string& casting_message) { 174 const std::string& casting_message) {
175 DCHECK(!IsPlayingRemotely(player_id)); 175 DCHECK(!IsPlayingRemotely(player_id));
176 if (!SwapCurrentPlayer(player_id)) 176 if (!SwapCurrentPlayer(player_id))
177 return; 177 return;
178 players_playing_remotely_.insert(player_id); 178 players_playing_remotely_.insert(player_id);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 } 241 }
242 242
243 void RemoteMediaPlayerManager::OnPlaying(int player_id) { 243 void RemoteMediaPlayerManager::OnPlaying(int player_id) {
244 Send(new MediaPlayerMsg_DidMediaPlayerPlay(RoutingID(),player_id)); 244 Send(new MediaPlayerMsg_DidMediaPlayerPlay(RoutingID(),player_id));
245 } 245 }
246 246
247 void RemoteMediaPlayerManager::OnPaused(int player_id) { 247 void RemoteMediaPlayerManager::OnPaused(int player_id) {
248 Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(),player_id)); 248 Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(),player_id));
249 } 249 }
250 250
251 ScopedVector<MediaPlayerAndroid>::iterator 251 std::vector<std::unique_ptr<MediaPlayerAndroid>>::iterator
252 RemoteMediaPlayerManager::GetAlternativePlayer(int player_id) { 252 RemoteMediaPlayerManager::GetAlternativePlayer(int player_id) {
253 for (auto it = alternative_players_.begin(); it != alternative_players_.end(); 253 for (auto it = alternative_players_.begin(); it != alternative_players_.end();
254 ++it) { 254 ++it) {
255 if ((*it)->player_id() == player_id) { 255 if ((*it)->player_id() == player_id) {
256 return it; 256 return it;
257 } 257 }
258 } 258 }
259 return alternative_players_.end(); 259 return alternative_players_.end();
260 } 260 }
261 261
262 RemoteMediaPlayerBridge* RemoteMediaPlayerManager::GetRemotePlayer( 262 RemoteMediaPlayerBridge* RemoteMediaPlayerManager::GetRemotePlayer(
263 int player_id) { 263 int player_id) {
264 if (IsPlayingRemotely(player_id)) 264 if (IsPlayingRemotely(player_id))
265 return static_cast<RemoteMediaPlayerBridge*>(GetPlayer(player_id)); 265 return static_cast<RemoteMediaPlayerBridge*>(GetPlayer(player_id));
266 auto it = GetAlternativePlayer(player_id); 266 auto it = GetAlternativePlayer(player_id);
267 if (it == alternative_players_.end()) 267 if (it == alternative_players_.end())
268 return nullptr; 268 return nullptr;
269 return static_cast<RemoteMediaPlayerBridge*>(*it); 269 return static_cast<RemoteMediaPlayerBridge*>(it->get());
270 } 270 }
271 271
272 MediaPlayerAndroid* RemoteMediaPlayerManager::GetLocalPlayer(int player_id) { 272 MediaPlayerAndroid* RemoteMediaPlayerManager::GetLocalPlayer(int player_id) {
273 if (!IsPlayingRemotely(player_id)) 273 if (!IsPlayingRemotely(player_id))
274 return static_cast<RemoteMediaPlayerBridge*>(GetPlayer(player_id)); 274 return static_cast<RemoteMediaPlayerBridge*>(GetPlayer(player_id));
275 auto it = GetAlternativePlayer(player_id); 275 auto it = GetAlternativePlayer(player_id);
276 if (it == alternative_players_.end()) 276 if (it == alternative_players_.end())
277 return nullptr; 277 return nullptr;
278 return *it; 278 return it->get();
279 } 279 }
280 280
281 void RemoteMediaPlayerManager::OnMediaMetadataChanged(int player_id, 281 void RemoteMediaPlayerManager::OnMediaMetadataChanged(int player_id,
282 base::TimeDelta duration, 282 base::TimeDelta duration,
283 int width, 283 int width,
284 int height, 284 int height,
285 bool success) { 285 bool success) {
286 if (IsPlayingRemotely(player_id)) { 286 if (IsPlayingRemotely(player_id)) {
287 MediaPlayerAndroid* local_player = GetLocalPlayer(player_id); 287 MediaPlayerAndroid* local_player = GetLocalPlayer(player_id);
288 Send(new MediaPlayerMsg_MediaMetadataChanged( 288 Send(new MediaPlayerMsg_MediaMetadataChanged(
289 RoutingID(), player_id, duration, local_player->GetVideoWidth(), 289 RoutingID(), player_id, duration, local_player->GetVideoWidth(),
290 local_player->GetVideoHeight(), success)); 290 local_player->GetVideoHeight(), success));
291 } else { 291 } else {
292 BrowserMediaPlayerManager::OnMediaMetadataChanged(player_id, duration, 292 BrowserMediaPlayerManager::OnMediaMetadataChanged(player_id, duration,
293 width, height, success); 293 width, height, success);
294 } 294 }
295 } 295 }
296 } // namespace remote_media 296 } // namespace remote_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698