OLD | NEW |
---|---|
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 "content/browser/android/media_player_manager_android.h" | 5 #include "content/browser/android/media_player_manager_android.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | |
8 #include "content/browser/android/cookie_getter_impl.h" | 9 #include "content/browser/android/cookie_getter_impl.h" |
9 #include "content/common/media/media_player_messages.h" | 10 #include "content/common/media/media_player_messages.h" |
10 #include "content/public/browser/browser_context.h" | 11 #include "content/public/browser/browser_context.h" |
11 #include "content/public/browser/browser_thread.h" | 12 #include "content/public/browser/browser_thread.h" |
12 #include "content/public/browser/render_process_host.h" | 13 #include "content/public/browser/render_process_host.h" |
13 #include "content/public/browser/render_view_host.h" | 14 #include "content/public/browser/render_view_host.h" |
15 #include "content/public/common/content_switches.h" | |
14 | 16 |
15 using media::MediaPlayerBridge; | 17 using media::MediaPlayerBridge; |
16 | 18 |
17 // Threshold on the number of media players per renderer before we start | 19 // Threshold on the number of media players per renderer before we start |
18 // attempting to release inactive media players. | 20 // attempting to release inactive media players. |
19 static const int kMediaPlayerThreshold = 1; | 21 static const int kMediaPlayerThreshold = 1; |
20 | 22 |
21 namespace content { | 23 namespace content { |
22 | 24 |
23 MediaPlayerManagerAndroid::MediaPlayerManagerAndroid( | 25 MediaPlayerManagerAndroid::MediaPlayerManagerAndroid( |
24 RenderViewHost* render_view_host) | 26 RenderViewHost* render_view_host) |
25 : RenderViewHostObserver(render_view_host), | 27 : RenderViewHostObserver(render_view_host), |
26 ALLOW_THIS_IN_INITIALIZER_LIST(video_view_(this)), | 28 ALLOW_THIS_IN_INITIALIZER_LIST(video_view_(this)), |
27 fullscreen_player_id_(-1) { | 29 video_view_player_id_(-1) { |
28 } | 30 } |
29 | 31 |
30 MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {} | 32 MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {} |
31 | 33 |
32 bool MediaPlayerManagerAndroid::OnMessageReceived(const IPC::Message& msg) { | 34 bool MediaPlayerManagerAndroid::OnMessageReceived(const IPC::Message& msg) { |
33 bool handled = true; | 35 bool handled = true; |
34 IPC_BEGIN_MESSAGE_MAP(MediaPlayerManagerAndroid, msg) | 36 IPC_BEGIN_MESSAGE_MAP(MediaPlayerManagerAndroid, msg) |
35 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) | 37 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) |
36 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_ExitFullscreen, OnExitFullscreen) | 38 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_ExitFullscreen, OnExitFullscreen) |
37 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerInitialize, OnInitialize) | 39 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerInitialize, OnInitialize) |
38 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerStart, OnStart) | 40 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerStart, OnStart) |
39 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerSeek, OnSeek) | 41 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerSeek, OnSeek) |
40 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerPause, OnPause) | 42 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerPause, OnPause) |
41 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerRelease, | 43 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerRelease, |
42 OnReleaseResources) | 44 OnReleaseResources) |
43 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer) | 45 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer) |
44 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers, | 46 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers, |
45 DestroyAllMediaPlayers) | 47 DestroyAllMediaPlayers) |
46 IPC_MESSAGE_UNHANDLED(handled = false) | 48 IPC_MESSAGE_UNHANDLED(handled = false) |
47 IPC_END_MESSAGE_MAP() | 49 IPC_END_MESSAGE_MAP() |
48 return handled; | 50 return handled; |
49 } | 51 } |
50 | 52 |
51 void MediaPlayerManagerAndroid::FullscreenPlayerPlay() { | 53 void MediaPlayerManagerAndroid::FullscreenPlayerPlay() { |
52 MediaPlayerBridge* player = GetFullscreenPlayer(); | 54 MediaPlayerBridge* player = GetFullscreenPlayer(); |
53 if (player) { | 55 if (player) { |
54 player->Start(); | 56 player->Start(); |
55 Send(new MediaPlayerMsg_DidMediaPlayerPlay( | 57 Send(new MediaPlayerMsg_DidMediaPlayerPlay( |
56 routing_id(), fullscreen_player_id_)); | 58 routing_id(), video_view_player_id_)); |
57 } | 59 } |
58 } | 60 } |
59 | 61 |
60 void MediaPlayerManagerAndroid::FullscreenPlayerPause() { | 62 void MediaPlayerManagerAndroid::FullscreenPlayerPause() { |
61 MediaPlayerBridge* player = GetFullscreenPlayer(); | 63 MediaPlayerBridge* player = GetFullscreenPlayer(); |
62 if (player) { | 64 if (player) { |
63 player->Pause(); | 65 player->Pause(); |
64 Send(new MediaPlayerMsg_DidMediaPlayerPause( | 66 Send(new MediaPlayerMsg_DidMediaPlayerPause( |
65 routing_id(), fullscreen_player_id_)); | 67 routing_id(), video_view_player_id_)); |
66 } | 68 } |
67 } | 69 } |
68 | 70 |
69 void MediaPlayerManagerAndroid::FullscreenPlayerSeek(int msec) { | 71 void MediaPlayerManagerAndroid::FullscreenPlayerSeek(int msec) { |
70 MediaPlayerBridge* player = GetFullscreenPlayer(); | 72 MediaPlayerBridge* player = GetFullscreenPlayer(); |
71 if (player) | 73 if (player) |
72 player->SeekTo(base::TimeDelta::FromMilliseconds(msec)); | 74 player->SeekTo(base::TimeDelta::FromMilliseconds(msec)); |
73 } | 75 } |
74 | 76 |
75 void MediaPlayerManagerAndroid::ExitFullscreen(bool release_media_player) { | 77 void MediaPlayerManagerAndroid::ExitFullscreen(bool release_media_player) { |
76 Send(new MediaPlayerMsg_DidExitFullscreen( | 78 Send(new MediaPlayerMsg_DidExitFullscreen( |
77 routing_id(), fullscreen_player_id_)); | 79 routing_id(), video_view_player_id_)); |
78 MediaPlayerBridge* player = GetFullscreenPlayer(); | 80 MediaPlayerBridge* player = GetFullscreenPlayer(); |
79 fullscreen_player_id_ = -1; | 81 video_view_player_id_ = -1; |
80 if (!player) | 82 if (!player) |
81 return; | 83 return; |
82 if (release_media_player) | 84 if (release_media_player) |
83 player->Release(); | 85 player->Release(); |
84 else | 86 else |
85 player->SetVideoSurface(NULL); | 87 player->SetVideoSurface(NULL); |
86 } | 88 } |
87 | 89 |
88 void MediaPlayerManagerAndroid::SetVideoSurface(jobject surface) { | 90 void MediaPlayerManagerAndroid::SetVideoSurface(jobject surface) { |
89 MediaPlayerBridge* player = GetFullscreenPlayer(); | 91 MediaPlayerBridge* player = GetPlayer(video_view_player_id_); |
90 if (player) { | 92 if (player) { |
91 player->SetVideoSurface(surface); | 93 player->SetVideoSurface(surface); |
92 Send(new MediaPlayerMsg_DidEnterFullscreen( | 94 if (video_view_.getPersonality() == |
93 routing_id(), player->player_id())); | 95 ContentVideoView::PERSONALITY_FULL_SCREEN) { |
96 Send(new MediaPlayerMsg_DidEnterFullscreen( | |
97 routing_id(), player->player_id())); | |
qinmin
2012/12/17 19:34:06
Just collapse these 2 into a single message, new M
wonsik2
2013/02/14 14:56:38
Done.
| |
98 } else { | |
99 // TODO(wonsik): Find better way to communicate this event. | |
100 Send(new MediaPlayerMsg_DidEnterVideoView( | |
101 routing_id(), player->player_id())); | |
102 } | |
94 } | 103 } |
95 } | 104 } |
96 | 105 |
97 void MediaPlayerManagerAndroid::OnInitialize( | 106 void MediaPlayerManagerAndroid::OnInitialize( |
98 int player_id, const std::string& url, | 107 int player_id, const std::string& url, |
99 const std::string& first_party_for_cookies) { | 108 const std::string& first_party_for_cookies) { |
100 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); | 109 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); |
101 it != players_.end(); ++it) { | 110 it != players_.end(); ++it) { |
102 if ((*it)->player_id() == player_id) { | 111 if ((*it)->player_id() == player_id) { |
103 players_.erase(it); | 112 players_.erase(it); |
(...skipping 23 matching lines...) Expand all Loading... | |
127 base::Bind(&MediaPlayerManagerAndroid::OnMediaInterrupted, | 136 base::Bind(&MediaPlayerManagerAndroid::OnMediaInterrupted, |
128 base::Unretained(this)))); | 137 base::Unretained(this)))); |
129 | 138 |
130 // Send a MediaPrepared message to webkit so that Load() can finish. | 139 // Send a MediaPrepared message to webkit so that Load() can finish. |
131 Send(new MediaPlayerMsg_MediaPrepared( | 140 Send(new MediaPlayerMsg_MediaPrepared( |
132 routing_id(), player_id, GetPlayer(player_id)->GetDuration())); | 141 routing_id(), player_id, GetPlayer(player_id)->GetDuration())); |
133 } | 142 } |
134 | 143 |
135 void MediaPlayerManagerAndroid::OnStart(int player_id) { | 144 void MediaPlayerManagerAndroid::OnStart(int player_id) { |
136 MediaPlayerBridge* player = GetPlayer(player_id); | 145 MediaPlayerBridge* player = GetPlayer(player_id); |
137 if (player) | 146 if (player) { |
147 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
148 switches::kRenderVideoOnExternalSurface)) { | |
149 // TODO(wonsik): Find a way to enable this feature only when it is | |
150 // absolutely necessary (e.g. protected content). | |
151 if (video_view_player_id_ != -1) { | |
qinmin
2012/12/17 19:34:06
no { needed
wonsik2
2013/02/14 14:56:38
Done.
| |
152 ExitFromVideoView(video_view_player_id_); | |
qinmin
2012/12/17 19:34:06
do we pause the player afterwards?
wonsik2
2013/02/14 14:56:38
Done.
| |
153 } | |
154 video_view_player_id_ = player_id; | |
155 video_view_.CreateContentVideoView( | |
156 ContentVideoView::PERSONALITY_EMBEDDED); | |
157 } | |
138 player->Start(); | 158 player->Start(); |
159 } | |
139 } | 160 } |
140 | 161 |
141 void MediaPlayerManagerAndroid::OnSeek(int player_id, base::TimeDelta time) { | 162 void MediaPlayerManagerAndroid::OnSeek(int player_id, base::TimeDelta time) { |
142 MediaPlayerBridge* player = GetPlayer(player_id); | 163 MediaPlayerBridge* player = GetPlayer(player_id); |
143 if (player) | 164 if (player) |
144 player->SeekTo(time); | 165 player->SeekTo(time); |
145 } | 166 } |
146 | 167 |
147 void MediaPlayerManagerAndroid::OnPause(int player_id) { | 168 void MediaPlayerManagerAndroid::OnPause(int player_id) { |
148 MediaPlayerBridge* player = GetPlayer(player_id); | 169 MediaPlayerBridge* player = GetPlayer(player_id); |
149 if (player) | 170 if (player) |
150 player->Pause(); | 171 player->Pause(); |
151 } | 172 } |
152 | 173 |
153 void MediaPlayerManagerAndroid::OnEnterFullscreen(int player_id) { | 174 void MediaPlayerManagerAndroid::OnEnterFullscreen(int player_id) { |
154 DCHECK_EQ(fullscreen_player_id_, -1); | 175 if (video_view_player_id_ != -1) { |
qinmin
2012/12/17 19:34:06
no { needed
wonsik2
2013/02/14 14:56:38
Done.
| |
176 ExitFromVideoView(video_view_player_id_); | |
177 } | |
155 | 178 |
156 fullscreen_player_id_ = player_id; | 179 video_view_player_id_ = player_id; |
157 video_view_.CreateContentVideoView(); | 180 video_view_.CreateContentVideoView(ContentVideoView::PERSONALITY_FULL_SCREEN); |
158 } | 181 } |
159 | 182 |
160 void MediaPlayerManagerAndroid::OnExitFullscreen(int player_id) { | 183 void MediaPlayerManagerAndroid::OnExitFullscreen(int player_id) { |
161 if (fullscreen_player_id_ == player_id) { | 184 ExitFromVideoView(player_id); |
185 } | |
186 | |
187 void MediaPlayerManagerAndroid::ExitFromVideoView(int player_id) { | |
188 if (video_view_player_id_ == player_id) { | |
189 if (video_view_.getPersonality() != | |
190 ContentVideoView::PERSONALITY_FULL_SCREEN) { | |
191 Send(new MediaPlayerMsg_DidExitVideoView( | |
qinmin
2012/12/17 19:34:06
combine this message with DidExitFullscreen
wonsik2
2013/02/14 14:56:38
Done.
| |
192 routing_id(), video_view_player_id_)); | |
193 } | |
162 MediaPlayerBridge* player = GetPlayer(player_id); | 194 MediaPlayerBridge* player = GetPlayer(player_id); |
163 if (player) | 195 if (player) |
164 player->SetVideoSurface(NULL); | 196 player->SetVideoSurface(NULL); |
165 video_view_.DestroyContentVideoView(); | 197 video_view_.DestroyContentVideoView(); |
166 fullscreen_player_id_ = -1; | 198 video_view_player_id_ = -1; |
167 } | 199 } |
168 } | 200 } |
169 | 201 |
170 void MediaPlayerManagerAndroid::OnReleaseResources(int player_id) { | 202 void MediaPlayerManagerAndroid::OnReleaseResources(int player_id) { |
171 MediaPlayerBridge* player = GetPlayer(player_id); | 203 MediaPlayerBridge* player = GetPlayer(player_id); |
172 // Don't release the fullscreen player when tab visibility changes, | 204 // Don't release the fullscreen player when tab visibility changes, |
173 // it will be released when user hit the back/home button or when | 205 // it will be released when user hit the back/home button or when |
174 // OnDestroyPlayer is called. | 206 // OnDestroyPlayer is called. |
175 if (player && player_id != fullscreen_player_id_) | 207 if (player && player_id != video_view_player_id_) |
176 player->Release(); | 208 player->Release(); |
177 } | 209 } |
178 | 210 |
179 void MediaPlayerManagerAndroid::OnDestroyPlayer(int player_id) { | 211 void MediaPlayerManagerAndroid::OnDestroyPlayer(int player_id) { |
180 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); | 212 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); |
181 it != players_.end(); ++it) { | 213 it != players_.end(); ++it) { |
182 if ((*it)->player_id() == player_id) { | 214 if ((*it)->player_id() == player_id) { |
183 players_.erase(it); | 215 players_.erase(it); |
184 break; | 216 break; |
185 } | 217 } |
186 } | 218 } |
187 if (fullscreen_player_id_ == player_id) | 219 if (video_view_player_id_ == player_id) |
188 fullscreen_player_id_ = -1; | 220 video_view_player_id_ = -1; |
189 } | 221 } |
190 | 222 |
191 void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() { | 223 void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() { |
192 players_.clear(); | 224 players_.clear(); |
193 if (fullscreen_player_id_ != -1) { | 225 if (video_view_player_id_ != -1) { |
194 video_view_.DestroyContentVideoView(); | 226 video_view_.DestroyContentVideoView(); |
195 fullscreen_player_id_ = -1; | 227 video_view_player_id_ = -1; |
196 } | 228 } |
197 } | 229 } |
198 | 230 |
199 MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) { | 231 MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) { |
200 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); | 232 for (ScopedVector<MediaPlayerBridge>::iterator it = players_.begin(); |
201 it != players_.end(); ++it) { | 233 it != players_.end(); ++it) { |
202 if ((*it)->player_id() == player_id) | 234 if ((*it)->player_id() == player_id) |
203 return *it; | 235 return *it; |
204 } | 236 } |
205 return NULL; | 237 return NULL; |
206 } | 238 } |
207 | 239 |
208 MediaPlayerBridge* MediaPlayerManagerAndroid::GetFullscreenPlayer() { | 240 MediaPlayerBridge* MediaPlayerManagerAndroid::GetFullscreenPlayer() { |
qinmin
2012/12/17 19:34:06
This function name should be changed getVideoViewP
wonsik2
2013/02/14 14:56:38
This indeed returns fullscreen player since it onl
| |
209 return GetPlayer(fullscreen_player_id_); | 241 if (video_view_.getPersonality() != |
242 ContentVideoView::PERSONALITY_FULL_SCREEN) { | |
243 return NULL; | |
244 } | |
245 return GetPlayer(video_view_player_id_); | |
210 } | 246 } |
211 | 247 |
212 void MediaPlayerManagerAndroid::OnPrepared(int player_id, | 248 void MediaPlayerManagerAndroid::OnPrepared(int player_id, |
213 base::TimeDelta duration) { | 249 base::TimeDelta duration) { |
214 Send(new MediaPlayerMsg_MediaPrepared(routing_id(), player_id, duration)); | 250 Send(new MediaPlayerMsg_MediaPrepared(routing_id(), player_id, duration)); |
215 if (fullscreen_player_id_ != -1) | 251 if (video_view_player_id_ != -1) |
216 video_view_.UpdateMediaMetadata(); | 252 video_view_.UpdateMediaMetadata(); |
217 } | 253 } |
218 | 254 |
219 void MediaPlayerManagerAndroid::OnPlaybackComplete(int player_id) { | 255 void MediaPlayerManagerAndroid::OnPlaybackComplete(int player_id) { |
220 Send(new MediaPlayerMsg_MediaPlaybackCompleted(routing_id(), player_id)); | 256 Send(new MediaPlayerMsg_MediaPlaybackCompleted(routing_id(), player_id)); |
221 if (fullscreen_player_id_ != -1) | 257 if (video_view_player_id_ != -1) |
222 video_view_.OnPlaybackComplete(); | 258 video_view_.OnPlaybackComplete(); |
223 } | 259 } |
224 | 260 |
225 void MediaPlayerManagerAndroid::OnMediaInterrupted(int player_id) { | 261 void MediaPlayerManagerAndroid::OnMediaInterrupted(int player_id) { |
226 // Tell WebKit that the audio should be paused, then release all resources | 262 // Tell WebKit that the audio should be paused, then release all resources |
227 Send(new MediaPlayerMsg_DidMediaPlayerPause(routing_id(), player_id)); | 263 Send(new MediaPlayerMsg_DidMediaPlayerPause(routing_id(), player_id)); |
228 OnReleaseResources(player_id); | 264 OnReleaseResources(player_id); |
229 } | 265 } |
230 | 266 |
231 void MediaPlayerManagerAndroid::OnBufferingUpdate( | 267 void MediaPlayerManagerAndroid::OnBufferingUpdate( |
232 int player_id, int percentage) { | 268 int player_id, int percentage) { |
233 Send(new MediaPlayerMsg_MediaBufferingUpdate( | 269 Send(new MediaPlayerMsg_MediaBufferingUpdate( |
234 routing_id(), player_id, percentage)); | 270 routing_id(), player_id, percentage)); |
235 if (fullscreen_player_id_ != -1) | 271 if (video_view_player_id_ != -1) |
236 video_view_.OnBufferingUpdate(percentage); | 272 video_view_.OnBufferingUpdate(percentage); |
237 } | 273 } |
238 | 274 |
239 void MediaPlayerManagerAndroid::OnSeekComplete(int player_id, | 275 void MediaPlayerManagerAndroid::OnSeekComplete(int player_id, |
240 base::TimeDelta current_time) { | 276 base::TimeDelta current_time) { |
241 Send(new MediaPlayerMsg_MediaSeekCompleted( | 277 Send(new MediaPlayerMsg_MediaSeekCompleted( |
242 routing_id(), player_id, current_time)); | 278 routing_id(), player_id, current_time)); |
243 } | 279 } |
244 | 280 |
245 void MediaPlayerManagerAndroid::OnError(int player_id, int error) { | 281 void MediaPlayerManagerAndroid::OnError(int player_id, int error) { |
246 Send(new MediaPlayerMsg_MediaError(routing_id(), player_id, error)); | 282 Send(new MediaPlayerMsg_MediaError(routing_id(), player_id, error)); |
247 if (fullscreen_player_id_ != -1) | 283 if (video_view_player_id_ != -1) |
248 video_view_.OnMediaPlayerError(error); | 284 video_view_.OnMediaPlayerError(error); |
249 } | 285 } |
250 | 286 |
251 void MediaPlayerManagerAndroid::OnVideoSizeChanged( | 287 void MediaPlayerManagerAndroid::OnVideoSizeChanged( |
252 int player_id, int width, int height) { | 288 int player_id, int width, int height) { |
253 Send(new MediaPlayerMsg_MediaVideoSizeChanged(routing_id(), player_id, | 289 Send(new MediaPlayerMsg_MediaVideoSizeChanged(routing_id(), player_id, |
254 width, height)); | 290 width, height)); |
255 if (fullscreen_player_id_ != -1) | 291 if (video_view_player_id_ != -1) |
256 video_view_.OnVideoSizeChanged(width, height); | 292 video_view_.OnVideoSizeChanged(width, height); |
257 } | 293 } |
258 | 294 |
259 void MediaPlayerManagerAndroid::OnTimeUpdate(int player_id, | 295 void MediaPlayerManagerAndroid::OnTimeUpdate(int player_id, |
260 base::TimeDelta current_time) { | 296 base::TimeDelta current_time) { |
261 Send(new MediaPlayerMsg_MediaTimeUpdate( | 297 Send(new MediaPlayerMsg_MediaTimeUpdate( |
262 routing_id(), player_id, current_time)); | 298 routing_id(), player_id, current_time)); |
263 } | 299 } |
264 | 300 |
265 void MediaPlayerManagerAndroid::RequestMediaResources( | 301 void MediaPlayerManagerAndroid::RequestMediaResources( |
(...skipping 13 matching lines...) Expand all Loading... | |
279 else | 315 else |
280 num_active_player++; | 316 num_active_player++; |
281 } | 317 } |
282 | 318 |
283 // Number of active players are less than the threshold, do nothing. | 319 // Number of active players are less than the threshold, do nothing. |
284 if (num_active_player < kMediaPlayerThreshold) | 320 if (num_active_player < kMediaPlayerThreshold) |
285 return; | 321 return; |
286 | 322 |
287 for (it = players_.begin(); it != players_.end(); ++it) { | 323 for (it = players_.begin(); it != players_.end(); ++it) { |
288 if ((*it)->prepared() && !(*it)->IsPlaying() && | 324 if ((*it)->prepared() && !(*it)->IsPlaying() && |
289 fullscreen_player_id_ != (*it)->player_id()) { | 325 video_view_player_id_ != (*it)->player_id()) { |
290 (*it)->Release(); | 326 (*it)->Release(); |
291 Send(new MediaPlayerMsg_MediaPlayerReleased( | 327 Send(new MediaPlayerMsg_MediaPlayerReleased( |
292 routing_id(), (*it)->player_id())); | 328 routing_id(), (*it)->player_id())); |
293 } | 329 } |
294 } | 330 } |
295 } | 331 } |
296 | 332 |
297 void MediaPlayerManagerAndroid::ReleaseMediaResources( | 333 void MediaPlayerManagerAndroid::ReleaseMediaResources( |
298 MediaPlayerBridge* player) { | 334 MediaPlayerBridge* player) { |
299 // Nothing needs to be done. | 335 // Nothing needs to be done. |
300 } | 336 } |
301 | 337 |
302 } // namespace content | 338 } // namespace content |
OLD | NEW |