| 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
|
|
|