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

Unified Diff: net/http/http_response_info.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_response_info.h ('k') | net/http/http_response_info_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_response_info.cc
diff --git a/net/http/http_response_info.cc b/net/http/http_response_info.cc
deleted file mode 100644
index b5b94c48e2dfdc47242f948a3316bc57d03059d9..0000000000000000000000000000000000000000
--- a/net/http/http_response_info.cc
+++ /dev/null
@@ -1,425 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/http/http_response_info.h"
-
-#include "base/logging.h"
-#include "base/pickle.h"
-#include "base/time/time.h"
-#include "net/base/auth.h"
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-#include "net/cert/signed_certificate_timestamp.h"
-#include "net/cert/x509_certificate.h"
-#include "net/http/http_response_headers.h"
-#include "net/ssl/ssl_cert_request_info.h"
-
-using base::Time;
-
-namespace net {
-
-namespace {
-
-X509Certificate::PickleType GetPickleTypeForVersion(int version) {
- switch (version) {
- case 1:
- return X509Certificate::PICKLETYPE_SINGLE_CERTIFICATE;
- case 2:
- return X509Certificate::PICKLETYPE_CERTIFICATE_CHAIN_V2;
- case 3:
- default:
- return X509Certificate::PICKLETYPE_CERTIFICATE_CHAIN_V3;
- }
-}
-
-} // namespace
-
-// These values can be bit-wise combined to form the flags field of the
-// serialized HttpResponseInfo.
-enum {
- // The version of the response info used when persisting response info.
- RESPONSE_INFO_VERSION = 3,
-
- // The minimum version supported for deserializing response info.
- RESPONSE_INFO_MINIMUM_VERSION = 1,
-
- // We reserve up to 8 bits for the version number.
- RESPONSE_INFO_VERSION_MASK = 0xFF,
-
- // This bit is set if the response info has a cert at the end.
- // Version 1 serialized only the end-entity certificate, while subsequent
- // versions include the available certificate chain.
- RESPONSE_INFO_HAS_CERT = 1 << 8,
-
- // This bit is set if the response info has a security-bits field (security
- // strength, in bits, of the SSL connection) at the end.
- RESPONSE_INFO_HAS_SECURITY_BITS = 1 << 9,
-
- // This bit is set if the response info has a cert status at the end.
- RESPONSE_INFO_HAS_CERT_STATUS = 1 << 10,
-
- // This bit is set if the response info has vary header data.
- RESPONSE_INFO_HAS_VARY_DATA = 1 << 11,
-
- // This bit is set if the request was cancelled before completion.
- RESPONSE_INFO_TRUNCATED = 1 << 12,
-
- // This bit is set if the response was received via SPDY.
- RESPONSE_INFO_WAS_SPDY = 1 << 13,
-
- // This bit is set if the request has NPN negotiated.
- RESPONSE_INFO_WAS_NPN = 1 << 14,
-
- // This bit is set if the request was fetched via an explicit proxy.
- RESPONSE_INFO_WAS_PROXY = 1 << 15,
-
- // This bit is set if the response info has an SSL connection status field.
- // This contains the ciphersuite used to fetch the resource as well as the
- // protocol version, compression method and whether SSLv3 fallback was used.
- RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS = 1 << 16,
-
- // This bit is set if the response info has protocol version.
- RESPONSE_INFO_HAS_NPN_NEGOTIATED_PROTOCOL = 1 << 17,
-
- // This bit is set if the response info has connection info.
- RESPONSE_INFO_HAS_CONNECTION_INFO = 1 << 18,
-
- // This bit is set if the request has http authentication.
- RESPONSE_INFO_USE_HTTP_AUTHENTICATION = 1 << 19,
-
- // This bit is set if ssl_info has SCTs.
- RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS = 1 << 20,
-
- RESPONSE_INFO_UNUSED_SINCE_PREFETCH = 1 << 21,
-
- // TODO(darin): Add other bits to indicate alternate request methods.
- // For now, we don't support storing those.
-};
-
-HttpResponseInfo::HttpResponseInfo()
- : was_cached(false),
- server_data_unavailable(false),
- network_accessed(false),
- was_fetched_via_spdy(false),
- was_npn_negotiated(false),
- was_fetched_via_proxy(false),
- did_use_http_auth(false),
- unused_since_prefetch(false),
- connection_info(CONNECTION_INFO_UNKNOWN) {
-}
-
-HttpResponseInfo::HttpResponseInfo(const HttpResponseInfo& rhs)
- : was_cached(rhs.was_cached),
- server_data_unavailable(rhs.server_data_unavailable),
- network_accessed(rhs.network_accessed),
- was_fetched_via_spdy(rhs.was_fetched_via_spdy),
- was_npn_negotiated(rhs.was_npn_negotiated),
- was_fetched_via_proxy(rhs.was_fetched_via_proxy),
- proxy_server(rhs.proxy_server),
- did_use_http_auth(rhs.did_use_http_auth),
- unused_since_prefetch(rhs.unused_since_prefetch),
- socket_address(rhs.socket_address),
- npn_negotiated_protocol(rhs.npn_negotiated_protocol),
- connection_info(rhs.connection_info),
- request_time(rhs.request_time),
- response_time(rhs.response_time),
- auth_challenge(rhs.auth_challenge),
- cert_request_info(rhs.cert_request_info),
- ssl_info(rhs.ssl_info),
- headers(rhs.headers),
- vary_data(rhs.vary_data),
- metadata(rhs.metadata) {
-}
-
-HttpResponseInfo::~HttpResponseInfo() {
-}
-
-HttpResponseInfo& HttpResponseInfo::operator=(const HttpResponseInfo& rhs) {
- was_cached = rhs.was_cached;
- server_data_unavailable = rhs.server_data_unavailable;
- network_accessed = rhs.network_accessed;
- was_fetched_via_spdy = rhs.was_fetched_via_spdy;
- proxy_server = rhs.proxy_server;
- was_npn_negotiated = rhs.was_npn_negotiated;
- was_fetched_via_proxy = rhs.was_fetched_via_proxy;
- did_use_http_auth = rhs.did_use_http_auth;
- unused_since_prefetch = rhs.unused_since_prefetch;
- socket_address = rhs.socket_address;
- npn_negotiated_protocol = rhs.npn_negotiated_protocol;
- connection_info = rhs.connection_info;
- request_time = rhs.request_time;
- response_time = rhs.response_time;
- auth_challenge = rhs.auth_challenge;
- cert_request_info = rhs.cert_request_info;
- ssl_info = rhs.ssl_info;
- headers = rhs.headers;
- vary_data = rhs.vary_data;
- metadata = rhs.metadata;
- return *this;
-}
-
-bool HttpResponseInfo::InitFromPickle(const Pickle& pickle,
- bool* response_truncated) {
- PickleIterator iter(pickle);
-
- // Read flags and verify version
- int flags;
- if (!iter.ReadInt(&flags))
- return false;
- int version = flags & RESPONSE_INFO_VERSION_MASK;
- if (version < RESPONSE_INFO_MINIMUM_VERSION ||
- version > RESPONSE_INFO_VERSION) {
- DLOG(ERROR) << "unexpected response info version: " << version;
- return false;
- }
-
- // Read request-time
- int64 time_val;
- if (!iter.ReadInt64(&time_val))
- return false;
- request_time = Time::FromInternalValue(time_val);
- was_cached = true; // Set status to show cache resurrection.
-
- // Read response-time
- if (!iter.ReadInt64(&time_val))
- return false;
- response_time = Time::FromInternalValue(time_val);
-
- // Read response-headers
- headers = new HttpResponseHeaders(&iter);
- if (headers->response_code() == -1)
- return false;
-
- // Read ssl-info
- if (flags & RESPONSE_INFO_HAS_CERT) {
- X509Certificate::PickleType type = GetPickleTypeForVersion(version);
- ssl_info.cert = X509Certificate::CreateFromPickle(&iter, type);
- if (!ssl_info.cert.get())
- return false;
- }
- if (flags & RESPONSE_INFO_HAS_CERT_STATUS) {
- CertStatus cert_status;
- if (!iter.ReadUInt32(&cert_status))
- return false;
- ssl_info.cert_status = cert_status;
- }
- if (flags & RESPONSE_INFO_HAS_SECURITY_BITS) {
- int security_bits;
- if (!iter.ReadInt(&security_bits))
- return false;
- ssl_info.security_bits = security_bits;
- }
-
- if (flags & RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS) {
- int connection_status;
- if (!iter.ReadInt(&connection_status))
- return false;
- ssl_info.connection_status = connection_status;
- }
-
- if (flags & RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS) {
- int num_scts;
- if (!iter.ReadInt(&num_scts))
- return false;
- for (int i = 0; i < num_scts; ++i) {
- scoped_refptr<ct::SignedCertificateTimestamp> sct(
- ct::SignedCertificateTimestamp::CreateFromPickle(&iter));
- uint16 status;
- if (!sct.get() || !iter.ReadUInt16(&status))
- return false;
- ssl_info.signed_certificate_timestamps.push_back(
- SignedCertificateTimestampAndStatus(
- sct, static_cast<ct::SCTVerifyStatus>(status)));
- }
- }
-
- // Read vary-data
- if (flags & RESPONSE_INFO_HAS_VARY_DATA) {
- if (!vary_data.InitFromPickle(&iter))
- return false;
- }
-
- // Read socket_address.
- std::string socket_address_host;
- if (iter.ReadString(&socket_address_host)) {
- // If the host was written, we always expect the port to follow.
- uint16 socket_address_port;
- if (!iter.ReadUInt16(&socket_address_port))
- return false;
- socket_address = HostPortPair(socket_address_host, socket_address_port);
- } else if (version > 1) {
- // socket_address was not always present in version 1 of the response
- // info, so we don't fail if it can't be read.
- return false;
- }
-
- // Read protocol-version.
- if (flags & RESPONSE_INFO_HAS_NPN_NEGOTIATED_PROTOCOL) {
- if (!iter.ReadString(&npn_negotiated_protocol))
- return false;
- }
-
- // Read connection info.
- if (flags & RESPONSE_INFO_HAS_CONNECTION_INFO) {
- int value;
- if (!iter.ReadInt(&value))
- return false;
-
- if (value > static_cast<int>(CONNECTION_INFO_UNKNOWN) &&
- value < static_cast<int>(NUM_OF_CONNECTION_INFOS)) {
- connection_info = static_cast<ConnectionInfo>(value);
- }
- }
-
- was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0;
-
- was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0;
-
- was_fetched_via_proxy = (flags & RESPONSE_INFO_WAS_PROXY) != 0;
-
- *response_truncated = (flags & RESPONSE_INFO_TRUNCATED) != 0;
-
- did_use_http_auth = (flags & RESPONSE_INFO_USE_HTTP_AUTHENTICATION) != 0;
-
- unused_since_prefetch = (flags & RESPONSE_INFO_UNUSED_SINCE_PREFETCH) != 0;
-
- return true;
-}
-
-void HttpResponseInfo::Persist(Pickle* pickle,
- bool skip_transient_headers,
- bool response_truncated) const {
- int flags = RESPONSE_INFO_VERSION;
- if (ssl_info.is_valid()) {
- flags |= RESPONSE_INFO_HAS_CERT;
- flags |= RESPONSE_INFO_HAS_CERT_STATUS;
- if (ssl_info.security_bits != -1)
- flags |= RESPONSE_INFO_HAS_SECURITY_BITS;
- if (ssl_info.connection_status != 0)
- flags |= RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS;
- }
- if (vary_data.is_valid())
- flags |= RESPONSE_INFO_HAS_VARY_DATA;
- if (response_truncated)
- flags |= RESPONSE_INFO_TRUNCATED;
- if (was_fetched_via_spdy)
- flags |= RESPONSE_INFO_WAS_SPDY;
- if (was_npn_negotiated) {
- flags |= RESPONSE_INFO_WAS_NPN;
- flags |= RESPONSE_INFO_HAS_NPN_NEGOTIATED_PROTOCOL;
- }
- if (was_fetched_via_proxy)
- flags |= RESPONSE_INFO_WAS_PROXY;
- if (connection_info != CONNECTION_INFO_UNKNOWN)
- flags |= RESPONSE_INFO_HAS_CONNECTION_INFO;
- if (did_use_http_auth)
- flags |= RESPONSE_INFO_USE_HTTP_AUTHENTICATION;
- if (unused_since_prefetch)
- flags |= RESPONSE_INFO_UNUSED_SINCE_PREFETCH;
- if (!ssl_info.signed_certificate_timestamps.empty())
- flags |= RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS;
-
- pickle->WriteInt(flags);
- pickle->WriteInt64(request_time.ToInternalValue());
- pickle->WriteInt64(response_time.ToInternalValue());
-
- net::HttpResponseHeaders::PersistOptions persist_options =
- net::HttpResponseHeaders::PERSIST_RAW;
-
- if (skip_transient_headers) {
- persist_options =
- net::HttpResponseHeaders::PERSIST_SANS_COOKIES |
- net::HttpResponseHeaders::PERSIST_SANS_CHALLENGES |
- net::HttpResponseHeaders::PERSIST_SANS_HOP_BY_HOP |
- net::HttpResponseHeaders::PERSIST_SANS_NON_CACHEABLE |
- net::HttpResponseHeaders::PERSIST_SANS_RANGES |
- net::HttpResponseHeaders::PERSIST_SANS_SECURITY_STATE;
- }
-
- headers->Persist(pickle, persist_options);
-
- if (ssl_info.is_valid()) {
- ssl_info.cert->Persist(pickle);
- pickle->WriteUInt32(ssl_info.cert_status);
- if (ssl_info.security_bits != -1)
- pickle->WriteInt(ssl_info.security_bits);
- if (ssl_info.connection_status != 0)
- pickle->WriteInt(ssl_info.connection_status);
- if (!ssl_info.signed_certificate_timestamps.empty()) {
- pickle->WriteInt(ssl_info.signed_certificate_timestamps.size());
- for (SignedCertificateTimestampAndStatusList::const_iterator it =
- ssl_info.signed_certificate_timestamps.begin(); it !=
- ssl_info.signed_certificate_timestamps.end(); ++it) {
- it->sct->Persist(pickle);
- pickle->WriteUInt16(static_cast<uint16>(it->status));
- }
- }
- }
-
- if (vary_data.is_valid())
- vary_data.Persist(pickle);
-
- pickle->WriteString(socket_address.host());
- pickle->WriteUInt16(socket_address.port());
-
- if (was_npn_negotiated)
- pickle->WriteString(npn_negotiated_protocol);
-
- if (connection_info != CONNECTION_INFO_UNKNOWN)
- pickle->WriteInt(static_cast<int>(connection_info));
-}
-
-HttpResponseInfo::ConnectionInfo HttpResponseInfo::ConnectionInfoFromNextProto(
- NextProto next_proto) {
- switch (next_proto) {
- case kProtoDeprecatedSPDY2:
- return CONNECTION_INFO_DEPRECATED_SPDY2;
- case kProtoSPDY3:
- case kProtoSPDY31:
- return CONNECTION_INFO_SPDY3;
- case kProtoSPDY4_14:
- return CONNECTION_INFO_HTTP2_14;
- case kProtoSPDY4_15:
- return CONNECTION_INFO_HTTP2_15;
- case kProtoQUIC1SPDY3:
- return CONNECTION_INFO_QUIC1_SPDY3;
-
- case kProtoUnknown:
- case kProtoHTTP11:
- break;
- }
-
- NOTREACHED();
- return CONNECTION_INFO_UNKNOWN;
-}
-
-// static
-std::string HttpResponseInfo::ConnectionInfoToString(
- ConnectionInfo connection_info) {
- switch (connection_info) {
- case CONNECTION_INFO_UNKNOWN:
- return "unknown";
- case CONNECTION_INFO_HTTP1:
- return "http/1";
- case CONNECTION_INFO_DEPRECATED_SPDY2:
- return "spdy/2";
- case CONNECTION_INFO_SPDY3:
- return "spdy/3";
- case CONNECTION_INFO_HTTP2_14:
- // For internal consistency, HTTP/2 is named SPDY4 within Chromium.
- // This is the HTTP/2 draft-14 identifier.
- return "h2-14";
- case CONNECTION_INFO_HTTP2_15:
- // This is the HTTP/2 draft-15 identifier.
- return "h2-15";
- case CONNECTION_INFO_QUIC1_SPDY3:
- return "quic/1+spdy/3";
- case NUM_OF_CONNECTION_INFOS:
- break;
- }
- NOTREACHED();
- return "";
-}
-
-} // namespace net
« no previous file with comments | « net/http/http_response_info.h ('k') | net/http/http_response_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698