Chromium Code Reviews| Index: webkit/renderer/media/android/webmediaplayer_android.cc |
| diff --git a/webkit/renderer/media/android/webmediaplayer_android.cc b/webkit/renderer/media/android/webmediaplayer_android.cc |
| index 5670b5898de5789ca07656831b2290764b72486d..afaafab4e882328554ac4e8f5e65dd60c75245d0 100644 |
| --- a/webkit/renderer/media/android/webmediaplayer_android.cc |
| +++ b/webkit/renderer/media/android/webmediaplayer_android.cc |
| @@ -123,8 +123,7 @@ void WebMediaPlayerAndroid::load(const WebURL& url, CORSMode cors_mode) { |
| void WebMediaPlayerAndroid::load(const WebURL& url, |
| WebMediaSource* media_source, |
| CORSMode cors_mode) { |
| - if (cors_mode != CORSModeUnspecified) |
| - NOTIMPLEMENTED() << "No CORS support"; |
| + url_ = url; |
| if (media_source) { |
| media_source_delegate_.reset( |
| @@ -135,22 +134,43 @@ void WebMediaPlayerAndroid::load(const WebURL& url, |
| base::Bind(&WebMediaPlayerAndroid::OnNeedKey, base::Unretained(this)), |
| base::Bind(&WebMediaPlayerAndroid::UpdateNetworkState, |
| base::Unretained(this))); |
| + InitializeProxy(true); |
| + } else { |
| + info_loader_.reset( |
| + new MediaInfoLoaderAndroid( |
| + url_, |
| + cors_mode, |
| + base::Bind(&WebMediaPlayerAndroid::DidLoadMediaInfo, |
| + base::Unretained(this)))); |
| + info_loader_->Start(frame_); |
| } |
| - url_ = url; |
| + UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); |
| + UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
| +} |
| + |
| +void WebMediaPlayerAndroid::DidLoadMediaInfo( |
| + MediaInfoLoaderAndroid::Status status) { |
| + DCHECK(!media_source_delegate_); |
| + if (status == MediaInfoLoaderAndroid::kFailed) { |
| + info_loader_.reset(); |
| + return; |
| + } |
| + |
| + InitializeProxy(false); |
| +} |
| + |
| +void WebMediaPlayerAndroid::InitializeProxy(bool is_media_source) { |
| GURL first_party_url = frame_->document().firstPartyForCookies(); |
| if (proxy_) { |
| - proxy_->Initialize(player_id_, url_, media_source != NULL, first_party_url); |
| + proxy_->Initialize(player_id_, url_, is_media_source, first_party_url); |
| if (manager_->IsInFullscreen(frame_)) |
| proxy_->EnterFullscreen(player_id_); |
| } |
| - |
| - UpdateNetworkState(WebMediaPlayer::NetworkStateLoading); |
| - UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
| } |
| void WebMediaPlayerAndroid::cancelLoad() { |
| - NOTIMPLEMENTED(); |
| + info_loader_.reset(); |
| } |
| void WebMediaPlayerAndroid::play() { |
| @@ -344,14 +364,14 @@ bool WebMediaPlayerAndroid::copyVideoTextureToPlatformTexture( |
| } |
| bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { |
| - // TODO(qinmin): fix this for urls that are not file. |
| - // https://code.google.com/p/chromium/issues/detail?id=234710 |
| - if (url_.SchemeIsFile()) |
| - return true; |
| + if (info_loader_) |
| + return info_loader_->HasSingleOrigin(); |
| return false; |
|
Ken Russell (switch to Gerrit)
2013/06/05 18:33:50
Should this return true? WebMediaPlayerImpl::hasSi
Sami
2013/06/06 12:29:48
This path is reached when we're playing from a med
|
| } |
| bool WebMediaPlayerAndroid::didPassCORSAccessCheck() const { |
| + if (info_loader_) |
| + return info_loader_->DidPassCORSAccessCheck(); |
| return false; |
| } |