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 |