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

Unified Diff: net/http/http_vary_data.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_vary_data.h ('k') | net/http/http_vary_data_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_vary_data.cc
diff --git a/net/http/http_vary_data.cc b/net/http/http_vary_data.cc
deleted file mode 100644
index f2f853cb066e288edd8918c7f4b0065f828b6d12..0000000000000000000000000000000000000000
--- a/net/http/http_vary_data.cc
+++ /dev/null
@@ -1,126 +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_vary_data.h"
-
-#include <stdlib.h>
-
-#include "base/pickle.h"
-#include "base/strings/string_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_util.h"
-
-namespace net {
-
-HttpVaryData::HttpVaryData() : is_valid_(false) {
-}
-
-bool HttpVaryData::Init(const HttpRequestInfo& request_info,
- const HttpResponseHeaders& response_headers) {
- base::MD5Context ctx;
- base::MD5Init(&ctx);
-
- is_valid_ = false;
- bool processed_header = false;
-
- // Feed the MD5 context in the order of the Vary header enumeration. If the
- // Vary header repeats a header name, then that's OK.
- //
- // If the Vary header contains '*' then we should not construct any vary data
- // since it is all usurped by a '*'. See section 13.6 of RFC 2616.
- //
- void* iter = NULL;
- std::string name = "vary", request_header;
- while (response_headers.EnumerateHeader(&iter, name, &request_header)) {
- if (request_header == "*")
- return false;
- AddField(request_info, request_header, &ctx);
- processed_header = true;
- }
-
- // Add an implicit 'Vary: cookie' header to any redirect to avoid redirect
- // loops which may result from redirects that are incorrectly marked as
- // cachable by the server. Unfortunately, other browsers do not cache
- // redirects that result from requests containing a cookie header. We are
- // treading on untested waters here, so we want to be extra careful to make
- // sure we do not end up with a redirect loop served from cache.
- //
- // If there is an explicit 'Vary: cookie' header, then we will just end up
- // digesting the cookie header twice. Not a problem.
- //
- std::string location;
- if (response_headers.IsRedirect(&location)) {
- AddField(request_info, "cookie", &ctx);
- processed_header = true;
- }
-
- if (!processed_header)
- return false;
-
- base::MD5Final(&request_digest_, &ctx);
- return is_valid_ = true;
-}
-
-bool HttpVaryData::InitFromPickle(PickleIterator* iter) {
- is_valid_ = false;
- const char* data;
- if (iter->ReadBytes(&data, sizeof(request_digest_))) {
- memcpy(&request_digest_, data, sizeof(request_digest_));
- return is_valid_ = true;
- }
- return false;
-}
-
-void HttpVaryData::Persist(Pickle* pickle) const {
- DCHECK(is_valid());
- pickle->WriteBytes(&request_digest_, sizeof(request_digest_));
-}
-
-bool HttpVaryData::MatchesRequest(
- const HttpRequestInfo& request_info,
- const HttpResponseHeaders& cached_response_headers) const {
- HttpVaryData new_vary_data;
- if (!new_vary_data.Init(request_info, cached_response_headers)) {
- // This shouldn't happen provided the same response headers passed here
- // were also used when initializing |this|.
- NOTREACHED();
- return false;
- }
- return memcmp(&new_vary_data.request_digest_, &request_digest_,
- sizeof(request_digest_)) == 0;
-}
-
-// static
-std::string HttpVaryData::GetRequestValue(
- const HttpRequestInfo& request_info,
- const std::string& request_header) {
- // Unfortunately, we do not have access to all of the request headers at this
- // point. Most notably, we do not have access to an Authorization header if
- // one will be added to the request.
-
- std::string result;
- if (request_info.extra_headers.GetHeader(request_header, &result))
- return result;
-
- return std::string();
-}
-
-// static
-void HttpVaryData::AddField(const HttpRequestInfo& request_info,
- const std::string& request_header,
- base::MD5Context* ctx) {
- std::string request_value = GetRequestValue(request_info, request_header);
-
- // Append a character that cannot appear in the request header line so that we
- // protect against case where the concatenation of two request headers could
- // look the same for a variety of values for the individual request headers.
- // For example, "foo: 12\nbar: 3" looks like "foo: 1\nbar: 23" otherwise.
- request_value.append(1, '\n');
-
- base::MD5Update(ctx, request_value);
-}
-
-} // namespace net
« no previous file with comments | « net/http/http_vary_data.h ('k') | net/http/http_vary_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698