| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file contains an implementation of the ResourceLoaderBridge class. | 5 // This file contains an implementation of the ResourceLoaderBridge class. |
| 6 // The class is implemented using net::URLRequest, meaning it is a "simple" | 6 // The class is implemented using net::URLRequest, meaning it is a "simple" |
| 7 // version that directly issues requests. The more complicated one used in the | 7 // version that directly issues requests. The more complicated one used in the |
| 8 // browser uses IPC. | 8 // browser uses IPC. |
| 9 // | 9 // |
| 10 // Because net::URLRequest only provides an asynchronous resource loading API, | 10 // Because net::URLRequest only provides an asynchronous resource loading API, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 #include "net/url_request/url_request_job.h" | 62 #include "net/url_request/url_request_job.h" |
| 63 #include "webkit/appcache/appcache_interfaces.h" | 63 #include "webkit/appcache/appcache_interfaces.h" |
| 64 #include "webkit/blob/blob_storage_controller.h" | 64 #include "webkit/blob/blob_storage_controller.h" |
| 65 #include "webkit/blob/blob_url_request_job.h" | 65 #include "webkit/blob/blob_url_request_job.h" |
| 66 #include "webkit/blob/shareable_file_reference.h" | 66 #include "webkit/blob/shareable_file_reference.h" |
| 67 #include "webkit/fileapi/file_system_context.h" | 67 #include "webkit/fileapi/file_system_context.h" |
| 68 #include "webkit/fileapi/file_system_dir_url_request_job.h" | 68 #include "webkit/fileapi/file_system_dir_url_request_job.h" |
| 69 #include "webkit/fileapi/file_system_url_request_job.h" | 69 #include "webkit/fileapi/file_system_url_request_job.h" |
| 70 #include "webkit/glue/resource_loader_bridge.h" | 70 #include "webkit/glue/resource_loader_bridge.h" |
| 71 #include "webkit/glue/webkit_glue.h" | 71 #include "webkit/glue/webkit_glue.h" |
| 72 #include "webkit/glue/webupload_data.h" |
| 72 #include "webkit/tools/test_shell/simple_appcache_system.h" | 73 #include "webkit/tools/test_shell/simple_appcache_system.h" |
| 73 #include "webkit/tools/test_shell/simple_file_system.h" | 74 #include "webkit/tools/test_shell/simple_file_system.h" |
| 74 #include "webkit/tools/test_shell/simple_file_writer.h" | 75 #include "webkit/tools/test_shell/simple_file_writer.h" |
| 75 #include "webkit/tools/test_shell/simple_socket_stream_bridge.h" | 76 #include "webkit/tools/test_shell/simple_socket_stream_bridge.h" |
| 76 #include "webkit/tools/test_shell/test_shell_request_context.h" | 77 #include "webkit/tools/test_shell/test_shell_request_context.h" |
| 77 #include "webkit/tools/test_shell/test_shell_webblobregistry_impl.h" | 78 #include "webkit/tools/test_shell/test_shell_webblobregistry_impl.h" |
| 78 | 79 |
| 79 #if defined(OS_MACOSX) || defined(OS_WIN) | 80 #if defined(OS_MACOSX) || defined(OS_WIN) |
| 80 #include "crypto/nss_util.h" | 81 #include "crypto/nss_util.h" |
| 81 #endif | 82 #endif |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 std::string method; | 273 std::string method; |
| 273 GURL url; | 274 GURL url; |
| 274 GURL first_party_for_cookies; | 275 GURL first_party_for_cookies; |
| 275 GURL referrer; | 276 GURL referrer; |
| 276 WebKit::WebReferrerPolicy referrer_policy; | 277 WebKit::WebReferrerPolicy referrer_policy; |
| 277 std::string headers; | 278 std::string headers; |
| 278 int load_flags; | 279 int load_flags; |
| 279 ResourceType::Type request_type; | 280 ResourceType::Type request_type; |
| 280 int appcache_host_id; | 281 int appcache_host_id; |
| 281 bool download_to_file; | 282 bool download_to_file; |
| 282 scoped_refptr<net::UploadData> upload; | 283 scoped_refptr<WebUploadData> upload; |
| 283 }; | 284 }; |
| 284 | 285 |
| 285 // The interval for calls to RequestProxy::MaybeUpdateUploadProgress | 286 // The interval for calls to RequestProxy::MaybeUpdateUploadProgress |
| 286 static const int kUpdateUploadProgressIntervalMsec = 100; | 287 static const int kUpdateUploadProgressIntervalMsec = 100; |
| 287 | 288 |
| 288 // The RequestProxy does most of its work on the IO thread. The Start and | 289 // The RequestProxy does most of its work on the IO thread. The Start and |
| 289 // Cancel methods are proxied over to the IO thread, where an net::URLRequest | 290 // Cancel methods are proxied over to the IO thread, where an net::URLRequest |
| 290 // object is instantiated. | 291 // object is instantiated. |
| 291 struct DeleteOnIOThread; // See below. | 292 struct DeleteOnIOThread; // See below. |
| 292 class RequestProxy | 293 class RequestProxy |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 request_.reset(new net::URLRequest(params->url, this, g_request_context)); | 425 request_.reset(new net::URLRequest(params->url, this, g_request_context)); |
| 425 request_->set_method(params->method); | 426 request_->set_method(params->method); |
| 426 request_->set_first_party_for_cookies(params->first_party_for_cookies); | 427 request_->set_first_party_for_cookies(params->first_party_for_cookies); |
| 427 request_->set_referrer(params->referrer.spec()); | 428 request_->set_referrer(params->referrer.spec()); |
| 428 webkit_glue::ConfigureURLRequestForReferrerPolicy( | 429 webkit_glue::ConfigureURLRequestForReferrerPolicy( |
| 429 request_.get(), params->referrer_policy); | 430 request_.get(), params->referrer_policy); |
| 430 net::HttpRequestHeaders headers; | 431 net::HttpRequestHeaders headers; |
| 431 headers.AddHeadersFromString(params->headers); | 432 headers.AddHeadersFromString(params->headers); |
| 432 request_->SetExtraRequestHeaders(headers); | 433 request_->SetExtraRequestHeaders(headers); |
| 433 request_->set_load_flags(params->load_flags); | 434 request_->set_load_flags(params->load_flags); |
| 434 request_->set_upload(params->upload.get()); | 435 scoped_refptr<net::UploadData> upload = new net::UploadData; |
| 436 params->upload->PopulateUploadData(upload.get()); |
| 437 request_->set_upload(upload); |
| 435 SimpleAppCacheSystem::SetExtraRequestInfo( | 438 SimpleAppCacheSystem::SetExtraRequestInfo( |
| 436 request_.get(), params->appcache_host_id, params->request_type); | 439 request_.get(), params->appcache_host_id, params->request_type); |
| 437 | 440 |
| 438 download_to_file_ = params->download_to_file; | 441 download_to_file_ = params->download_to_file; |
| 439 if (download_to_file_) { | 442 if (download_to_file_) { |
| 440 FilePath path; | 443 FilePath path; |
| 441 if (file_util::CreateTemporaryFile(&path)) { | 444 if (file_util::CreateTemporaryFile(&path)) { |
| 442 downloaded_file_ = ShareableFileReference::GetOrCreate( | 445 downloaded_file_ = ShareableFileReference::GetOrCreate( |
| 443 path, ShareableFileReference::DELETE_ON_FINAL_RELEASE, | 446 path, ShareableFileReference::DELETE_ON_FINAL_RELEASE, |
| 444 base::MessageLoopProxy::current()); | 447 base::MessageLoopProxy::current()); |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 g_io_thread->message_loop()->ReleaseSoon(FROM_HERE, proxy_); | 873 g_io_thread->message_loop()->ReleaseSoon(FROM_HERE, proxy_); |
| 871 } | 874 } |
| 872 } | 875 } |
| 873 | 876 |
| 874 // -------------------------------------------------------------------------- | 877 // -------------------------------------------------------------------------- |
| 875 // ResourceLoaderBridge implementation: | 878 // ResourceLoaderBridge implementation: |
| 876 | 879 |
| 877 virtual void AppendDataToUpload(const char* data, int data_len) { | 880 virtual void AppendDataToUpload(const char* data, int data_len) { |
| 878 DCHECK(params_.get()); | 881 DCHECK(params_.get()); |
| 879 if (!params_->upload) | 882 if (!params_->upload) |
| 880 params_->upload = new net::UploadData(); | 883 params_->upload = new WebUploadData(); |
| 881 params_->upload->AppendBytes(data, data_len); | 884 params_->upload->AppendBytes(data, data_len); |
| 882 } | 885 } |
| 883 | 886 |
| 884 virtual void AppendFileRangeToUpload( | 887 virtual void AppendFileRangeToUpload( |
| 885 const FilePath& file_path, | 888 const FilePath& file_path, |
| 886 uint64 offset, | 889 uint64 offset, |
| 887 uint64 length, | 890 uint64 length, |
| 888 const base::Time& expected_modification_time) { | 891 const base::Time& expected_modification_time) { |
| 889 DCHECK(params_.get()); | 892 DCHECK(params_.get()); |
| 890 if (!params_->upload) | 893 if (!params_->upload) |
| 891 params_->upload = new net::UploadData(); | 894 params_->upload = new WebUploadData(); |
| 892 params_->upload->AppendFileRange(file_path, offset, length, | 895 params_->upload->AppendFileRange(file_path, offset, length, |
| 893 expected_modification_time); | 896 expected_modification_time); |
| 894 } | 897 } |
| 895 | 898 |
| 896 virtual void AppendBlobToUpload(const GURL& blob_url) { | 899 virtual void AppendBlobToUpload(const GURL& blob_url) { |
| 897 DCHECK(params_.get()); | 900 DCHECK(params_.get()); |
| 898 if (!params_->upload) | 901 if (!params_->upload) |
| 899 params_->upload = new net::UploadData(); | 902 params_->upload = new WebUploadData(); |
| 900 params_->upload->AppendBlob(blob_url); | 903 params_->upload->AppendBlob(blob_url); |
| 901 } | 904 } |
| 902 | 905 |
| 903 virtual void SetUploadIdentifier(int64 identifier) { | 906 virtual void SetUploadIdentifier(int64 identifier) { |
| 904 DCHECK(params_.get()); | 907 DCHECK(params_.get()); |
| 905 if (!params_->upload) | 908 if (!params_->upload) |
| 906 params_->upload = new net::UploadData(); | 909 params_->upload = new WebUploadData(); |
| 907 params_->upload->set_identifier(identifier); | 910 params_->upload->set_identifier(identifier); |
| 908 } | 911 } |
| 909 | 912 |
| 910 virtual bool Start(Peer* peer) { | 913 virtual bool Start(Peer* peer) { |
| 911 DCHECK(!proxy_); | 914 DCHECK(!proxy_); |
| 912 | 915 |
| 913 if (!SimpleResourceLoaderBridge::EnsureIOThread()) | 916 if (!SimpleResourceLoaderBridge::EnsureIOThread()) |
| 914 return false; | 917 return false; |
| 915 | 918 |
| 916 proxy_ = new RequestProxy(); | 919 proxy_ = new RequestProxy(); |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 (http_prefix.SchemeIs("http") || http_prefix.SchemeIs("https"))); | 1137 (http_prefix.SchemeIs("http") || http_prefix.SchemeIs("https"))); |
| 1135 g_file_over_http_params = new FileOverHTTPParams(file_path_template, | 1138 g_file_over_http_params = new FileOverHTTPParams(file_path_template, |
| 1136 http_prefix); | 1139 http_prefix); |
| 1137 } | 1140 } |
| 1138 | 1141 |
| 1139 // static | 1142 // static |
| 1140 webkit_glue::ResourceLoaderBridge* SimpleResourceLoaderBridge::Create( | 1143 webkit_glue::ResourceLoaderBridge* SimpleResourceLoaderBridge::Create( |
| 1141 const webkit_glue::ResourceLoaderBridge::RequestInfo& request_info) { | 1144 const webkit_glue::ResourceLoaderBridge::RequestInfo& request_info) { |
| 1142 return new ResourceLoaderBridgeImpl(request_info); | 1145 return new ResourceLoaderBridgeImpl(request_info); |
| 1143 } | 1146 } |
| OLD | NEW |