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

Side by Side Diff: content/browser/android/media_player_manager_android.cc

Issue 11442056: Add external surface rendering mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add getPersonality() Created 8 years 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 "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698