| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // An implementation of WebURLLoader in terms of ResourceLoaderBridge. | 5 // An implementation of WebURLLoader in terms of ResourceLoaderBridge. |
| 6 | 6 |
| 7 #include "content/child/web_url_loader_impl.h" | 7 #include "content/child/web_url_loader_impl.h" |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
| 13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
| 14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 15 #include "content/child/ftp_directory_listing_response_delegate.h" | 15 #include "content/child/ftp_directory_listing_response_delegate.h" |
| 16 #include "content/child/multipart_response_delegate.h" | 16 #include "content/child/multipart_response_delegate.h" |
| 17 #include "content/child/request_extra_data.h" | 17 #include "content/child/request_extra_data.h" |
| 18 #include "content/child/request_info.h" | 18 #include "content/child/request_info.h" |
| 19 #include "content/child/resource_dispatcher.h" | 19 #include "content/child/resource_dispatcher.h" |
| 20 #include "content/child/resource_loader_bridge.h" | 20 #include "content/child/resource_loader_bridge.h" |
| 21 #include "content/child/sync_load_response.h" | 21 #include "content/child/sync_load_response.h" |
| 22 #include "content/child/web_url_request_util.h" | 22 #include "content/child/web_url_request_util.h" |
| 23 #include "content/child/weburlresponse_extradata_impl.h" | 23 #include "content/child/weburlresponse_extradata_impl.h" |
| 24 #include "content/common/resource_request_body.h" | 24 #include "content/common/resource_request_body.h" |
| 25 #include "content/common/service_worker/service_worker_types.h" |
| 25 #include "content/public/child/request_peer.h" | 26 #include "content/public/child/request_peer.h" |
| 26 #include "net/base/data_url.h" | 27 #include "net/base/data_url.h" |
| 27 #include "net/base/filename_util.h" | 28 #include "net/base/filename_util.h" |
| 28 #include "net/base/load_flags.h" | 29 #include "net/base/load_flags.h" |
| 29 #include "net/base/mime_util.h" | 30 #include "net/base/mime_util.h" |
| 30 #include "net/base/net_errors.h" | 31 #include "net/base/net_errors.h" |
| 31 #include "net/http/http_response_headers.h" | 32 #include "net/http/http_response_headers.h" |
| 32 #include "net/http/http_util.h" | 33 #include "net/http/http_util.h" |
| 33 #include "net/url_request/redirect_info.h" | 34 #include "net/url_request/redirect_info.h" |
| 34 #include "net/url_request/url_request_data_job.h" | 35 #include "net/url_request/url_request_data_job.h" |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 info->headers = headers; | 193 info->headers = headers; |
| 193 info->mime_type.swap(mime_type); | 194 info->mime_type.swap(mime_type); |
| 194 info->charset.swap(charset); | 195 info->charset.swap(charset); |
| 195 info->security_info.clear(); | 196 info->security_info.clear(); |
| 196 info->content_length = data->length(); | 197 info->content_length = data->length(); |
| 197 info->encoded_data_length = 0; | 198 info->encoded_data_length = 0; |
| 198 | 199 |
| 199 return net::OK; | 200 return net::OK; |
| 200 } | 201 } |
| 201 | 202 |
| 203 FetchRequestMode GetFetchRequestMode(const WebURLRequest& request) { |
| 204 switch (request.fetchRequestMode()) { |
| 205 case WebURLRequest::FetchRequestModeSameOrigin: |
| 206 return FETCH_REQUEST_MODE_SAME_ORIGIN; |
| 207 case WebURLRequest::FetchRequestModeNoCORS: |
| 208 return FETCH_REQUEST_MODE_NO_CORS; |
| 209 case WebURLRequest::FetchRequestModeCORS: |
| 210 return FETCH_REQUEST_MODE_CORS; |
| 211 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
| 212 return FETCH_REQUEST_MODE_CORS_WITH_FORCED_PREFLIGHT; |
| 213 } |
| 214 NOTREACHED(); |
| 215 return FETCH_REQUEST_MODE_NO_CORS; |
| 216 } |
| 217 |
| 202 } // namespace | 218 } // namespace |
| 203 | 219 |
| 204 // WebURLLoaderImpl::Context -------------------------------------------------- | 220 // WebURLLoaderImpl::Context -------------------------------------------------- |
| 205 | 221 |
| 206 // This inner class exists since the WebURLLoader may be deleted while inside a | 222 // This inner class exists since the WebURLLoader may be deleted while inside a |
| 207 // call to WebURLLoaderClient. Refcounting is to keep the context from being | 223 // call to WebURLLoaderClient. Refcounting is to keep the context from being |
| 208 // deleted if it may have work to do after calling into the client. | 224 // deleted if it may have work to do after calling into the client. |
| 209 class WebURLLoaderImpl::Context : public base::RefCounted<Context>, | 225 class WebURLLoaderImpl::Context : public base::RefCounted<Context>, |
| 210 public RequestPeer { | 226 public RequestPeer { |
| 211 public: | 227 public: |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 // from in-process plugins. | 406 // from in-process plugins. |
| 391 request_info.requestor_pid = request.requestorProcessID(); | 407 request_info.requestor_pid = request.requestorProcessID(); |
| 392 request_info.request_type = WebURLRequestToResourceType(request); | 408 request_info.request_type = WebURLRequestToResourceType(request); |
| 393 request_info.priority = | 409 request_info.priority = |
| 394 ConvertWebKitPriorityToNetPriority(request.priority()); | 410 ConvertWebKitPriorityToNetPriority(request.priority()); |
| 395 request_info.appcache_host_id = request.appCacheHostID(); | 411 request_info.appcache_host_id = request.appCacheHostID(); |
| 396 request_info.routing_id = request.requestorID(); | 412 request_info.routing_id = request.requestorID(); |
| 397 request_info.download_to_file = request.downloadToFile(); | 413 request_info.download_to_file = request.downloadToFile(); |
| 398 request_info.has_user_gesture = request.hasUserGesture(); | 414 request_info.has_user_gesture = request.hasUserGesture(); |
| 399 request_info.skip_service_worker = request.skipServiceWorker(); | 415 request_info.skip_service_worker = request.skipServiceWorker(); |
| 416 request_info.fetch_request_mode = GetFetchRequestMode(request); |
| 400 request_info.extra_data = request.extraData(); | 417 request_info.extra_data = request.extraData(); |
| 401 referrer_policy_ = request.referrerPolicy(); | 418 referrer_policy_ = request.referrerPolicy(); |
| 402 request_info.referrer_policy = request.referrerPolicy(); | 419 request_info.referrer_policy = request.referrerPolicy(); |
| 403 bridge_.reset(resource_dispatcher_->CreateBridge(request_info)); | 420 bridge_.reset(resource_dispatcher_->CreateBridge(request_info)); |
| 404 | 421 |
| 405 if (!request.httpBody().isNull()) { | 422 if (!request.httpBody().isNull()) { |
| 406 // GET and HEAD requests shouldn't have http bodies. | 423 // GET and HEAD requests shouldn't have http bodies. |
| 407 DCHECK(method != "GET" && method != "HEAD"); | 424 DCHECK(method != "GET" && method != "HEAD"); |
| 408 const WebHTTPBody& httpBody = request.httpBody(); | 425 const WebHTTPBody& httpBody = request.httpBody(); |
| 409 size_t i = 0; | 426 size_t i = 0; |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 int intra_priority_value) { | 920 int intra_priority_value) { |
| 904 context_->DidChangePriority(new_priority, intra_priority_value); | 921 context_->DidChangePriority(new_priority, intra_priority_value); |
| 905 } | 922 } |
| 906 | 923 |
| 907 bool WebURLLoaderImpl::attachThreadedDataReceiver( | 924 bool WebURLLoaderImpl::attachThreadedDataReceiver( |
| 908 blink::WebThreadedDataReceiver* threaded_data_receiver) { | 925 blink::WebThreadedDataReceiver* threaded_data_receiver) { |
| 909 return context_->AttachThreadedDataReceiver(threaded_data_receiver); | 926 return context_->AttachThreadedDataReceiver(threaded_data_receiver); |
| 910 } | 927 } |
| 911 | 928 |
| 912 } // namespace content | 929 } // namespace content |
| OLD | NEW |