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

Side by Side Diff: webkit/media/android/webmediaplayer_manager_android.cc

Issue 13688004: Location/size change notification when external rendering is enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase & added a missing ifdef guard Created 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/media/android/webmediaplayer_manager_android.h" 5 #include "webkit/media/android/webmediaplayer_manager_android.h"
6 6
7 #include "ui/gfx/rect_f.h"
7 #include "webkit/media/android/webmediaplayer_android.h" 8 #include "webkit/media/android/webmediaplayer_android.h"
8 9
9 namespace webkit_media { 10 namespace webkit_media {
10 11
11 WebMediaPlayerManagerAndroid::WebMediaPlayerManagerAndroid() 12 WebMediaPlayerManagerAndroid::WebMediaPlayerManagerAndroid()
12 : next_media_player_id_(0), 13 : next_media_player_id_(0),
13 fullscreen_frame_(NULL) { 14 fullscreen_frame_(NULL) {
14 } 15 }
15 16
16 WebMediaPlayerManagerAndroid::~WebMediaPlayerManagerAndroid() { 17 WebMediaPlayerManagerAndroid::~WebMediaPlayerManagerAndroid() {
17 std::map<int32, WebMediaPlayerAndroid*>::iterator player_it; 18 std::map<int, WebMediaPlayerAndroid*>::iterator player_it;
18 for (player_it = media_players_.begin(); 19 for (player_it = media_players_.begin();
19 player_it != media_players_.end(); ++player_it) { 20 player_it != media_players_.end(); ++player_it) {
20 WebMediaPlayerAndroid* player = player_it->second; 21 WebMediaPlayerAndroid* player = player_it->second;
21 player->Detach(); 22 player->Detach();
22 } 23 }
23 } 24 }
24 25
25 int WebMediaPlayerManagerAndroid::RegisterMediaPlayer( 26 int WebMediaPlayerManagerAndroid::RegisterMediaPlayer(
26 WebMediaPlayerAndroid* player) { 27 WebMediaPlayerAndroid* player) {
27 media_players_[next_media_player_id_] = player; 28 media_players_[next_media_player_id_] = player;
28 return next_media_player_id_++; 29 return next_media_player_id_++;
29 } 30 }
30 31
31 void WebMediaPlayerManagerAndroid::UnregisterMediaPlayer(int player_id) { 32 void WebMediaPlayerManagerAndroid::UnregisterMediaPlayer(int player_id) {
32 media_players_.erase(player_id); 33 media_players_.erase(player_id);
33 } 34 }
34 35
35 void WebMediaPlayerManagerAndroid::ReleaseMediaResources() { 36 void WebMediaPlayerManagerAndroid::ReleaseMediaResources() {
36 std::map<int32, WebMediaPlayerAndroid*>::iterator player_it; 37 std::map<int, WebMediaPlayerAndroid*>::iterator player_it;
37 for (player_it = media_players_.begin(); 38 for (player_it = media_players_.begin();
38 player_it != media_players_.end(); ++player_it) { 39 player_it != media_players_.end(); ++player_it) {
39 WebMediaPlayerAndroid* player = player_it->second; 40 WebMediaPlayerAndroid* player = player_it->second;
40 41
41 // Do not release if an audio track is still playing 42 // Do not release if an audio track is still playing
42 if (player && (player->paused() || player->hasVideo())) 43 if (player && (player->paused() || player->hasVideo()))
43 player->ReleaseMediaResources(); 44 player->ReleaseMediaResources();
44 } 45 }
45 } 46 }
46 47
47 WebMediaPlayerAndroid* WebMediaPlayerManagerAndroid::GetMediaPlayer( 48 WebMediaPlayerAndroid* WebMediaPlayerManagerAndroid::GetMediaPlayer(
48 int player_id) { 49 int player_id) {
49 std::map<int32, WebMediaPlayerAndroid*>::iterator iter = 50 std::map<int, WebMediaPlayerAndroid*>::iterator iter =
50 media_players_.find(player_id); 51 media_players_.find(player_id);
51 if (iter != media_players_.end()) 52 if (iter != media_players_.end())
52 return iter->second; 53 return iter->second;
53 return NULL; 54 return NULL;
54 } 55 }
55 56
56 bool WebMediaPlayerManagerAndroid::CanEnterFullscreen(WebKit::WebFrame* frame) { 57 bool WebMediaPlayerManagerAndroid::CanEnterFullscreen(WebKit::WebFrame* frame) {
57 return !fullscreen_frame_ || IsInFullscreen(frame); 58 return !fullscreen_frame_ || IsInFullscreen(frame);
58 } 59 }
59 60
60 void WebMediaPlayerManagerAndroid::DidEnterFullscreen(WebKit::WebFrame* frame) { 61 void WebMediaPlayerManagerAndroid::DidEnterFullscreen(WebKit::WebFrame* frame) {
61 fullscreen_frame_ = frame; 62 fullscreen_frame_ = frame;
62 } 63 }
63 64
64 void WebMediaPlayerManagerAndroid::DidExitFullscreen() { 65 void WebMediaPlayerManagerAndroid::DidExitFullscreen() {
65 fullscreen_frame_ = NULL; 66 fullscreen_frame_ = NULL;
66 } 67 }
67 68
68 bool WebMediaPlayerManagerAndroid::IsInFullscreen(WebKit::WebFrame* frame) { 69 bool WebMediaPlayerManagerAndroid::IsInFullscreen(WebKit::WebFrame* frame) {
69 return fullscreen_frame_ == frame; 70 return fullscreen_frame_ == frame;
70 } 71 }
71 72
73 #if defined(GOOGLE_TV)
74 void WebMediaPlayerManagerAndroid::RetrieveGeometryChanges(
75 std::map<int, gfx::RectF>* changes) {
76 DCHECK(changes->empty());
77 for (std::map<int, WebMediaPlayerAndroid*>::iterator player_it =
78 media_players_.begin();
79 player_it != media_players_.end();
80 ++player_it) {
81 WebMediaPlayerAndroid* player = player_it->second;
82
83 if (player && player->hasVideo()) {
84 gfx::RectF rect;
85 if (player->RetrieveGeometryChange(&rect)) {
86 (*changes)[player_it->first] = rect;
87 }
88 }
89 }
90 }
91 #endif
92
72 } // namespace webkit_media 93 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/android/webmediaplayer_manager_android.h ('k') | webkit/media/android/webmediaplayer_proxy_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698