summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authorfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-07 04:00:01 +0000
committerfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-07 04:00:01 +0000
commit3fe2711ac85390463118abb5fd91e66ff12c6a9b (patch)
tree6f570ca50b2119341bd81d240acac3d4dc930be3 /webkit/media
parentbe69a96b15059a4fc79c17437ba12b72c1935d1f (diff)
downloadchromium_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.cc4
-rw-r--r--webkit/media/android/webmediaplayer_android.h1
-rw-r--r--webkit/media/buffered_data_source.cc4
-rw-r--r--webkit/media/buffered_data_source.h3
-rw-r--r--webkit/media/buffered_resource_loader.cc6
-rw-r--r--webkit/media/buffered_resource_loader.h4
-rw-r--r--webkit/media/webmediaplayer_impl.cc4
-rw-r--r--webkit/media/webmediaplayer_impl.h1
-rw-r--r--webkit/media/webmediaplayer_proxy.cc7
-rw-r--r--webkit/media/webmediaplayer_proxy.h2
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.