Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 | 50 |
| 51 // This bit is set if the response was received via SPDY. | 51 // This bit is set if the response was received via SPDY. |
| 52 RESPONSE_INFO_WAS_SPDY = 1 << 13, | 52 RESPONSE_INFO_WAS_SPDY = 1 << 13, |
| 53 | 53 |
| 54 // This bit is set if the request has NPN negotiated. | 54 // This bit is set if the request has NPN negotiated. |
| 55 RESPONSE_INFO_WAS_NPN = 1 << 14, | 55 RESPONSE_INFO_WAS_NPN = 1 << 14, |
| 56 | 56 |
| 57 // This bit is set if the request was fetched via an explicit proxy. | 57 // This bit is set if the request was fetched via an explicit proxy. |
| 58 RESPONSE_INFO_WAS_PROXY = 1 << 15, | 58 RESPONSE_INFO_WAS_PROXY = 1 << 15, |
| 59 | 59 |
| 60 // This bit is set if the response info has an SSL connection status field. | |
| 61 // This contains the ciphersuite of used to fetch the resource. | |
|
wtc
2011/06/16 17:46:35
Nit: remove "of"
Nit: the SSL connection status c
| |
| 62 RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS = 1 << 16, | |
| 63 | |
| 60 // TODO(darin): Add other bits to indicate alternate request methods. | 64 // TODO(darin): Add other bits to indicate alternate request methods. |
| 61 // For now, we don't support storing those. | 65 // For now, we don't support storing those. |
| 62 }; | 66 }; |
| 63 | 67 |
| 64 HttpResponseInfo::HttpResponseInfo() | 68 HttpResponseInfo::HttpResponseInfo() |
| 65 : was_cached(false), | 69 : was_cached(false), |
| 66 was_fetched_via_spdy(false), | 70 was_fetched_via_spdy(false), |
| 67 was_npn_negotiated(false), | 71 was_npn_negotiated(false), |
| 68 was_fetched_via_proxy(false) { | 72 was_fetched_via_proxy(false) { |
| 69 } | 73 } |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 151 return false; | 155 return false; |
| 152 ssl_info.cert_status = cert_status; | 156 ssl_info.cert_status = cert_status; |
| 153 } | 157 } |
| 154 if (flags & RESPONSE_INFO_HAS_SECURITY_BITS) { | 158 if (flags & RESPONSE_INFO_HAS_SECURITY_BITS) { |
| 155 int security_bits; | 159 int security_bits; |
| 156 if (!pickle.ReadInt(&iter, &security_bits)) | 160 if (!pickle.ReadInt(&iter, &security_bits)) |
| 157 return false; | 161 return false; |
| 158 ssl_info.security_bits = security_bits; | 162 ssl_info.security_bits = security_bits; |
| 159 } | 163 } |
| 160 | 164 |
| 165 if (flags & RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS) { | |
| 166 int connection_status; | |
| 167 if (!pickle.ReadInt(&iter, &connection_status)) | |
| 168 return false; | |
| 169 ssl_info.connection_status = connection_status; | |
| 170 } | |
| 171 | |
| 161 // read vary-data | 172 // read vary-data |
| 162 if (flags & RESPONSE_INFO_HAS_VARY_DATA) { | 173 if (flags & RESPONSE_INFO_HAS_VARY_DATA) { |
| 163 if (!vary_data.InitFromPickle(pickle, &iter)) | 174 if (!vary_data.InitFromPickle(pickle, &iter)) |
| 164 return false; | 175 return false; |
| 165 } | 176 } |
| 166 | 177 |
| 167 // Read socket_address. | 178 // Read socket_address. |
| 168 std::string socket_address_host; | 179 std::string socket_address_host; |
| 169 if (pickle.ReadString(&iter, &socket_address_host)) { | 180 if (pickle.ReadString(&iter, &socket_address_host)) { |
| 170 // If the host was written, we always expect the port to follow. | 181 // If the host was written, we always expect the port to follow. |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 191 | 202 |
| 192 void HttpResponseInfo::Persist(Pickle* pickle, | 203 void HttpResponseInfo::Persist(Pickle* pickle, |
| 193 bool skip_transient_headers, | 204 bool skip_transient_headers, |
| 194 bool response_truncated) const { | 205 bool response_truncated) const { |
| 195 int flags = RESPONSE_INFO_VERSION; | 206 int flags = RESPONSE_INFO_VERSION; |
| 196 if (ssl_info.is_valid()) { | 207 if (ssl_info.is_valid()) { |
| 197 flags |= RESPONSE_INFO_HAS_CERT; | 208 flags |= RESPONSE_INFO_HAS_CERT; |
| 198 flags |= RESPONSE_INFO_HAS_CERT_STATUS; | 209 flags |= RESPONSE_INFO_HAS_CERT_STATUS; |
| 199 if (ssl_info.security_bits != -1) | 210 if (ssl_info.security_bits != -1) |
| 200 flags |= RESPONSE_INFO_HAS_SECURITY_BITS; | 211 flags |= RESPONSE_INFO_HAS_SECURITY_BITS; |
| 201 // TODO(wtc): we should persist ssl_info.connection_status. | 212 if (ssl_info.connection_status != 0) |
|
wtc
2011/06/16 17:46:35
I'm sorry I knew about this bug but it fell throug
| |
| 213 flags |= RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS; | |
| 202 } | 214 } |
| 203 if (vary_data.is_valid()) | 215 if (vary_data.is_valid()) |
| 204 flags |= RESPONSE_INFO_HAS_VARY_DATA; | 216 flags |= RESPONSE_INFO_HAS_VARY_DATA; |
| 205 if (response_truncated) | 217 if (response_truncated) |
| 206 flags |= RESPONSE_INFO_TRUNCATED; | 218 flags |= RESPONSE_INFO_TRUNCATED; |
| 207 if (was_fetched_via_spdy) | 219 if (was_fetched_via_spdy) |
| 208 flags |= RESPONSE_INFO_WAS_SPDY; | 220 flags |= RESPONSE_INFO_WAS_SPDY; |
| 209 if (was_npn_negotiated) | 221 if (was_npn_negotiated) |
| 210 flags |= RESPONSE_INFO_WAS_NPN; | 222 flags |= RESPONSE_INFO_WAS_NPN; |
| 211 if (was_fetched_via_proxy) | 223 if (was_fetched_via_proxy) |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 227 net::HttpResponseHeaders::PERSIST_SANS_RANGES; | 239 net::HttpResponseHeaders::PERSIST_SANS_RANGES; |
| 228 } | 240 } |
| 229 | 241 |
| 230 headers->Persist(pickle, persist_options); | 242 headers->Persist(pickle, persist_options); |
| 231 | 243 |
| 232 if (ssl_info.is_valid()) { | 244 if (ssl_info.is_valid()) { |
| 233 ssl_info.cert->Persist(pickle); | 245 ssl_info.cert->Persist(pickle); |
| 234 pickle->WriteInt(ssl_info.cert_status); | 246 pickle->WriteInt(ssl_info.cert_status); |
| 235 if (ssl_info.security_bits != -1) | 247 if (ssl_info.security_bits != -1) |
| 236 pickle->WriteInt(ssl_info.security_bits); | 248 pickle->WriteInt(ssl_info.security_bits); |
| 249 if (ssl_info.connection_status != 0) | |
| 250 pickle->WriteInt(ssl_info.connection_status); | |
| 237 } | 251 } |
| 238 | 252 |
| 239 if (vary_data.is_valid()) | 253 if (vary_data.is_valid()) |
| 240 vary_data.Persist(pickle); | 254 vary_data.Persist(pickle); |
| 241 | 255 |
| 242 pickle->WriteString(socket_address.host()); | 256 pickle->WriteString(socket_address.host()); |
| 243 pickle->WriteUInt16(socket_address.port()); | 257 pickle->WriteUInt16(socket_address.port()); |
| 244 } | 258 } |
| 245 | 259 |
| 246 } // namespace net | 260 } // namespace net |
| OLD | NEW |