Index: net/spdy/spdy_http_utils.cc |
diff --git a/net/spdy/spdy_http_utils.cc b/net/spdy/spdy_http_utils.cc |
deleted file mode 100644 |
index c604880473c7c41666bf79e5b8a87e52033ceaf1..0000000000000000000000000000000000000000 |
--- a/net/spdy/spdy_http_utils.cc |
+++ /dev/null |
@@ -1,211 +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/spdy/spdy_http_utils.h" |
- |
-#include <string> |
- |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_util.h" |
-#include "base/time/time.h" |
-#include "net/base/escape.h" |
-#include "net/base/load_flags.h" |
-#include "net/base/net_util.h" |
-#include "net/http/http_request_headers.h" |
-#include "net/http/http_request_info.h" |
-#include "net/http/http_response_headers.h" |
-#include "net/http/http_response_info.h" |
-#include "net/http/http_util.h" |
- |
-namespace net { |
- |
-namespace { |
- |
-void AddSpdyHeader(const std::string& name, |
- const std::string& value, |
- SpdyHeaderBlock* headers) { |
- if (headers->find(name) == headers->end()) { |
- (*headers)[name] = value; |
- } else { |
- (*headers)[name] += '\0' + value; |
- } |
-} |
- |
-} // namespace |
- |
-bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers, |
- SpdyMajorVersion protocol_version, |
- HttpResponseInfo* response) { |
- std::string status_key = (protocol_version >= SPDY3) ? ":status" : "status"; |
- std::string version_key = |
- (protocol_version >= SPDY3) ? ":version" : "version"; |
- std::string version; |
- std::string status; |
- |
- // The "status" header is required. "version" is required below SPDY4. |
- SpdyHeaderBlock::const_iterator it; |
- it = headers.find(status_key); |
- if (it == headers.end()) |
- return false; |
- status = it->second; |
- |
- if (protocol_version >= SPDY4) { |
- version = "HTTP/1.1"; |
- } else { |
- it = headers.find(version_key); |
- if (it == headers.end()) |
- return false; |
- version = it->second; |
- } |
- std::string raw_headers(version); |
- raw_headers.push_back(' '); |
- raw_headers.append(status); |
- raw_headers.push_back('\0'); |
- for (it = headers.begin(); it != headers.end(); ++it) { |
- // For each value, if the server sends a NUL-separated |
- // list of values, we separate that back out into |
- // individual headers for each value in the list. |
- // e.g. |
- // Set-Cookie "foo\0bar" |
- // becomes |
- // Set-Cookie: foo\0 |
- // Set-Cookie: bar\0 |
- std::string value = it->second; |
- size_t start = 0; |
- size_t end = 0; |
- do { |
- end = value.find('\0', start); |
- std::string tval; |
- if (end != value.npos) |
- tval = value.substr(start, (end - start)); |
- else |
- tval = value.substr(start); |
- if (protocol_version >= 3 && it->first[0] == ':') |
- raw_headers.append(it->first.substr(1)); |
- else |
- raw_headers.append(it->first); |
- raw_headers.push_back(':'); |
- raw_headers.append(tval); |
- raw_headers.push_back('\0'); |
- start = end + 1; |
- } while (end != value.npos); |
- } |
- |
- response->headers = new HttpResponseHeaders(raw_headers); |
- response->was_fetched_via_spdy = true; |
- return true; |
-} |
- |
-void CreateSpdyHeadersFromHttpRequest(const HttpRequestInfo& info, |
- const HttpRequestHeaders& request_headers, |
- SpdyMajorVersion protocol_version, |
- bool direct, |
- SpdyHeaderBlock* headers) { |
- |
- HttpRequestHeaders::Iterator it(request_headers); |
- while (it.GetNext()) { |
- std::string name = base::StringToLowerASCII(it.name()); |
- if (name == "connection" || name == "proxy-connection" || |
- name == "transfer-encoding" || name == "host") { |
- continue; |
- } |
- AddSpdyHeader(name, it.value(), headers); |
- } |
- static const char kHttpProtocolVersion[] = "HTTP/1.1"; |
- |
- if (protocol_version < SPDY3) { |
- (*headers)["version"] = kHttpProtocolVersion; |
- (*headers)["method"] = info.method; |
- (*headers)["host"] = GetHostAndOptionalPort(info.url); |
- (*headers)["scheme"] = info.url.scheme(); |
- if (direct) |
- (*headers)["url"] = HttpUtil::PathForRequest(info.url); |
- else |
- (*headers)["url"] = HttpUtil::SpecForRequest(info.url); |
- } else { |
- if (protocol_version < SPDY4) { |
- (*headers)[":version"] = kHttpProtocolVersion; |
- (*headers)[":host"] = GetHostAndOptionalPort(info.url); |
- } else { |
- (*headers)[":authority"] = GetHostAndOptionalPort(info.url); |
- } |
- (*headers)[":method"] = info.method; |
- (*headers)[":scheme"] = info.url.scheme(); |
- (*headers)[":path"] = HttpUtil::PathForRequest(info.url); |
- } |
-} |
- |
-void CreateSpdyHeadersFromHttpResponse( |
- const HttpResponseHeaders& response_headers, |
- SpdyMajorVersion protocol_version, |
- SpdyHeaderBlock* headers) { |
- std::string status_key = (protocol_version >= SPDY3) ? ":status" : "status"; |
- std::string version_key = |
- (protocol_version >= SPDY3) ? ":version" : "version"; |
- |
- const std::string status_line = response_headers.GetStatusLine(); |
- std::string::const_iterator after_version = |
- std::find(status_line.begin(), status_line.end(), ' '); |
- if (protocol_version < SPDY4) { |
- (*headers)[version_key] = std::string(status_line.begin(), after_version); |
- } |
- (*headers)[status_key] = std::string(after_version + 1, status_line.end()); |
- |
- void* iter = NULL; |
- std::string raw_name, value; |
- while (response_headers.EnumerateHeaderLines(&iter, &raw_name, &value)) { |
- std::string name = base::StringToLowerASCII(raw_name); |
- AddSpdyHeader(name, value, headers); |
- } |
-} |
- |
-static_assert(HIGHEST - LOWEST < 4 && HIGHEST - MINIMUM_PRIORITY < 5, |
- "request priority incompatible with spdy"); |
- |
-SpdyPriority ConvertRequestPriorityToSpdyPriority( |
- const RequestPriority priority, |
- SpdyMajorVersion protocol_version) { |
- DCHECK_GE(priority, MINIMUM_PRIORITY); |
- DCHECK_LE(priority, MAXIMUM_PRIORITY); |
- return static_cast<SpdyPriority>(MAXIMUM_PRIORITY - priority); |
-} |
- |
-NET_EXPORT_PRIVATE RequestPriority ConvertSpdyPriorityToRequestPriority( |
- SpdyPriority priority, |
- SpdyMajorVersion protocol_version) { |
- // Handle invalid values gracefully. |
- // Note that SpdyPriority is not an enum, hence the magic constants. |
- return (priority >= 5) ? |
- IDLE : static_cast<RequestPriority>(4 - priority); |
-} |
- |
-GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers, |
- SpdyMajorVersion protocol_version, |
- bool pushed) { |
- const char* scheme_header = protocol_version >= SPDY3 ? ":scheme" : "scheme"; |
- const char* host_header = protocol_version >= SPDY4 ? ":authority" : |
- (protocol_version >= SPDY3 ? ":host" : "host"); |
- const char* path_header = protocol_version >= SPDY3 ? ":path" : "url"; |
- |
- std::string scheme; |
- std::string host_port; |
- std::string path; |
- SpdyHeaderBlock::const_iterator it; |
- it = headers.find(scheme_header); |
- if (it != headers.end()) |
- scheme = it->second; |
- it = headers.find(host_header); |
- if (it != headers.end()) |
- host_port = it->second; |
- it = headers.find(path_header); |
- if (it != headers.end()) |
- path = it->second; |
- |
- std::string url = (scheme.empty() || host_port.empty() || path.empty()) |
- ? std::string() |
- : scheme + "://" + host_port + path; |
- return GURL(url); |
-} |
- |
-} // namespace net |