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 #include "content/browser/loader/resource_loader.h" | 5 #include "content/browser/loader/resource_loader.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "content/browser/service_worker/service_worker_response_info.h" | 24 #include "content/browser/service_worker/service_worker_response_info.h" |
25 #include "content/browser/ssl/ssl_client_auth_handler.h" | 25 #include "content/browser/ssl/ssl_client_auth_handler.h" |
26 #include "content/browser/ssl/ssl_manager.h" | 26 #include "content/browser/ssl/ssl_manager.h" |
27 #include "content/browser/ssl/ssl_policy.h" | 27 #include "content/browser/ssl/ssl_policy.h" |
28 #include "content/public/browser/resource_dispatcher_host_login_delegate.h" | 28 #include "content/public/browser/resource_dispatcher_host_login_delegate.h" |
29 #include "content/public/common/content_client.h" | 29 #include "content/public/common/content_client.h" |
30 #include "content/public/common/content_switches.h" | 30 #include "content/public/common/content_switches.h" |
31 #include "content/public/common/process_type.h" | 31 #include "content/public/common/process_type.h" |
32 #include "content/public/common/resource_response.h" | 32 #include "content/public/common/resource_response.h" |
33 #include "content/public/common/resource_type.h" | 33 #include "content/public/common/resource_type.h" |
| 34 #include "net/base/host_port_pair.h" |
34 #include "net/base/io_buffer.h" | 35 #include "net/base/io_buffer.h" |
35 #include "net/base/load_flags.h" | 36 #include "net/base/load_flags.h" |
36 #include "net/http/http_response_headers.h" | 37 #include "net/http/http_response_headers.h" |
37 #include "net/nqe/effective_connection_type.h" | 38 #include "net/nqe/effective_connection_type.h" |
38 #include "net/nqe/network_quality_estimator.h" | 39 #include "net/nqe/network_quality_estimator.h" |
| 40 #include "net/proxy/proxy_server.h" |
39 #include "net/ssl/client_cert_store.h" | 41 #include "net/ssl/client_cert_store.h" |
40 #include "net/ssl/ssl_platform_key.h" | 42 #include "net/ssl/ssl_platform_key.h" |
41 #include "net/ssl/ssl_private_key.h" | 43 #include "net/ssl/ssl_private_key.h" |
42 #include "net/url_request/redirect_info.h" | 44 #include "net/url_request/redirect_info.h" |
43 #include "net/url_request/url_request_context.h" | 45 #include "net/url_request/url_request_context.h" |
44 #include "net/url_request/url_request_status.h" | 46 #include "net/url_request/url_request_status.h" |
45 | 47 |
46 using base::TimeDelta; | 48 using base::TimeDelta; |
47 using base::TimeTicks; | 49 using base::TimeTicks; |
48 | 50 |
49 namespace content { | 51 namespace content { |
50 namespace { | 52 namespace { |
51 | 53 |
52 void PopulateResourceResponse(ResourceRequestInfoImpl* info, | 54 void PopulateResourceResponse(ResourceRequestInfoImpl* info, |
53 net::URLRequest* request, | 55 net::URLRequest* request, |
54 ResourceResponse* response) { | 56 ResourceResponse* response) { |
55 response->head.request_time = request->request_time(); | 57 response->head.request_time = request->request_time(); |
56 response->head.response_time = request->response_time(); | 58 response->head.response_time = request->response_time(); |
57 response->head.headers = request->response_headers(); | 59 response->head.headers = request->response_headers(); |
58 request->GetCharset(&response->head.charset); | 60 request->GetCharset(&response->head.charset); |
59 response->head.content_length = request->GetExpectedContentSize(); | 61 response->head.content_length = request->GetExpectedContentSize(); |
60 request->GetMimeType(&response->head.mime_type); | 62 request->GetMimeType(&response->head.mime_type); |
61 net::HttpResponseInfo response_info = request->response_info(); | 63 net::HttpResponseInfo response_info = request->response_info(); |
62 response->head.was_fetched_via_spdy = response_info.was_fetched_via_spdy; | 64 response->head.was_fetched_via_spdy = response_info.was_fetched_via_spdy; |
63 response->head.was_npn_negotiated = response_info.was_npn_negotiated; | 65 response->head.was_npn_negotiated = response_info.was_npn_negotiated; |
64 response->head.npn_negotiated_protocol = | 66 response->head.npn_negotiated_protocol = |
65 response_info.npn_negotiated_protocol; | 67 response_info.npn_negotiated_protocol; |
66 response->head.connection_info = response_info.connection_info; | 68 response->head.connection_info = response_info.connection_info; |
67 response->head.was_fetched_via_proxy = request->was_fetched_via_proxy(); | 69 response->head.was_fetched_via_proxy = request->was_fetched_via_proxy(); |
68 response->head.proxy_server = response_info.proxy_server; | 70 response->head.proxy_server = |
| 71 !response_info.proxy_server.is_valid() || |
| 72 response_info.proxy_server.is_direct() |
| 73 ? net::HostPortPair() |
| 74 : response_info.proxy_server.host_port_pair(); |
69 response->head.socket_address = response_info.socket_address; | 75 response->head.socket_address = response_info.socket_address; |
70 const content::ResourceRequestInfo* request_info = | 76 const content::ResourceRequestInfo* request_info = |
71 content::ResourceRequestInfo::ForRequest(request); | 77 content::ResourceRequestInfo::ForRequest(request); |
72 if (request_info) | 78 if (request_info) |
73 response->head.is_using_lofi = request_info->IsUsingLoFi(); | 79 response->head.is_using_lofi = request_info->IsUsingLoFi(); |
74 | 80 |
75 response->head.effective_connection_type = | 81 response->head.effective_connection_type = |
76 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; | 82 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; |
77 | 83 |
78 if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) { | 84 if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) { |
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 } | 723 } |
718 | 724 |
719 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); | 725 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); |
720 } else if (request_->response_info().unused_since_prefetch) { | 726 } else if (request_->response_info().unused_since_prefetch) { |
721 TimeDelta total_time = base::TimeTicks::Now() - request_->creation_time(); | 727 TimeDelta total_time = base::TimeTicks::Now() - request_->creation_time(); |
722 UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentOnPrefetchHit", total_time); | 728 UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentOnPrefetchHit", total_time); |
723 } | 729 } |
724 } | 730 } |
725 | 731 |
726 } // namespace content | 732 } // namespace content |
OLD | NEW |