diff options
author | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-07 04:00:01 +0000 |
---|---|---|
committer | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-07 04:00:01 +0000 |
commit | 3fe2711ac85390463118abb5fd91e66ff12c6a9b (patch) | |
tree | 6f570ca50b2119341bd81d240acac3d4dc930be3 /webkit/media | |
parent | be69a96b15059a4fc79c17437ba12b72c1935d1f (diff) | |
download | chromium_src-3fe2711ac85390463118abb5fd91e66ff12c6a9b.zip chromium_src-3fe2711ac85390463118abb5fd91e66ff12c6a9b.tar.gz chromium_src-3fe2711ac85390463118abb5fd91e66ff12c6a9b.tar.bz2 |
More prep for CORS support in WebKit/chromium.
BUG=123369
Review URL: https://chromiumcodereview.appspot.com/10536044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140949 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
-rw-r--r-- | webkit/media/android/webmediaplayer_android.cc | 4 | ||||
-rw-r--r-- | webkit/media/android/webmediaplayer_android.h | 1 | ||||
-rw-r--r-- | webkit/media/buffered_data_source.cc | 4 | ||||
-rw-r--r-- | webkit/media/buffered_data_source.h | 3 | ||||
-rw-r--r-- | webkit/media/buffered_resource_loader.cc | 6 | ||||
-rw-r--r-- | webkit/media/buffered_resource_loader.h | 4 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_impl.cc | 4 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_impl.h | 1 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.cc | 7 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.h | 2 |
10 files changed, 36 insertions, 0 deletions
diff --git a/webkit/media/android/webmediaplayer_android.cc b/webkit/media/android/webmediaplayer_android.cc index a0f865e..9ca732f 100644 --- a/webkit/media/android/webmediaplayer_android.cc +++ b/webkit/media/android/webmediaplayer_android.cc @@ -322,6 +322,10 @@ bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { return false; } +bool WebMediaPlayerAndroid::didPassCORSAccessCheck() const { + return false; +} + WebMediaPlayer::MovieLoadType WebMediaPlayerAndroid::movieLoadType() const { // Deprecated. diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h index 2f608ae..28fd84e 100644 --- a/webkit/media/android/webmediaplayer_android.h +++ b/webkit/media/android/webmediaplayer_android.h @@ -102,6 +102,7 @@ class WebMediaPlayerAndroid : virtual WebKit::WebMediaPlayer::ReadyState readyState() const; virtual bool hasSingleSecurityOrigin() const; + virtual bool didPassCORSAccessCheck() const; virtual WebKit::WebMediaPlayer::MovieLoadType movieLoadType() const; virtual float mediaTimeForTimeValue(float timeValue) const; diff --git a/webkit/media/buffered_data_source.cc b/webkit/media/buffered_data_source.cc index 5493959..3193a1c 100644 --- a/webkit/media/buffered_data_source.cc +++ b/webkit/media/buffered_data_source.cc @@ -126,6 +126,10 @@ bool BufferedDataSource::HasSingleOrigin() { return loader_->HasSingleOrigin(); } +bool BufferedDataSource::DidPassCORSAccessCheck() const { + return loader_.get() && loader_->DidPassCORSAccessCheck(); +} + void BufferedDataSource::Abort() { DCHECK(MessageLoop::current() == render_loop_); diff --git a/webkit/media/buffered_data_source.h b/webkit/media/buffered_data_source.h index 7e743d1..f151c5a 100644 --- a/webkit/media/buffered_data_source.h +++ b/webkit/media/buffered_data_source.h @@ -53,6 +53,9 @@ class BufferedDataSource : public media::DataSource { // Method called on the render thread. bool HasSingleOrigin(); + // Returns true if the media resource passed a CORS access control check. + bool DidPassCORSAccessCheck() const; + // Cancels initialization, any pending loaders, and any pending read calls // from the demuxer. The caller is expected to release its reference to this // object and never call it again. diff --git a/webkit/media/buffered_resource_loader.cc b/webkit/media/buffered_resource_loader.cc index 5bff9f0..6de430e 100644 --- a/webkit/media/buffered_resource_loader.cc +++ b/webkit/media/buffered_resource_loader.cc @@ -567,6 +567,12 @@ bool BufferedResourceLoader::HasSingleOrigin() const { return single_origin_; } +bool BufferedResourceLoader::DidPassCORSAccessCheck() const { + DCHECK(start_cb_.is_null()) + << "Start() must complete before calling DidPassCORSAccessCheck()"; + return !loader_failed_ && cors_mode_ != kUnspecified; +} + void BufferedResourceLoader::UpdateDeferStrategy(DeferStrategy strategy) { if (!might_be_reused_from_cache_in_future_ && strategy == kNeverDefer) strategy = kThresholdDefer; diff --git a/webkit/media/buffered_resource_loader.h b/webkit/media/buffered_resource_loader.h index d9fe653..ab9729a 100644 --- a/webkit/media/buffered_resource_loader.h +++ b/webkit/media/buffered_resource_loader.h @@ -175,6 +175,10 @@ class BufferedResourceLoader : public WebKit::WebURLLoaderClient { // Only valid to call after Start() has completed. bool HasSingleOrigin() const; + // Returns true if the media resource passed a CORS access control check. + // Only valid to call after Start() has completed. + bool DidPassCORSAccessCheck() const; + // Sets the defer strategy to the given value unless it seems unwise. // Specifically downgrade kNeverDefer to kThresholdDefer if we know the // current response will not be used to satisfy future requests (the cache diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc index 8e335a6..66a36fa 100644 --- a/webkit/media/webmediaplayer_impl.cc +++ b/webkit/media/webmediaplayer_impl.cc @@ -548,6 +548,10 @@ bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { return true; } +bool WebMediaPlayerImpl::didPassCORSAccessCheck() const { + return proxy_ && proxy_->DidPassCORSAccessCheck(); +} + WebMediaPlayer::MovieLoadType WebMediaPlayerImpl::movieLoadType() const { DCHECK_EQ(main_loop_, MessageLoop::current()); diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h index 7368f3a..fd041ef 100644 --- a/webkit/media/webmediaplayer_impl.h +++ b/webkit/media/webmediaplayer_impl.h @@ -172,6 +172,7 @@ class WebMediaPlayerImpl virtual unsigned long long totalBytes() const; virtual bool hasSingleSecurityOrigin() const; + virtual bool didPassCORSAccessCheck() const; virtual WebKit::WebMediaPlayer::MovieLoadType movieLoadType() const; virtual float mediaTimeForTimeValue(float timeValue) const; diff --git a/webkit/media/webmediaplayer_proxy.cc b/webkit/media/webmediaplayer_proxy.cc index 84d064b..2754206 100644 --- a/webkit/media/webmediaplayer_proxy.cc +++ b/webkit/media/webmediaplayer_proxy.cc @@ -70,6 +70,13 @@ bool WebMediaPlayerProxy::HasSingleOrigin() { return true; } +bool WebMediaPlayerProxy::DidPassCORSAccessCheck() const { + DCHECK(render_loop_->BelongsToCurrentThread()); + if (data_source_) + return data_source_->DidPassCORSAccessCheck(); + return false; +} + void WebMediaPlayerProxy::AbortDataSource() { DCHECK(render_loop_->BelongsToCurrentThread()); if (data_source_) diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h index 12554f2..7d9817a 100644 --- a/webkit/media/webmediaplayer_proxy.h +++ b/webkit/media/webmediaplayer_proxy.h @@ -76,6 +76,8 @@ class WebMediaPlayerProxy void GetCurrentFrame(scoped_refptr<media::VideoFrame>* frame_out); void PutCurrentFrame(scoped_refptr<media::VideoFrame> frame); bool HasSingleOrigin(); + bool DidPassCORSAccessCheck() const; + void AbortDataSource(); // Methods for Pipeline -> WebMediaPlayerImpl communication. |