Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Side by Side Diff: net/http/http_response_info.cc

Issue 6684019: Reland rest of r77399. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/http/http_response_info.h ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "net/http/http_response_info.h" 5 #include "net/http/http_response_info.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/pickle.h" 8 #include "base/pickle.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "net/base/auth.h" 10 #include "net/base/auth.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 // This bit is set if the response was received via SPDY. 46 // This bit is set if the response was received via SPDY.
47 RESPONSE_INFO_WAS_SPDY = 1 << 13, 47 RESPONSE_INFO_WAS_SPDY = 1 << 13,
48 48
49 // This bit is set if the request has NPN negotiated. 49 // This bit is set if the request has NPN negotiated.
50 RESPONSE_INFO_WAS_NPN = 1 << 14, 50 RESPONSE_INFO_WAS_NPN = 1 << 14,
51 51
52 // This bit is set if the request was fetched via an explicit proxy. 52 // This bit is set if the request was fetched via an explicit proxy.
53 RESPONSE_INFO_WAS_PROXY = 1 << 15, 53 RESPONSE_INFO_WAS_PROXY = 1 << 15,
54 54
55 // This bit is set if response could use alternate protocol. However, browser
56 // will ingore the alternate protocol if spdy is not enabled.
57 RESPONSE_INFO_WAS_ALTERNATE_PROTOCOL_AVAILABLE = 1 << 16,
58
59 // TODO(darin): Add other bits to indicate alternate request methods. 55 // TODO(darin): Add other bits to indicate alternate request methods.
60 // For now, we don't support storing those. 56 // For now, we don't support storing those.
61 }; 57 };
62 58
63 HttpResponseInfo::HttpResponseInfo() 59 HttpResponseInfo::HttpResponseInfo()
64 : was_cached(false), 60 : was_cached(false),
65 was_fetched_via_spdy(false), 61 was_fetched_via_spdy(false),
66 was_npn_negotiated(false), 62 was_npn_negotiated(false),
67 was_alternate_protocol_available(false),
68 was_fetched_via_proxy(false) { 63 was_fetched_via_proxy(false) {
69 } 64 }
70 65
71 HttpResponseInfo::HttpResponseInfo(const HttpResponseInfo& rhs) 66 HttpResponseInfo::HttpResponseInfo(const HttpResponseInfo& rhs)
72 : was_cached(rhs.was_cached), 67 : was_cached(rhs.was_cached),
73 was_fetched_via_spdy(rhs.was_fetched_via_spdy), 68 was_fetched_via_spdy(rhs.was_fetched_via_spdy),
74 was_npn_negotiated(rhs.was_npn_negotiated), 69 was_npn_negotiated(rhs.was_npn_negotiated),
75 was_alternate_protocol_available(rhs.was_alternate_protocol_available),
76 was_fetched_via_proxy(rhs.was_fetched_via_proxy), 70 was_fetched_via_proxy(rhs.was_fetched_via_proxy),
77 socket_address(rhs.socket_address), 71 socket_address(rhs.socket_address),
78 request_time(rhs.request_time), 72 request_time(rhs.request_time),
79 response_time(rhs.response_time), 73 response_time(rhs.response_time),
80 auth_challenge(rhs.auth_challenge), 74 auth_challenge(rhs.auth_challenge),
81 cert_request_info(rhs.cert_request_info), 75 cert_request_info(rhs.cert_request_info),
82 ssl_info(rhs.ssl_info), 76 ssl_info(rhs.ssl_info),
83 headers(rhs.headers), 77 headers(rhs.headers),
84 vary_data(rhs.vary_data), 78 vary_data(rhs.vary_data),
85 metadata(rhs.metadata) { 79 metadata(rhs.metadata) {
86 } 80 }
87 81
88 HttpResponseInfo::~HttpResponseInfo() { 82 HttpResponseInfo::~HttpResponseInfo() {
89 } 83 }
90 84
91 HttpResponseInfo& HttpResponseInfo::operator=(const HttpResponseInfo& rhs) { 85 HttpResponseInfo& HttpResponseInfo::operator=(const HttpResponseInfo& rhs) {
92 was_cached = rhs.was_cached; 86 was_cached = rhs.was_cached;
93 was_fetched_via_spdy = rhs.was_fetched_via_spdy; 87 was_fetched_via_spdy = rhs.was_fetched_via_spdy;
94 was_npn_negotiated = rhs.was_npn_negotiated; 88 was_npn_negotiated = rhs.was_npn_negotiated;
95 was_alternate_protocol_available = rhs.was_alternate_protocol_available;
96 was_fetched_via_proxy = rhs.was_fetched_via_proxy; 89 was_fetched_via_proxy = rhs.was_fetched_via_proxy;
97 socket_address = rhs.socket_address; 90 socket_address = rhs.socket_address;
98 request_time = rhs.request_time; 91 request_time = rhs.request_time;
99 response_time = rhs.response_time; 92 response_time = rhs.response_time;
100 auth_challenge = rhs.auth_challenge; 93 auth_challenge = rhs.auth_challenge;
101 cert_request_info = rhs.cert_request_info; 94 cert_request_info = rhs.cert_request_info;
102 ssl_info = rhs.ssl_info; 95 ssl_info = rhs.ssl_info;
103 headers = rhs.headers; 96 headers = rhs.headers;
104 vary_data = rhs.vary_data; 97 vary_data = rhs.vary_data;
105 metadata = rhs.metadata; 98 metadata = rhs.metadata;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 uint16 socket_address_port; 162 uint16 socket_address_port;
170 if (!pickle.ReadUInt16(&iter, &socket_address_port)) 163 if (!pickle.ReadUInt16(&iter, &socket_address_port))
171 return false; 164 return false;
172 socket_address = HostPortPair(socket_address_host, socket_address_port); 165 socket_address = HostPortPair(socket_address_host, socket_address_port);
173 } 166 }
174 167
175 was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0; 168 was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0;
176 169
177 was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0; 170 was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0;
178 171
179 was_alternate_protocol_available =
180 (flags & RESPONSE_INFO_WAS_ALTERNATE_PROTOCOL_AVAILABLE) != 0;
181
182 was_fetched_via_proxy = (flags & RESPONSE_INFO_WAS_PROXY) != 0; 172 was_fetched_via_proxy = (flags & RESPONSE_INFO_WAS_PROXY) != 0;
183 173
184 *response_truncated = (flags & RESPONSE_INFO_TRUNCATED) ? true : false; 174 *response_truncated = (flags & RESPONSE_INFO_TRUNCATED) ? true : false;
185 175
186 return true; 176 return true;
187 } 177 }
188 178
189 void HttpResponseInfo::Persist(Pickle* pickle, 179 void HttpResponseInfo::Persist(Pickle* pickle,
190 bool skip_transient_headers, 180 bool skip_transient_headers,
191 bool response_truncated) const { 181 bool response_truncated) const {
192 int flags = RESPONSE_INFO_VERSION; 182 int flags = RESPONSE_INFO_VERSION;
193 if (ssl_info.is_valid()) { 183 if (ssl_info.is_valid()) {
194 flags |= RESPONSE_INFO_HAS_CERT; 184 flags |= RESPONSE_INFO_HAS_CERT;
195 flags |= RESPONSE_INFO_HAS_CERT_STATUS; 185 flags |= RESPONSE_INFO_HAS_CERT_STATUS;
196 if (ssl_info.security_bits != -1) 186 if (ssl_info.security_bits != -1)
197 flags |= RESPONSE_INFO_HAS_SECURITY_BITS; 187 flags |= RESPONSE_INFO_HAS_SECURITY_BITS;
198 // TODO(wtc): we should persist ssl_info.connection_status. 188 // TODO(wtc): we should persist ssl_info.connection_status.
199 } 189 }
200 if (vary_data.is_valid()) 190 if (vary_data.is_valid())
201 flags |= RESPONSE_INFO_HAS_VARY_DATA; 191 flags |= RESPONSE_INFO_HAS_VARY_DATA;
202 if (response_truncated) 192 if (response_truncated)
203 flags |= RESPONSE_INFO_TRUNCATED; 193 flags |= RESPONSE_INFO_TRUNCATED;
204 if (was_fetched_via_spdy) 194 if (was_fetched_via_spdy)
205 flags |= RESPONSE_INFO_WAS_SPDY; 195 flags |= RESPONSE_INFO_WAS_SPDY;
206 if (was_npn_negotiated) 196 if (was_npn_negotiated)
207 flags |= RESPONSE_INFO_WAS_NPN; 197 flags |= RESPONSE_INFO_WAS_NPN;
208 if (was_alternate_protocol_available)
209 flags |= RESPONSE_INFO_WAS_ALTERNATE_PROTOCOL_AVAILABLE;
210 if (was_fetched_via_proxy) 198 if (was_fetched_via_proxy)
211 flags |= RESPONSE_INFO_WAS_PROXY; 199 flags |= RESPONSE_INFO_WAS_PROXY;
212 200
213 pickle->WriteInt(flags); 201 pickle->WriteInt(flags);
214 pickle->WriteInt64(request_time.ToInternalValue()); 202 pickle->WriteInt64(request_time.ToInternalValue());
215 pickle->WriteInt64(response_time.ToInternalValue()); 203 pickle->WriteInt64(response_time.ToInternalValue());
216 204
217 net::HttpResponseHeaders::PersistOptions persist_options = 205 net::HttpResponseHeaders::PersistOptions persist_options =
218 net::HttpResponseHeaders::PERSIST_RAW; 206 net::HttpResponseHeaders::PERSIST_RAW;
219 207
(...skipping 16 matching lines...) Expand all
236 } 224 }
237 225
238 if (vary_data.is_valid()) 226 if (vary_data.is_valid())
239 vary_data.Persist(pickle); 227 vary_data.Persist(pickle);
240 228
241 pickle->WriteString(socket_address.host()); 229 pickle->WriteString(socket_address.host());
242 pickle->WriteUInt16(socket_address.port()); 230 pickle->WriteUInt16(socket_address.port());
243 } 231 }
244 232
245 } // namespace net 233 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_response_info.h ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698