Chromium Code Reviews| Index: webkit/renderer/media/webmediaplayer_impl.cc |
| diff --git a/webkit/renderer/media/webmediaplayer_impl.cc b/webkit/renderer/media/webmediaplayer_impl.cc |
| index 65fd073d3619dc666c8ea2e2766e1f9cc57bf091..aac0120a5d6cd9429c9dd6b889f61f6f46ca8b4a 100644 |
| --- a/webkit/renderer/media/webmediaplayer_impl.cc |
| +++ b/webkit/renderer/media/webmediaplayer_impl.cc |
| @@ -47,6 +47,7 @@ |
| #include "webkit/renderer/compositor_bindings/web_layer_impl.h" |
| #include "webkit/renderer/media/buffered_data_source.h" |
| #include "webkit/renderer/media/crypto/key_systems.h" |
| +#include "webkit/renderer/media/media_load_delegate.h" |
| #include "webkit/renderer/media/texttrack_impl.h" |
| #include "webkit/renderer/media/webaudiosourceprovider_impl.h" |
| #include "webkit/renderer/media/webinbandtexttrack_impl.h" |
| @@ -139,6 +140,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
| pending_seek_seconds_(0.0f), |
| client_(client), |
| delegate_(delegate), |
| + load_delegate_(params.load_delegate()), |
| media_log_(params.media_log()), |
| accelerated_compositing_reported_(false), |
| incremented_externally_allocated_memory_(false), |
| @@ -242,37 +244,26 @@ URLSchemeForHistogram URLScheme(const GURL& url) { |
| } // anonymous namespace |
| void WebMediaPlayerImpl::load(const WebKit::WebURL& url, CORSMode cors_mode) { |
| - DCHECK(main_loop_->BelongsToCurrentThread()); |
| - |
| - LoadSetup(url); |
| - |
| - // Otherwise it's a regular request which requires resolving the URL first. |
| - GURL gurl(url); |
| - data_source_.reset(new BufferedDataSource( |
| - main_loop_, |
| - frame_, |
| - media_log_.get(), |
| - base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); |
| - data_source_->Initialize( |
| - url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode), |
| - base::Bind( |
| - &WebMediaPlayerImpl::DataSourceInitialized, |
| - AsWeakPtr(), gurl)); |
| - |
| - is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https"); |
| + load(url, NULL, cors_mode); |
|
ddorwin
2013/06/29 01:38:30
overloading not allowed?
scherkus (not reviewing)
2013/07/02 01:46:23
this is an interface defined in WK
AFAIK it's OK
|
| } |
| void WebMediaPlayerImpl::load(const WebKit::WebURL& url, |
| WebKit::WebMediaSource* media_source, |
|
ddorwin
2013/06/29 01:38:30
nit: Should be last parameter? (Fine to change lat
scherkus (not reviewing)
2013/07/02 01:46:23
ditto
|
| CORSMode cors_mode) { |
| - LoadSetup(url); |
| - |
| - // Media source pipelines can start immediately. |
| - supports_save_ = false; |
| - StartPipeline(media_source); |
| + if (load_delegate_) { |
| + load_delegate_->DeferLoad(base::Bind( |
| + &WebMediaPlayerImpl::ContinueLoad, AsWeakPtr(), url, media_source, |
| + cors_mode)); |
| + return; |
| + } |
| + ContinueLoad(url, media_source, cors_mode); |
| } |
| -void WebMediaPlayerImpl::LoadSetup(const WebKit::WebURL& url) { |
| +void WebMediaPlayerImpl::ContinueLoad(const WebKit::WebURL& url, |
| + WebKit::WebMediaSource* media_source, |
| + CORSMode cors_mode) { |
| + DCHECK(main_loop_->BelongsToCurrentThread()); |
| + |
| GURL gurl(url); |
| UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(gurl), kMaxURLScheme); |
| @@ -286,6 +277,27 @@ void WebMediaPlayerImpl::LoadSetup(const WebKit::WebURL& url) { |
| SetNetworkState(WebMediaPlayer::NetworkStateLoading); |
| SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
| media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); |
| + |
| + // Media source pipelines can start immediately. |
| + if (media_source) { |
| + supports_save_ = false; |
| + StartPipeline(media_source); |
| + return; |
| + } |
| + |
| + // Otherwise it's a regular request which requires resolving the URL first. |
| + data_source_.reset(new BufferedDataSource( |
| + main_loop_, |
| + frame_, |
| + media_log_.get(), |
| + base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr()))); |
| + data_source_->Initialize( |
| + url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode), |
| + base::Bind( |
| + &WebMediaPlayerImpl::DataSourceInitialized, |
| + AsWeakPtr(), gurl)); |
| + |
| + is_local_source_ = !gurl.SchemeIs("http") && !gurl.SchemeIs("https"); |
| } |
| void WebMediaPlayerImpl::play() { |