Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "content/renderer/media/android/renderer_media_player_manager.h" | 5 #include "content/renderer/media/android/renderer_media_player_manager.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "content/common/media/media_player_messages_android.h" | 9 #include "content/common/media/media_player_messages_android.h" |
| 10 #include "content/renderer/media/android/proxy_media_keys.h" | 10 #include "content/renderer/media/android/proxy_media_keys.h" |
| 11 #include "content/renderer/media/android/renderer_media_player_manager.h" | 11 #include "content/renderer/media/android/renderer_media_player_manager.h" |
| 12 #include "content/renderer/media/android/webmediaplayer_android.h" | 12 #include "content/renderer/media/android/webmediaplayer_android.h" |
| 13 #include "ui/gfx/rect_f.h" | 13 #include "ui/gfx/rect_f.h" |
| 14 | 14 |
| 15 namespace content { | 15 namespace content { |
| 16 | 16 |
| 17 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) | 17 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) |
| 18 : RenderViewObserver(render_view), | 18 : RenderViewObserver(render_view), |
| 19 next_media_player_id_(0), | 19 next_media_player_id_(0), |
| 20 fullscreen_player_id_(-1), | |
| 21 paused_fullscreen_player_id_(-1), | |
| 20 fullscreen_frame_(NULL) {} | 22 fullscreen_frame_(NULL) {} |
| 21 | 23 |
| 22 RendererMediaPlayerManager::~RendererMediaPlayerManager() { | 24 RendererMediaPlayerManager::~RendererMediaPlayerManager() { |
| 23 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 25 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
| 24 for (player_it = media_players_.begin(); | 26 for (player_it = media_players_.begin(); |
| 25 player_it != media_players_.end(); ++player_it) { | 27 player_it != media_players_.end(); ++player_it) { |
| 26 WebMediaPlayerAndroid* player = player_it->second; | 28 WebMediaPlayerAndroid* player = player_it->second; |
| 27 player->Detach(); | 29 player->Detach(); |
| 28 } | 30 } |
| 29 | 31 |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 181 } | 183 } |
| 182 | 184 |
| 183 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { | 185 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { |
| 184 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 186 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 185 if (player) | 187 if (player) |
| 186 player->OnDisconnectedFromRemoteDevice(); | 188 player->OnDisconnectedFromRemoteDevice(); |
| 187 } | 189 } |
| 188 | 190 |
| 189 void RendererMediaPlayerManager::OnDidEnterFullscreen(int player_id) { | 191 void RendererMediaPlayerManager::OnDidEnterFullscreen(int player_id) { |
| 190 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 192 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 191 if (player) | 193 if (player) { |
| 194 fullscreen_player_id_ = player_id; | |
| 192 player->OnDidEnterFullscreen(); | 195 player->OnDidEnterFullscreen(); |
| 196 } | |
| 193 } | 197 } |
| 194 | 198 |
| 195 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { | 199 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { |
| 196 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 200 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 197 if (player) | 201 if (player) { |
| 202 fullscreen_player_id_ = -1; | |
| 198 player->OnDidExitFullscreen(); | 203 player->OnDidExitFullscreen(); |
| 204 } | |
| 199 } | 205 } |
| 200 | 206 |
| 201 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { | 207 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { |
| 202 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 208 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 203 if (player) | 209 if (player) |
| 204 player->OnMediaPlayerPlay(); | 210 player->OnMediaPlayerPlay(); |
| 205 } | 211 } |
| 206 | 212 |
| 207 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { | 213 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { |
| 208 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 214 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 209 if (player) | 215 if (player) |
| 210 player->OnMediaPlayerPause(); | 216 player->OnMediaPlayerPause(); |
| 211 } | 217 } |
| 212 | 218 |
| 213 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { | 219 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { |
| 214 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 220 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 215 if (player) | 221 if (player) |
| 216 player->OnRequestFullscreen(); | 222 player->OnRequestFullscreen(); |
| 217 } | 223 } |
| 218 | 224 |
| 219 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { | 225 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { |
| 220 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); | 226 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); |
| 221 } | 227 } |
| 222 | 228 |
| 223 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { | 229 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { |
| 230 DCHECK(player_id == fullscreen_player_id_); | |
| 224 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); | 231 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); |
| 225 } | 232 } |
| 226 | 233 |
| 227 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, | 234 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, |
| 228 ProxyMediaKeys* media_keys, | 235 ProxyMediaKeys* media_keys, |
| 229 const std::vector<uint8>& uuid, | 236 const std::vector<uint8>& uuid, |
| 230 const GURL& frame_url) { | 237 const GURL& frame_url) { |
| 231 RegisterMediaKeys(media_keys_id, media_keys); | 238 RegisterMediaKeys(media_keys_id, media_keys); |
| 232 Send(new MediaKeysHostMsg_InitializeCDM( | 239 Send(new MediaKeysHostMsg_InitializeCDM( |
| 233 routing_id(), media_keys_id, uuid, frame_url)); | 240 routing_id(), media_keys_id, uuid, frame_url)); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 316 // |media_keys_id|. For now |media_keys_id| is the same as player_id | 323 // |media_keys_id|. For now |media_keys_id| is the same as player_id |
| 317 // used in other methods. | 324 // used in other methods. |
| 318 DCHECK(media_players_.find(media_keys_id) != media_players_.end()); | 325 DCHECK(media_players_.find(media_keys_id) != media_players_.end()); |
| 319 | 326 |
| 320 // Only allowed to register once. | 327 // Only allowed to register once. |
| 321 DCHECK(media_keys_.find(media_keys_id) == media_keys_.end()); | 328 DCHECK(media_keys_.find(media_keys_id) == media_keys_.end()); |
| 322 | 329 |
| 323 media_keys_[media_keys_id] = media_keys; | 330 media_keys_[media_keys_id] = media_keys; |
| 324 } | 331 } |
| 325 | 332 |
| 326 void RendererMediaPlayerManager::ReleaseVideoResources() { | 333 void RendererMediaPlayerManager::PauseVideo() { |
|
qinmin
2013/12/05 23:02:34
I don't think this is right. This function is not
kbalazs
2013/12/05 23:36:22
I think you misread it, there is no early return f
qinmin
2013/12/06 00:10:13
ah...sorry, i thought you were removing the origin
kbalazs
2013/12/06 19:15:03
Done, I moved the new code into SuspendFullscreenV
| |
| 334 if (fullscreen_player_id_ != -1) { | |
| 335 ExitFullscreen(fullscreen_player_id_); | |
| 336 paused_fullscreen_player_id_ = fullscreen_player_id_; | |
| 337 } | |
| 338 | |
| 327 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 339 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
| 328 for (player_it = media_players_.begin(); | 340 for (player_it = media_players_.begin(); |
| 329 player_it != media_players_.end(); ++player_it) { | 341 player_it != media_players_.end(); ++player_it) { |
| 330 WebMediaPlayerAndroid* player = player_it->second; | 342 WebMediaPlayerAndroid* player = player_it->second; |
| 331 | 343 |
| 332 // Do not release if an audio track is still playing | 344 // Do not release if an audio track is still playing |
| 333 if (player && (player->paused() || player->hasVideo())) | 345 if (player && (player->paused() || player->hasVideo())) |
| 334 player->ReleaseMediaResources(); | 346 player->ReleaseMediaResources(); |
| 335 } | 347 } |
| 336 } | 348 } |
| 337 | 349 |
| 350 void RendererMediaPlayerManager::ResumeVideo() { | |
| 351 if (paused_fullscreen_player_id_ != -1) { | |
| 352 EnterFullscreen(paused_fullscreen_player_id_); | |
| 353 paused_fullscreen_player_id_ = -1; | |
| 354 } | |
| 355 } | |
| 356 | |
| 338 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( | 357 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( |
| 339 int player_id) { | 358 int player_id) { |
| 340 std::map<int, WebMediaPlayerAndroid*>::iterator iter = | 359 std::map<int, WebMediaPlayerAndroid*>::iterator iter = |
| 341 media_players_.find(player_id); | 360 media_players_.find(player_id); |
| 342 if (iter != media_players_.end()) | 361 if (iter != media_players_.end()) |
| 343 return iter->second; | 362 return iter->second; |
| 344 return NULL; | 363 return NULL; |
| 345 } | 364 } |
| 346 | 365 |
| 347 ProxyMediaKeys* RendererMediaPlayerManager::GetMediaKeys(int media_keys_id) { | 366 ProxyMediaKeys* RendererMediaPlayerManager::GetMediaKeys(int media_keys_id) { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 398 gfx::RectF rect; | 417 gfx::RectF rect; |
| 399 if (player->RetrieveGeometryChange(&rect)) { | 418 if (player->RetrieveGeometryChange(&rect)) { |
| 400 (*changes)[player_it->first] = rect; | 419 (*changes)[player_it->first] = rect; |
| 401 } | 420 } |
| 402 } | 421 } |
| 403 } | 422 } |
| 404 } | 423 } |
| 405 #endif | 424 #endif |
| 406 | 425 |
| 407 } // namespace content | 426 } // namespace content |
| OLD | NEW |