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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 23797004: Sets the media element network state to idle until playback is requested. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/webmediaplayer_android.h" 5 #include "content/renderer/media/android/webmediaplayer_android.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 url_ = url; 272 url_ = url;
273 GURL first_party_url = frame_->document().firstPartyForCookies(); 273 GURL first_party_url = frame_->document().firstPartyForCookies();
274 proxy_->Initialize(player_id_, url, source_type_, first_party_url); 274 proxy_->Initialize(player_id_, url, source_type_, first_party_url);
275 if (manager_->IsInFullscreen(frame_)) 275 if (manager_->IsInFullscreen(frame_))
276 proxy_->EnterFullscreen(player_id_); 276 proxy_->EnterFullscreen(player_id_);
277 277
278 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); 278 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
279 UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing); 279 UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing);
280 } 280 }
281 281
282 void WebMediaPlayerAndroid::DidLoadMediaInfo( 282 void WebMediaPlayerAndroid::DidLoadMediaInfo(
scherkus (not reviewing) 2013/09/13 16:04:47 considering this is a callback, are we sure HTMLMe
Jinsuk Kim 2013/09/16 02:20:18 Thanks for catching it. Changed to make sure it ha
283 MediaInfoLoader::Status status) { 283 MediaInfoLoader::Status status) {
284 DCHECK(!media_source_delegate_); 284 DCHECK(!media_source_delegate_);
285 if (status == MediaInfoLoader::kFailed) { 285 if (status == MediaInfoLoader::kFailed) {
286 info_loader_.reset(); 286 info_loader_.reset();
287 UpdateNetworkState(WebMediaPlayer::NetworkStateNetworkError); 287 UpdateNetworkState(WebMediaPlayer::NetworkStateNetworkError);
288 return; 288 return;
289 } 289 }
290 290
291 has_media_info_ = true; 291 has_media_info_ = true;
292 if (has_media_metadata_ && 292 if (has_media_metadata_ &&
293 ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) { 293 ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) {
294 UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata); 294 UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
295 UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData); 295 UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
296 } 296 }
297 // Android doesn't start fetching resources until an implementation-defined
298 // event (e.g. playback request) occurs. Sets to the network state to IDLE.
299 UpdateNetworkState(WebMediaPlayer::NetworkStateIdle);
qinmin 2013/09/03 14:22:46 this is an optional step in HTML5 spec, do we real
Jinsuk Kim 2013/09/04 01:32:03 Though optional, I see benefit in having this - it
qinmin 2013/09/04 14:10:12 can you run all the layout test with content shell
Jinsuk Kim 2013/09/13 05:50:06 Ran the tests and confirmed there's no regression.
297 } 300 }
298 301
299 void WebMediaPlayerAndroid::play() { 302 void WebMediaPlayerAndroid::play() {
300 #if defined(GOOGLE_TV) 303 #if defined(GOOGLE_TV)
301 if (hasVideo() && needs_external_surface_ && 304 if (hasVideo() && needs_external_surface_ &&
302 !manager_->IsInFullscreen(frame_)) { 305 !manager_->IsInFullscreen(frame_)) {
303 DCHECK(!needs_establish_peer_); 306 DCHECK(!needs_establish_peer_);
304 proxy_->RequestExternalSurface(player_id_, last_computed_rect_); 307 proxy_->RequestExternalSurface(player_id_, last_computed_rect_);
305 } 308 }
306 if (audio_renderer_ && paused()) 309 if (audio_renderer_ && paused())
307 audio_renderer_->Play(); 310 audio_renderer_->Play();
308 #endif 311 #endif
309 if (hasVideo() && needs_establish_peer_) 312 if (hasVideo() && needs_establish_peer_)
310 EstablishSurfaceTexturePeer(); 313 EstablishSurfaceTexturePeer();
311 314
312 if (paused()) 315 if (paused())
313 proxy_->Start(player_id_); 316 proxy_->Start(player_id_);
314 UpdatePlayingState(true); 317 UpdatePlayingState(true);
318 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
315 } 319 }
316 320
317 void WebMediaPlayerAndroid::pause() { 321 void WebMediaPlayerAndroid::pause() {
318 #if defined(GOOGLE_TV) 322 #if defined(GOOGLE_TV)
319 if (audio_renderer_ && !paused()) 323 if (audio_renderer_ && !paused())
320 audio_renderer_->Pause(); 324 audio_renderer_->Pause();
321 #endif 325 #endif
322 proxy_->Pause(player_id_); 326 proxy_->Pause(player_id_);
323 UpdatePlayingState(false); 327 UpdatePlayingState(false);
324 } 328 }
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 1182
1179 void WebMediaPlayerAndroid::exitFullscreen() { 1183 void WebMediaPlayerAndroid::exitFullscreen() {
1180 proxy_->ExitFullscreen(player_id_); 1184 proxy_->ExitFullscreen(player_id_);
1181 } 1185 }
1182 1186
1183 bool WebMediaPlayerAndroid::canEnterFullscreen() const { 1187 bool WebMediaPlayerAndroid::canEnterFullscreen() const {
1184 return manager_->CanEnterFullscreen(frame_); 1188 return manager_->CanEnterFullscreen(frame_);
1185 } 1189 }
1186 1190
1187 } // namespace content 1191 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698