| Index: webkit/glue/media/simple_data_source.cc
|
| ===================================================================
|
| --- webkit/glue/media/simple_data_source.cc (revision 68125)
|
| +++ webkit/glue/media/simple_data_source.cc (working copy)
|
| @@ -7,10 +7,10 @@
|
| #include "media/base/filter_host.h"
|
| #include "net/base/load_flags.h"
|
| #include "net/base/data_url.h"
|
| +#include "net/http/http_response_headers.h"
|
| #include "net/url_request/url_request_status.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebKit.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebKitClient.h"
|
| #include "webkit/glue/media/simple_data_source.h"
|
| +#include "webkit/glue/resource_loader_bridge.h"
|
| #include "webkit/glue/webkit_glue.h"
|
|
|
| namespace {
|
| @@ -30,13 +30,12 @@
|
|
|
| SimpleDataSource::SimpleDataSource(
|
| MessageLoop* render_loop,
|
| - WebKit::WebFrame* frame)
|
| + webkit_glue::MediaResourceLoaderBridgeFactory* bridge_factory)
|
| : render_loop_(render_loop),
|
| - frame_(frame),
|
| + bridge_factory_(bridge_factory),
|
| size_(-1),
|
| single_origin_(true),
|
| - state_(UNINITIALIZED),
|
| - keep_test_loader_(false) {
|
| + state_(UNINITIALIZED) {
|
| DCHECK(render_loop);
|
| }
|
|
|
| @@ -109,59 +108,34 @@
|
| return false;
|
| }
|
|
|
| -void SimpleDataSource::SetURLLoaderForTest(WebKit::WebURLLoader* mock_loader) {
|
| - url_loader_.reset(mock_loader);
|
| - keep_test_loader_ = true;
|
| -}
|
| -
|
| -void SimpleDataSource::willSendRequest(
|
| - WebKit::WebURLLoader* loader,
|
| - WebKit::WebURLRequest& newRequest,
|
| - const WebKit::WebURLResponse& redirectResponse) {
|
| +bool SimpleDataSource::OnReceivedRedirect(
|
| + const GURL& new_url,
|
| + const webkit_glue::ResourceResponseInfo& info,
|
| + bool* has_new_first_party_for_cookies,
|
| + GURL* new_first_party_for_cookies) {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| - single_origin_ = url_.GetOrigin() == GURL(newRequest.url()).GetOrigin();
|
| + single_origin_ = url_.GetOrigin() == new_url.GetOrigin();
|
|
|
| - url_ = newRequest.url();
|
| + // TODO(wtc): should we return a new first party for cookies URL?
|
| + *has_new_first_party_for_cookies = false;
|
| + return true;
|
| }
|
|
|
| -void SimpleDataSource::didSendData(
|
| - WebKit::WebURLLoader* loader,
|
| - unsigned long long bytesSent,
|
| - unsigned long long totalBytesToBeSent) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void SimpleDataSource::didReceiveResponse(
|
| - WebKit::WebURLLoader* loader,
|
| - const WebKit::WebURLResponse& response) {
|
| +void SimpleDataSource::OnReceivedResponse(
|
| + const webkit_glue::ResourceResponseInfo& info,
|
| + bool content_filtered) {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| - size_ = response.expectedContentLength();
|
| + size_ = info.content_length;
|
| }
|
|
|
| -void SimpleDataSource::didDownloadData(
|
| - WebKit::WebURLLoader* loader,
|
| - int dataLength) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void SimpleDataSource::didReceiveData(
|
| - WebKit::WebURLLoader* loader,
|
| - const char* data,
|
| - int data_length) {
|
| +void SimpleDataSource::OnReceivedData(const char* data, int len) {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| - data_.append(data, data_length);
|
| + data_.append(data, len);
|
| }
|
|
|
| -void SimpleDataSource::didReceiveCachedMetadata(
|
| - WebKit::WebURLLoader* loader,
|
| - const char* data,
|
| - int dataLength) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void SimpleDataSource::didFinishLoading(
|
| - WebKit::WebURLLoader* loader,
|
| - double finishTime) {
|
| +void SimpleDataSource::OnCompletedRequest(const URLRequestStatus& status,
|
| + const std::string& security_info,
|
| + const base::Time& completion_time) {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| AutoLock auto_lock(lock_);
|
| // It's possible this gets called after Stop(), in which case |host_| is no
|
| @@ -169,8 +143,10 @@
|
| if (state_ == STOPPED)
|
| return;
|
|
|
| - // Otherwise we should be initializing and have created a WebURLLoader.
|
| + // Otherwise we should be initializing and have created a bridge.
|
| DCHECK_EQ(state_, INITIALIZING);
|
| + DCHECK(bridge_.get());
|
| + bridge_.reset();
|
|
|
| // If we don't get a content length or the request has failed, report it
|
| // as a network error.
|
| @@ -178,31 +154,9 @@
|
| size_ = data_.length();
|
| DCHECK(static_cast<size_t>(size_) == data_.length());
|
|
|
| - DoneInitialization_Locked(true);
|
| + DoneInitialization_Locked(status.is_success());
|
| }
|
|
|
| -void SimpleDataSource::didFail(
|
| - WebKit::WebURLLoader* loader,
|
| - const WebKit::WebURLError& error) {
|
| - DCHECK(MessageLoop::current() == render_loop_);
|
| - AutoLock auto_lock(lock_);
|
| - // It's possible this gets called after Stop(), in which case |host_| is no
|
| - // longer valid.
|
| - if (state_ == STOPPED)
|
| - return;
|
| -
|
| - // Otherwise we should be initializing and have created a WebURLLoader.
|
| - DCHECK_EQ(state_, INITIALIZING);
|
| -
|
| - // If we don't get a content length or the request has failed, report it
|
| - // as a network error.
|
| - if (size_ == -1)
|
| - size_ = data_.length();
|
| - DCHECK(static_cast<size_t>(size_) == data_.length());
|
| -
|
| - DoneInitialization_Locked(false);
|
| -}
|
| -
|
| bool SimpleDataSource::HasSingleOrigin() {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| return single_origin_;
|
| @@ -210,7 +164,7 @@
|
|
|
| void SimpleDataSource::Abort() {
|
| DCHECK(MessageLoop::current() == render_loop_);
|
| - frame_ = NULL;
|
| + NOTIMPLEMENTED();
|
| }
|
|
|
| void SimpleDataSource::SetURL(const GURL& url) {
|
| @@ -229,8 +183,6 @@
|
| if (state_ == STOPPED)
|
| return;
|
|
|
| - CHECK(frame_);
|
| -
|
| DCHECK_EQ(state_, INITIALIZING);
|
|
|
| if (IsDataProtocol(url_)) {
|
| @@ -242,19 +194,10 @@
|
| size_ = data_.length();
|
| DoneInitialization_Locked(success);
|
| } else {
|
| - // Prepare the request.
|
| - WebKit::WebURLRequest request(url_);
|
| -
|
| - frame_->setReferrerForRequest(request, WebKit::WebURL());
|
| - // TODO(annacc): we should be using createAssociatedURLLoader() instead?
|
| - frame_->dispatchWillSendRequest(request);
|
| -
|
| - // This flag is for unittests as we don't want to reset |url_loader|
|
| - if (!keep_test_loader_)
|
| - url_loader_.reset(WebKit::webKitClient()->createURLLoader());
|
| -
|
| - // Start the resource loading.
|
| - url_loader_->loadAsynchronously(request, this);
|
| + // Create our bridge and start loading the resource.
|
| + bridge_.reset(bridge_factory_->CreateBridge(
|
| + url_, net::LOAD_BYPASS_CACHE, -1, -1));
|
| + bridge_->Start(this);
|
| }
|
| }
|
|
|
| @@ -264,9 +207,9 @@
|
| DCHECK_EQ(state_, STOPPED);
|
|
|
| // Cancel any pending requests.
|
| - if (url_loader_.get()) {
|
| - url_loader_->cancel();
|
| - url_loader_.reset();
|
| + if (bridge_.get()) {
|
| + bridge_->Cancel();
|
| + bridge_.reset();
|
| }
|
| }
|
|
|
|
|