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

Side by Side Diff: chrome/browser/net/spdyproxy/data_reduction_proxy_settings.cc

Issue 156373002: Support for new data reduction proxy via header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 // static 202 // static
203 bool DataReductionProxySettings::IsPreconnectHintingAllowed() { 203 bool DataReductionProxySettings::IsPreconnectHintingAllowed() {
204 if (!IsDataReductionProxyAllowed()) 204 if (!IsDataReductionProxyAllowed())
205 return false; 205 return false;
206 return FieldTrialList::FindFullName("DataCompressionProxyPreconnectHints") == 206 return FieldTrialList::FindFullName("DataCompressionProxyPreconnectHints") ==
207 kEnabled; 207 kEnabled;
208 } 208 }
209 209
210 // static 210 // static
211 bool DataReductionProxySettings::WasFetchedViaProxy( 211 bool DataReductionProxySettings::WasFetchedViaProxy(
212 const net::HttpResponseHeaders* headers) { 212 const net::HttpResponseHeaders* response_headers) {
213 const char kChromeProxyViaValue[] = "1.1 Chrome Compression Proxy"; 213 if (!response_headers) {
214 return false;
215 }
216
217 const size_t kVersionSize = 4;
218 const char kDataReductionProxyViaValue[] = "Chrome-Compression-Proxy";
mef 2014/02/07 20:33:25 Any particular reason to skip version? Also, I t
bengr 2014/02/07 23:55:36 The version is the HTTP version from the origin, w
mef 2014/02/12 18:12:18 Are you sure? From this comment in rfc2616 it seem
bengr 2014/02/12 21:14:00 It is always the protocol used for the response fr
219 size_t value_len = strlen(kDataReductionProxyViaValue);
214 void* iter = NULL; 220 void* iter = NULL;
215 std::string value; 221 std::string value;
216 while (headers->EnumerateHeader(&iter, "via", &value)) 222
217 if (value == kChromeProxyViaValue) return true; 223 // Case-sensitive comparison. Assumes the received protocol and the space
224 // following it are always |kVersionSize| characters. E.g.,
225 // 'Via: 1.1 Chrome-Compression-Proxy'
226 while (response_headers->EnumerateHeader(&iter, "via", &value)) {
227 if (!value.compare(kVersionSize, value_len, kDataReductionProxyViaValue))
228 return true;
229 }
230
231 // TODO(bengr): Remove deprecated header value.
232 const char kDeprecatedDataReductionProxyViaValue[] =
233 "1.1 Chrome Compression Proxy";
234 iter = NULL;
235 while (response_headers->EnumerateHeader(&iter, "via", &value))
236 if (value == kDeprecatedDataReductionProxyViaValue) return true;
237
218 return false; 238 return false;
219 } 239 }
220 240
221 // static 241 // static
222 std::string DataReductionProxySettings::GetDataReductionProxyOrigin() { 242 std::string DataReductionProxySettings::GetDataReductionProxyOrigin() {
223 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 243 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
224 if (command_line.HasSwitch(switches::kSpdyProxyDevAuthOrigin)) 244 if (command_line.HasSwitch(switches::kSpdyProxyDevAuthOrigin))
225 return command_line.GetSwitchValueASCII(switches::kSpdyProxyDevAuthOrigin); 245 return command_line.GetSwitchValueASCII(switches::kSpdyProxyDevAuthOrigin);
226 if (command_line.HasSwitch(switches::kSpdyProxyAuthOrigin)) 246 if (command_line.HasSwitch(switches::kSpdyProxyAuthOrigin))
227 return command_line.GetSwitchValueASCII(switches::kSpdyProxyAuthOrigin); 247 return command_line.GetSwitchValueASCII(switches::kSpdyProxyAuthOrigin);
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 } 687 }
668 688
669 void 689 void
670 DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() { 690 DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() {
671 net::URLFetcher* fetcher = GetURLFetcher(); 691 net::URLFetcher* fetcher = GetURLFetcher();
672 if (!fetcher) 692 if (!fetcher)
673 return; 693 return;
674 fetcher_.reset(fetcher); 694 fetcher_.reset(fetcher);
675 fetcher_->Start(); 695 fetcher_->Start();
676 } 696 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698