Index: content/renderer/media/webmediaplayer_impl.cc |
diff --git a/webkit/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc |
similarity index 96% |
rename from webkit/renderer/media/webmediaplayer_impl.cc |
rename to content/renderer/media/webmediaplayer_impl.cc |
index 65fd073d3619dc666c8ea2e2766e1f9cc57bf091..2d16db6a7b1795e68d94242defe54e55579a42b7 100644 |
--- a/webkit/renderer/media/webmediaplayer_impl.cc |
+++ b/content/renderer/media/webmediaplayer_impl.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "webkit/renderer/media/webmediaplayer_impl.h" |
+#include "content/renderer/media/webmediaplayer_impl.h" |
#include <algorithm> |
#include <limits> |
@@ -18,6 +18,15 @@ |
#include "base/strings/string_number_conversions.h" |
#include "base/synchronization/waitable_event.h" |
#include "cc/layers/video_layer.h" |
+#include "content/public/renderer/media_player_load_delegate.h" |
+#include "content/renderer/media/buffered_data_source.h" |
+#include "content/renderer/media/texttrack_impl.h" |
+#include "content/renderer/media/webaudiosourceprovider_impl.h" |
+#include "content/renderer/media/webinbandtexttrack_impl.h" |
+#include "content/renderer/media/webmediaplayer_delegate.h" |
+#include "content/renderer/media/webmediaplayer_params.h" |
+#include "content/renderer/media/webmediaplayer_util.h" |
+#include "content/renderer/media/webmediasourceclient_impl.h" |
#include "gpu/GLES2/gl2extchromium.h" |
#include "media/audio/null_audio_sink.h" |
#include "media/base/bind_to_loop.h" |
@@ -45,15 +54,7 @@ |
#include "v8/include/v8.h" |
#include "webkit/plugins/ppapi/ppapi_webplugin_impl.h" |
#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/texttrack_impl.h" |
-#include "webkit/renderer/media/webaudiosourceprovider_impl.h" |
-#include "webkit/renderer/media/webinbandtexttrack_impl.h" |
-#include "webkit/renderer/media/webmediaplayer_delegate.h" |
-#include "webkit/renderer/media/webmediaplayer_params.h" |
-#include "webkit/renderer/media/webmediaplayer_util.h" |
-#include "webkit/renderer/media/webmediasourceclient_impl.h" |
using WebKit::WebCanvas; |
using WebKit::WebMediaPlayer; |
@@ -61,6 +62,9 @@ using WebKit::WebRect; |
using WebKit::WebSize; |
using WebKit::WebString; |
using media::PipelineStatus; |
+using webkit_media::IsSupportedKeySystem; |
+using webkit_media::KeySystemNameForUMA; |
+using webkit_media::ProxyDecryptor; |
namespace { |
@@ -97,7 +101,7 @@ const double kMaxRate = 16.0; |
const char* kMediaEme = "Media.EME."; |
} // namespace |
-namespace webkit_media { |
+namespace content { |
#define COMPILE_ASSERT_MATCHING_ENUM(name) \ |
COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::CORSMode ## name) == \ |
@@ -138,6 +142,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
pending_seek_(false), |
pending_seek_seconds_(0.0f), |
client_(client), |
+ load_delegate_(params.load_delegate()), |
delegate_(delegate), |
media_log_(params.media_log()), |
accelerated_compositing_reported_(false), |
@@ -242,37 +247,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); |
} |
void WebMediaPlayerImpl::load(const WebKit::WebURL& url, |
WebKit::WebMediaSource* media_source, |
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 +280,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() { |
@@ -383,7 +398,7 @@ void WebMediaPlayerImpl::setVolume(double volume) { |
#define COMPILE_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ |
COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ |
- static_cast<int>(webkit_media::chromium_name), \ |
+ static_cast<int>(content::chromium_name), \ |
mismatching_enums) |
COMPILE_ASSERT_MATCHING_ENUM(PreloadNone, NONE); |
COMPILE_ASSERT_MATCHING_ENUM(PreloadMetaData, METADATA); |
@@ -394,7 +409,7 @@ void WebMediaPlayerImpl::setPreload(WebMediaPlayer::Preload preload) { |
DCHECK(main_loop_->BelongsToCurrentThread()); |
if (data_source_) |
- data_source_->SetPreload(static_cast<webkit_media::Preload>(preload)); |
+ data_source_->SetPreload(static_cast<content::Preload>(preload)); |
} |
bool WebMediaPlayerImpl::hasVideo() const { |
@@ -1223,4 +1238,4 @@ void WebMediaPlayerImpl::FrameReady( |
&WebMediaPlayerImpl::Repaint, AsWeakPtr())); |
} |
-} // namespace webkit_media |
+} // namespace content |