| Index: webkit/plugins/ppapi/ppb_url_loader_impl.cc
|
| ===================================================================
|
| --- webkit/plugins/ppapi/ppb_url_loader_impl.cc (revision 0)
|
| +++ webkit/plugins/ppapi/ppb_url_loader_impl.cc (working copy)
|
| @@ -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/glue/plugins/pepper_url_loader.h"
|
| +#include "webkit/plugins/ppapi/ppb_url_loader_impl.h"
|
|
|
| #include "base/logging.h"
|
| #include "ppapi/c/pp_completion_callback.h"
|
| @@ -20,10 +20,10 @@
|
| #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h"
|
| #include "webkit/appcache/web_application_cache_host_impl.h"
|
| -#include "webkit/glue/plugins/pepper_common.h"
|
| -#include "webkit/glue/plugins/pepper_plugin_instance.h"
|
| -#include "webkit/glue/plugins/pepper_url_request_info.h"
|
| -#include "webkit/glue/plugins/pepper_url_response_info.h"
|
| +#include "webkit/plugins/ppapi/common.h"
|
| +#include "webkit/plugins/ppapi/plugin_instance.h"
|
| +#include "webkit/plugins/ppapi/ppb_url_request_info_impl.h"
|
| +#include "webkit/plugins/ppapi/ppb_url_response_info_impl.h"
|
|
|
| using appcache::WebApplicationCacheHostImpl;
|
| using WebKit::WebFrame;
|
| @@ -39,7 +39,8 @@
|
| #pragma warning(disable : 4996)
|
| #endif
|
|
|
| -namespace pepper {
|
| +namespace webkit {
|
| +namespace ppapi {
|
|
|
| namespace {
|
|
|
| @@ -48,23 +49,24 @@
|
| if (!instance)
|
| return 0;
|
|
|
| - URLLoader* loader = new URLLoader(instance, false);
|
| + PPB_URLLoader_Impl* loader = new PPB_URLLoader_Impl(instance, false);
|
| return loader->GetReference();
|
| }
|
|
|
| PP_Bool IsURLLoader(PP_Resource resource) {
|
| - return BoolToPPBool(!!Resource::GetAs<URLLoader>(resource));
|
| + return BoolToPPBool(!!Resource::GetAs<PPB_URLLoader_Impl>(resource));
|
| }
|
|
|
| int32_t Open(PP_Resource loader_id,
|
| PP_Resource request_id,
|
| PP_CompletionCallback callback) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_ERROR_BADRESOURCE;
|
|
|
| - scoped_refptr<URLRequestInfo> request(
|
| - Resource::GetAs<URLRequestInfo>(request_id));
|
| + scoped_refptr<PPB_URLRequestInfo_Impl> request(
|
| + Resource::GetAs<PPB_URLRequestInfo_Impl>(request_id));
|
| if (!request)
|
| return PP_ERROR_BADRESOURCE;
|
|
|
| @@ -73,7 +75,8 @@
|
|
|
| int32_t FollowRedirect(PP_Resource loader_id,
|
| PP_CompletionCallback callback) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_ERROR_BADRESOURCE;
|
|
|
| @@ -81,9 +84,10 @@
|
| }
|
|
|
| PP_Bool GetUploadProgress(PP_Resource loader_id,
|
| - int64_t* bytes_sent,
|
| - int64_t* total_bytes_to_be_sent) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + int64_t* bytes_sent,
|
| + int64_t* total_bytes_to_be_sent) {
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_FALSE;
|
|
|
| @@ -94,7 +98,8 @@
|
| PP_Bool GetDownloadProgress(PP_Resource loader_id,
|
| int64_t* bytes_received,
|
| int64_t* total_bytes_to_be_received) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_FALSE;
|
|
|
| @@ -103,11 +108,12 @@
|
| }
|
|
|
| PP_Resource GetResponseInfo(PP_Resource loader_id) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return 0;
|
|
|
| - URLResponseInfo* response_info = loader->response_info();
|
| + PPB_URLResponseInfo_Impl* response_info = loader->response_info();
|
| if (!response_info)
|
| return 0;
|
|
|
| @@ -118,7 +124,8 @@
|
| char* buffer,
|
| int32_t bytes_to_read,
|
| PP_CompletionCallback callback) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_ERROR_BADRESOURCE;
|
|
|
| @@ -127,7 +134,8 @@
|
|
|
| int32_t FinishStreamingToFile(PP_Resource loader_id,
|
| PP_CompletionCallback callback) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return PP_ERROR_BADRESOURCE;
|
|
|
| @@ -135,7 +143,8 @@
|
| }
|
|
|
| void Close(PP_Resource loader_id) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return;
|
|
|
| @@ -156,7 +165,8 @@
|
| };
|
|
|
| void GrantUniversalAccess(PP_Resource loader_id) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return;
|
|
|
| @@ -165,7 +175,8 @@
|
|
|
| void SetStatusCallback(PP_Resource loader_id,
|
| PP_URLLoaderTrusted_StatusCallback cb) {
|
| - scoped_refptr<URLLoader> loader(Resource::GetAs<URLLoader>(loader_id));
|
| + scoped_refptr<PPB_URLLoader_Impl> loader(
|
| + Resource::GetAs<PPB_URLLoader_Impl>(loader_id));
|
| if (!loader)
|
| return;
|
| loader->SetStatusCallback(cb);
|
| @@ -182,7 +193,8 @@
|
|
|
| } // namespace
|
|
|
| -URLLoader::URLLoader(PluginInstance* instance, bool main_document_loader)
|
| +PPB_URLLoader_Impl::PPB_URLLoader_Impl(PluginInstance* instance,
|
| + bool main_document_loader)
|
| : Resource(instance->module()),
|
| instance_(instance),
|
| main_document_loader_(main_document_loader),
|
| @@ -199,27 +211,27 @@
|
| instance->AddObserver(this);
|
| }
|
|
|
| -URLLoader::~URLLoader() {
|
| +PPB_URLLoader_Impl::~PPB_URLLoader_Impl() {
|
| if (instance_)
|
| instance_->RemoveObserver(this);
|
| }
|
|
|
| // static
|
| -const PPB_URLLoader* URLLoader::GetInterface() {
|
| +const PPB_URLLoader* PPB_URLLoader_Impl::GetInterface() {
|
| return &ppb_urlloader;
|
| }
|
|
|
| // static
|
| -const PPB_URLLoaderTrusted* URLLoader::GetTrustedInterface() {
|
| +const PPB_URLLoaderTrusted* PPB_URLLoader_Impl::GetTrustedInterface() {
|
| return &ppb_urlloadertrusted;
|
| }
|
|
|
| -URLLoader* URLLoader::AsURLLoader() {
|
| +PPB_URLLoader_Impl* PPB_URLLoader_Impl::AsPPB_URLLoader_Impl() {
|
| return this;
|
| }
|
|
|
| -int32_t URLLoader::Open(URLRequestInfo* request,
|
| - PP_CompletionCallback callback) {
|
| +int32_t PPB_URLLoader_Impl::Open(PPB_URLRequestInfo_Impl* request,
|
| + PP_CompletionCallback callback) {
|
| if (loader_.get())
|
| return PP_ERROR_INPROGRESS;
|
|
|
| @@ -250,14 +262,14 @@
|
|
|
| loader_->loadAsynchronously(web_request, this);
|
|
|
| - request_info_ = scoped_refptr<URLRequestInfo>(request);
|
| + request_info_ = scoped_refptr<PPB_URLRequestInfo_Impl>(request);
|
| pending_callback_ = callback;
|
|
|
| // Notify completion when we receive a redirect or response headers.
|
| return PP_ERROR_WOULDBLOCK;
|
| }
|
|
|
| -int32_t URLLoader::FollowRedirect(PP_CompletionCallback callback) {
|
| +int32_t PPB_URLLoader_Impl::FollowRedirect(PP_CompletionCallback callback) {
|
| if (pending_callback_.func)
|
| return PP_ERROR_INPROGRESS;
|
|
|
| @@ -276,8 +288,8 @@
|
| return PP_ERROR_WOULDBLOCK;
|
| }
|
|
|
| -bool URLLoader::GetUploadProgress(int64_t* bytes_sent,
|
| - int64_t* total_bytes_to_be_sent) {
|
| +bool PPB_URLLoader_Impl::GetUploadProgress(int64_t* bytes_sent,
|
| + int64_t* total_bytes_to_be_sent) {
|
| if (!RecordUploadProgress()) {
|
| *bytes_sent = 0;
|
| *total_bytes_to_be_sent = 0;
|
| @@ -288,8 +300,9 @@
|
| return true;
|
| }
|
|
|
| -bool URLLoader::GetDownloadProgress(int64_t* bytes_received,
|
| - int64_t* total_bytes_to_be_received) {
|
| +bool PPB_URLLoader_Impl::GetDownloadProgress(
|
| + int64_t* bytes_received,
|
| + int64_t* total_bytes_to_be_received) {
|
| if (!RecordDownloadProgress()) {
|
| *bytes_received = 0;
|
| *total_bytes_to_be_received = 0;
|
| @@ -300,8 +313,9 @@
|
| return true;
|
| }
|
|
|
| -int32_t URLLoader::ReadResponseBody(char* buffer, int32_t bytes_to_read,
|
| - PP_CompletionCallback callback) {
|
| +int32_t PPB_URLLoader_Impl::ReadResponseBody(char* buffer,
|
| + int32_t bytes_to_read,
|
| + PP_CompletionCallback callback) {
|
| if (!response_info_ || response_info_->body())
|
| return PP_ERROR_FAILED;
|
| if (bytes_to_read <= 0 || !buffer)
|
| @@ -330,7 +344,8 @@
|
| return PP_ERROR_WOULDBLOCK;
|
| }
|
|
|
| -int32_t URLLoader::FinishStreamingToFile(PP_CompletionCallback callback) {
|
| +int32_t PPB_URLLoader_Impl::FinishStreamingToFile(
|
| + PP_CompletionCallback callback) {
|
| if (!response_info_ || !response_info_->body())
|
| return PP_ERROR_FAILED;
|
| if (pending_callback_.func)
|
| @@ -345,7 +360,7 @@
|
| return PP_ERROR_WOULDBLOCK;
|
| }
|
|
|
| -void URLLoader::Close() {
|
| +void PPB_URLLoader_Impl::Close() {
|
| if (loader_.get()) {
|
| loader_->cancel();
|
| } else if (main_document_loader_) {
|
| @@ -354,17 +369,19 @@
|
| }
|
| }
|
|
|
| -void URLLoader::GrantUniversalAccess() {
|
| +void PPB_URLLoader_Impl::GrantUniversalAccess() {
|
| has_universal_access_ = true;
|
| }
|
|
|
| -void URLLoader::SetStatusCallback(PP_URLLoaderTrusted_StatusCallback cb) {
|
| +void PPB_URLLoader_Impl::SetStatusCallback(
|
| + PP_URLLoaderTrusted_StatusCallback cb) {
|
| status_callback_ = cb;
|
| }
|
|
|
| -void URLLoader::willSendRequest(WebURLLoader* loader,
|
| - WebURLRequest& new_request,
|
| - const WebURLResponse& redirect_response) {
|
| +void PPB_URLLoader_Impl::willSendRequest(
|
| + WebURLLoader* loader,
|
| + WebURLRequest& new_request,
|
| + const WebURLResponse& redirect_response) {
|
| if (!request_info_->follow_redirects()) {
|
| SaveResponse(redirect_response);
|
| loader_->setDefersLoading(true);
|
| @@ -378,17 +395,18 @@
|
| }
|
| }
|
|
|
| -void URLLoader::didSendData(WebURLLoader* loader,
|
| - unsigned long long bytes_sent,
|
| - unsigned long long total_bytes_to_be_sent) {
|
| +void PPB_URLLoader_Impl::didSendData(
|
| + WebURLLoader* loader,
|
| + unsigned long long bytes_sent,
|
| + unsigned long long total_bytes_to_be_sent) {
|
| // TODO(darin): Bounds check input?
|
| bytes_sent_ = static_cast<int64_t>(bytes_sent);
|
| total_bytes_to_be_sent_ = static_cast<int64_t>(total_bytes_to_be_sent);
|
| UpdateStatus();
|
| }
|
|
|
| -void URLLoader::didReceiveResponse(WebURLLoader* loader,
|
| - const WebURLResponse& response) {
|
| +void PPB_URLLoader_Impl::didReceiveResponse(WebURLLoader* loader,
|
| + const WebURLResponse& response) {
|
| SaveResponse(response);
|
|
|
| // Sets -1 if the content length is unknown.
|
| @@ -398,15 +416,15 @@
|
| RunCallback(PP_OK);
|
| }
|
|
|
| -void URLLoader::didDownloadData(WebURLLoader* loader,
|
| - int data_length) {
|
| +void PPB_URLLoader_Impl::didDownloadData(WebURLLoader* loader,
|
| + int data_length) {
|
| bytes_received_ += data_length;
|
| UpdateStatus();
|
| }
|
|
|
| -void URLLoader::didReceiveData(WebURLLoader* loader,
|
| - const char* data,
|
| - int data_length) {
|
| +void PPB_URLLoader_Impl::didReceiveData(WebURLLoader* loader,
|
| + const char* data,
|
| + int data_length) {
|
| bytes_received_ += data_length;
|
|
|
| buffer_.insert(buffer_.end(), data, data + data_length);
|
| @@ -417,18 +435,20 @@
|
| }
|
| }
|
|
|
| -void URLLoader::didFinishLoading(WebURLLoader* loader, double finish_time) {
|
| +void PPB_URLLoader_Impl::didFinishLoading(WebURLLoader* loader,
|
| + double finish_time) {
|
| done_status_ = PP_OK;
|
| RunCallback(done_status_);
|
| }
|
|
|
| -void URLLoader::didFail(WebURLLoader* loader, const WebURLError& error) {
|
| +void PPB_URLLoader_Impl::didFail(WebURLLoader* loader,
|
| + const WebURLError& error) {
|
| // TODO(darin): Provide more detailed error information.
|
| done_status_ = PP_ERROR_FAILED;
|
| RunCallback(done_status_);
|
| }
|
|
|
| -void URLLoader::InstanceDestroyed(PluginInstance* instance) {
|
| +void PPB_URLLoader_Impl::InstanceDestroyed(PluginInstance* instance) {
|
| // When the instance is destroyed, we force delete any associated loads.
|
| DCHECK(instance == instance_);
|
| instance_ = NULL;
|
| @@ -436,7 +456,7 @@
|
| // Normally the only ref to this class will be from the plugin which
|
| // ForceDeletePluginResourceRefs will free. We don't want our object to be
|
| // deleted out from under us until the function completes.
|
| - scoped_refptr<URLLoader> death_grip(this);
|
| + scoped_refptr<PPB_URLLoader_Impl> death_grip(this);
|
|
|
| // Force delete any plugin refs to us. If the instance is being deleted, we
|
| // don't want to allow the requests to continue to use bandwidth and send us
|
| @@ -462,7 +482,7 @@
|
| // goes out of scope.
|
| }
|
|
|
| -void URLLoader::RunCallback(int32_t result) {
|
| +void PPB_URLLoader_Impl::RunCallback(int32_t result) {
|
| if (!pending_callback_.func)
|
| return;
|
|
|
| @@ -471,7 +491,7 @@
|
| PP_RunCompletionCallback(&callback, result);
|
| }
|
|
|
| -size_t URLLoader::FillUserBuffer() {
|
| +size_t PPB_URLLoader_Impl::FillUserBuffer() {
|
| DCHECK(user_buffer_);
|
| DCHECK(user_buffer_size_);
|
|
|
| @@ -485,14 +505,15 @@
|
| return bytes_to_copy;
|
| }
|
|
|
| -void URLLoader::SaveResponse(const WebKit::WebURLResponse& response) {
|
| - scoped_refptr<URLResponseInfo> response_info(new URLResponseInfo(module()));
|
| +void PPB_URLLoader_Impl::SaveResponse(const WebKit::WebURLResponse& response) {
|
| + scoped_refptr<PPB_URLResponseInfo_Impl> response_info(
|
| + new PPB_URLResponseInfo_Impl(module()));
|
| if (response_info->Initialize(response))
|
| response_info_ = response_info;
|
| }
|
|
|
| // Checks that the client can request the URL. Returns a PPAPI error code.
|
| -int32_t URLLoader::CanRequest(const WebKit::WebFrame* frame,
|
| +int32_t PPB_URLLoader_Impl::CanRequest(const WebKit::WebFrame* frame,
|
| const WebKit::WebURL& url) {
|
| if (!has_universal_access_ &&
|
| !frame->securityOrigin().canRequest(url))
|
| @@ -501,7 +522,7 @@
|
| return PP_OK;
|
| }
|
|
|
| -void URLLoader::UpdateStatus() {
|
| +void PPB_URLLoader_Impl::UpdateStatus() {
|
| if (status_callback_ &&
|
| (RecordDownloadProgress() || RecordUploadProgress())) {
|
| PP_Resource pp_resource = GetReferenceNoAddRef();
|
| @@ -525,12 +546,14 @@
|
| }
|
| }
|
|
|
| -bool URLLoader::RecordDownloadProgress() const {
|
| +bool PPB_URLLoader_Impl::RecordDownloadProgress() const {
|
| return request_info_ && request_info_->record_download_progress();
|
| }
|
|
|
| -bool URLLoader::RecordUploadProgress() const {
|
| +bool PPB_URLLoader_Impl::RecordUploadProgress() const {
|
| return request_info_ && request_info_->record_upload_progress();
|
| }
|
|
|
| -} // namespace pepper
|
| +} // namespace ppapi
|
| +} // namespace webkit
|
| +
|
|
|