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 // Maximum sizes for various EME message parameters. These are checks to | 15 // Maximum sizes for various EME message parameters. These are checks to |
| 16 // prevent unnecessarily large messages from being passed around, and the sizes | 16 // prevent unnecessarily large messages from being passed around, and the sizes |
| 17 // are somewhat arbitrary as the EME specification doesn't specify any limits. | 17 // are somewhat arbitrary as the EME specification doesn't specify any limits. |
| 18 static const size_t kEmeWebSessionIdMaximum = 512; | 18 static const size_t kEmeWebSessionIdMaximum = 512; |
| 19 static const size_t kEmeMessageMaximum = 10240; // 10 KB | 19 static const size_t kEmeMessageMaximum = 10240; // 10 KB |
| 20 static const size_t kEmeDestinationUrlMaximum = 2048; // 2 KB | 20 static const size_t kEmeDestinationUrlMaximum = 2048; // 2 KB |
| 21 | 21 |
| 22 namespace content { | 22 namespace content { |
| 23 | 23 |
| 24 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) | 24 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) |
| 25 : RenderViewObserver(render_view), | 25 : RenderViewObserver(render_view), |
| 26 next_media_player_id_(0), | 26 next_media_player_id_(0), |
| 27 fullscreen_frame_(NULL) {} | 27 fullscreen_frame_(NULL), |
| 28 pending_fullscreen_frame_(NULL) {} | |
| 28 | 29 |
| 29 RendererMediaPlayerManager::~RendererMediaPlayerManager() { | 30 RendererMediaPlayerManager::~RendererMediaPlayerManager() { |
| 30 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 31 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
| 31 for (player_it = media_players_.begin(); | 32 for (player_it = media_players_.begin(); |
| 32 player_it != media_players_.end(); ++player_it) { | 33 player_it != media_players_.end(); ++player_it) { |
| 33 WebMediaPlayerAndroid* player = player_it->second; | 34 WebMediaPlayerAndroid* player = player_it->second; |
| 34 player->Detach(); | 35 player->Detach(); |
| 35 } | 36 } |
| 36 | 37 |
| 37 Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id())); | 38 Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id())); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 216 if (player) | 217 if (player) |
| 217 player->OnMediaPlayerPause(); | 218 player->OnMediaPlayerPause(); |
| 218 } | 219 } |
| 219 | 220 |
| 220 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { | 221 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { |
| 221 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 222 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
| 222 if (player) | 223 if (player) |
| 223 player->OnRequestFullscreen(); | 224 player->OnRequestFullscreen(); |
| 224 } | 225 } |
| 225 | 226 |
| 226 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { | 227 void RendererMediaPlayerManager::EnterFullscreen(int player_id, |
| 228 blink::WebFrame* frame) { | |
| 229 pending_fullscreen_frame_ = frame; | |
| 227 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); | 230 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); |
| 228 } | 231 } |
| 229 | 232 |
| 230 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { | 233 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { |
| 231 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); | 234 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); |
| 232 } | 235 } |
| 233 | 236 |
| 234 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, | 237 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, |
| 235 ProxyMediaKeys* media_keys, | 238 ProxyMediaKeys* media_keys, |
| 236 const std::vector<uint8>& uuid, | 239 const std::vector<uint8>& uuid, |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 378 std::map<int, ProxyMediaKeys*>::iterator iter = | 381 std::map<int, ProxyMediaKeys*>::iterator iter = |
| 379 media_keys_.find(media_keys_id); | 382 media_keys_.find(media_keys_id); |
| 380 return (iter != media_keys_.end()) ? iter->second : NULL; | 383 return (iter != media_keys_.end()) ? iter->second : NULL; |
| 381 } | 384 } |
| 382 | 385 |
| 383 bool RendererMediaPlayerManager::CanEnterFullscreen(blink::WebFrame* frame) { | 386 bool RendererMediaPlayerManager::CanEnterFullscreen(blink::WebFrame* frame) { |
| 384 return !fullscreen_frame_ || IsInFullscreen(frame); | 387 return !fullscreen_frame_ || IsInFullscreen(frame); |
| 385 } | 388 } |
| 386 | 389 |
| 387 void RendererMediaPlayerManager::DidEnterFullscreen(blink::WebFrame* frame) { | 390 void RendererMediaPlayerManager::DidEnterFullscreen(blink::WebFrame* frame) { |
| 391 pending_fullscreen_frame_ = NULL; | |
|
qinmin
2014/01/28 17:41:34
what if ExitFullscreen() is called before this cal
| |
| 388 fullscreen_frame_ = frame; | 392 fullscreen_frame_ = frame; |
| 389 } | 393 } |
| 390 | 394 |
| 391 void RendererMediaPlayerManager::DidExitFullscreen() { | 395 void RendererMediaPlayerManager::DidExitFullscreen() { |
| 392 fullscreen_frame_ = NULL; | 396 fullscreen_frame_ = NULL; |
| 393 } | 397 } |
| 394 | 398 |
| 395 bool RendererMediaPlayerManager::IsInFullscreen(blink::WebFrame* frame) { | 399 bool RendererMediaPlayerManager::IsInFullscreen(blink::WebFrame* frame) { |
| 396 return fullscreen_frame_ == frame; | 400 return fullscreen_frame_ == frame; |
| 397 } | 401 } |
| 398 | 402 |
| 403 bool RendererMediaPlayerManager::ShouldEnterFullscreen(blink::WebFrame* frame) { | |
|
qinmin
2014/01/28 17:41:34
This logic is also needed for CanEnterFullscreen()
| |
| 404 return fullscreen_frame_ == frame || pending_fullscreen_frame_ == frame; | |
| 405 } | |
| 406 | |
| 399 #if defined(VIDEO_HOLE) | 407 #if defined(VIDEO_HOLE) |
| 400 void RendererMediaPlayerManager::RequestExternalSurface( | 408 void RendererMediaPlayerManager::RequestExternalSurface( |
| 401 int player_id, | 409 int player_id, |
| 402 const gfx::RectF& geometry) { | 410 const gfx::RectF& geometry) { |
| 403 Send(new MediaPlayerHostMsg_NotifyExternalSurface( | 411 Send(new MediaPlayerHostMsg_NotifyExternalSurface( |
| 404 routing_id(), player_id, true, geometry)); | 412 routing_id(), player_id, true, geometry)); |
| 405 } | 413 } |
| 406 | 414 |
| 407 void RendererMediaPlayerManager::DidCommitCompositorFrame() { | 415 void RendererMediaPlayerManager::DidCommitCompositorFrame() { |
| 408 std::map<int, gfx::RectF> geometry_change; | 416 std::map<int, gfx::RectF> geometry_change; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 428 gfx::RectF rect; | 436 gfx::RectF rect; |
| 429 if (player->RetrieveGeometryChange(&rect)) { | 437 if (player->RetrieveGeometryChange(&rect)) { |
| 430 (*changes)[player_it->first] = rect; | 438 (*changes)[player_it->first] = rect; |
| 431 } | 439 } |
| 432 } | 440 } |
| 433 } | 441 } |
| 434 } | 442 } |
| 435 #endif // defined(VIDEO_HOLE) | 443 #endif // defined(VIDEO_HOLE) |
| 436 | 444 |
| 437 } // namespace content | 445 } // namespace content |
| OLD | NEW |