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

Side by Side Diff: components/data_reduction_proxy/browser/data_reduction_proxy_settings.cc

Issue 338723002: Add probe to warm data reduction proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/data_reduction_proxy/browser/data_reduction_proxy_settings. h" 5 #include "components/data_reduction_proxy/browser/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 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 297
298 DataReductionProxySettings::ContentLengthList 298 DataReductionProxySettings::ContentLengthList
299 DataReductionProxySettings::GetDailyReceivedContentLengths() { 299 DataReductionProxySettings::GetDailyReceivedContentLengths() {
300 DCHECK(thread_checker_.CalledOnValidThread()); 300 DCHECK(thread_checker_.CalledOnValidThread());
301 return GetDailyContentLengths(prefs::kDailyHttpReceivedContentLength); 301 return GetDailyContentLengths(prefs::kDailyHttpReceivedContentLength);
302 } 302 }
303 303
304 void DataReductionProxySettings::OnURLFetchComplete( 304 void DataReductionProxySettings::OnURLFetchComplete(
305 const net::URLFetcher* source) { 305 const net::URLFetcher* source) {
306 DCHECK(thread_checker_.CalledOnValidThread()); 306 DCHECK(thread_checker_.CalledOnValidThread());
307
308 // The purpose of sending a request for the warmup URL is to warm the
309 // connection to the data_reduction_proxy. The result is ignored.
310 if (source == warmup_fetcher_.get())
311 return;
312
marq (ping after 24h) 2014/06/16 17:23:35 DCHECK(source == fetcher_.get()), so that adding a
bengr 2014/06/17 03:42:09 Done.
307 net::URLRequestStatus status = source->GetStatus(); 313 net::URLRequestStatus status = source->GetStatus();
308 if (status.status() == net::URLRequestStatus::FAILED && 314 if (status.status() == net::URLRequestStatus::FAILED &&
309 status.error() == net::ERR_INTERNET_DISCONNECTED) { 315 status.error() == net::ERR_INTERNET_DISCONNECTED) {
310 RecordProbeURLFetchResult(INTERNET_DISCONNECTED); 316 RecordProbeURLFetchResult(INTERNET_DISCONNECTED);
311 return; 317 return;
312 } 318 }
313 319
314 std::string response; 320 std::string response;
315 source->GetResponseAsString(&response); 321 source->GetResponseAsString(&response);
316 322
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 398
393 LOG(WARNING) << "SPDY proxy " << (enabled ? annotated_on : kOff) 399 LOG(WARNING) << "SPDY proxy " << (enabled ? annotated_on : kOff)
394 << " " << (at_startup ? kAtStartup : kByUser); 400 << " " << (at_startup ? kAtStartup : kByUser);
395 } 401 }
396 402
397 void DataReductionProxySettings::OnIPAddressChanged() { 403 void DataReductionProxySettings::OnIPAddressChanged() {
398 DCHECK(thread_checker_.CalledOnValidThread()); 404 DCHECK(thread_checker_.CalledOnValidThread());
399 if (enabled_by_user_) { 405 if (enabled_by_user_) {
400 DCHECK(params_->allowed()); 406 DCHECK(params_->allowed());
401 ProbeWhetherDataReductionProxyIsAvailable(); 407 ProbeWhetherDataReductionProxyIsAvailable();
408 WarmProxyConnection();
402 } 409 }
403 } 410 }
404 411
405 void DataReductionProxySettings::OnProxyEnabledPrefChange() { 412 void DataReductionProxySettings::OnProxyEnabledPrefChange() {
406 DCHECK(thread_checker_.CalledOnValidThread()); 413 DCHECK(thread_checker_.CalledOnValidThread());
407 if (!params_->allowed()) 414 if (!params_->allowed())
408 return; 415 return;
409 MaybeActivateDataReductionProxy(false); 416 MaybeActivateDataReductionProxy(false);
410 } 417 }
411 418
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 } 451 }
445 452
446 // Configure use of the data reduction proxy if it is enabled. 453 // Configure use of the data reduction proxy if it is enabled.
447 enabled_by_user_= IsDataReductionProxyEnabled(); 454 enabled_by_user_= IsDataReductionProxyEnabled();
448 SetProxyConfigs(enabled_by_user_, 455 SetProxyConfigs(enabled_by_user_,
449 IsDataReductionProxyAlternativeEnabled(), 456 IsDataReductionProxyAlternativeEnabled(),
450 restricted_by_carrier_, 457 restricted_by_carrier_,
451 at_startup); 458 at_startup);
452 459
453 // Check if the proxy has been restricted explicitly by the carrier. 460 // Check if the proxy has been restricted explicitly by the carrier.
454 if (enabled_by_user_) 461 if (enabled_by_user_) {
455 ProbeWhetherDataReductionProxyIsAvailable(); 462 ProbeWhetherDataReductionProxyIsAvailable();
463 WarmProxyConnection();
464 }
456 } 465 }
457 466
458 void DataReductionProxySettings::SetProxyConfigs(bool enabled, 467 void DataReductionProxySettings::SetProxyConfigs(bool enabled,
459 bool alternative_enabled, 468 bool alternative_enabled,
460 bool restricted, 469 bool restricted,
461 bool at_startup) { 470 bool at_startup) {
462 DCHECK(thread_checker_.CalledOnValidThread()); 471 DCHECK(thread_checker_.CalledOnValidThread());
463 LogProxyState(enabled, restricted, at_startup); 472 LogProxyState(enabled, restricted, at_startup);
464 // The alternative is only configured if the standard configuration is 473 // The alternative is only configured if the standard configuration is
465 // is enabled. 474 // is enabled.
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 int64 salt, 583 int64 salt,
575 const std::string& key) { 584 const std::string& key) {
576 std::string salted_key = 585 std::string salted_key =
577 base::StringPrintf("%lld%s%lld", 586 base::StringPrintf("%lld%s%lld",
578 static_cast<long long>(salt), 587 static_cast<long long>(salt),
579 key.c_str(), 588 key.c_str(),
580 static_cast<long long>(salt)); 589 static_cast<long long>(salt));
581 return base::UTF8ToUTF16(base::MD5String(salted_key)); 590 return base::UTF8ToUTF16(base::MD5String(salted_key));
582 } 591 }
583 592
584 net::URLFetcher* DataReductionProxySettings::GetURLFetcher() { 593 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher(
585 DCHECK(url_request_context_getter_); 594 const GURL& gurl,
586 net::URLFetcher* fetcher = net::URLFetcher::Create(params_->probe_url(), 595 int load_flags) {
596
597 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl,
587 net::URLFetcher::GET, 598 net::URLFetcher::GET,
588 this); 599 this);
589 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE | net::LOAD_BYPASS_PROXY); 600 fetcher->SetLoadFlags(load_flags);
601 DCHECK(url_request_context_getter_);
590 fetcher->SetRequestContext(url_request_context_getter_); 602 fetcher->SetRequestContext(url_request_context_getter_);
591 // Configure max retries to be at most kMaxRetries times for 5xx errors. 603 // Configure max retries to be at most kMaxRetries times for 5xx errors.
592 static const int kMaxRetries = 5; 604 static const int kMaxRetries = 5;
593 fetcher->SetMaxRetriesOn5xx(kMaxRetries); 605 fetcher->SetMaxRetriesOn5xx(kMaxRetries);
594 fetcher->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries); 606 fetcher->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries);
595 return fetcher; 607 return fetcher;
596 } 608 }
597 609
610
611 net::URLFetcher* DataReductionProxySettings::GetURLFetcher() {
marq (ping after 24h) 2014/06/16 17:23:34 I think you can tighten things up a bit and roll t
bengr 2014/06/17 03:42:09 This is the way it is to make testing easier.
612 return GetBaseURLFetcher(params_->probe_url(),
613 net::LOAD_DISABLE_CACHE | net::LOAD_BYPASS_PROXY);
614 }
615
616
598 void DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() { 617 void DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() {
599 net::URLFetcher* fetcher = GetURLFetcher(); 618 net::URLFetcher* fetcher = GetURLFetcher();
600 if (!fetcher) 619 if (!fetcher)
601 return; 620 return;
602 fetcher_.reset(fetcher); 621 fetcher_.reset(fetcher);
603 fetcher_->Start(); 622 fetcher_->Start();
604 } 623 }
605 624
625 net::URLFetcher* DataReductionProxySettings::GetURLFetcherForWarmup() {
626 return GetBaseURLFetcher(params_->warmup_url(),
627 net::LOAD_DISABLE_CACHE);
marq (ping after 24h) 2014/06/16 17:23:35 This will fit on one line.
bengr 2014/06/17 03:42:09 Done.
628 }
629
630 void DataReductionProxySettings::WarmProxyConnection() {
631 net::URLFetcher* fetcher = GetURLFetcherForWarmup();
632 if (!fetcher)
633 return;
634 warmup_fetcher_.reset(fetcher);
635 warmup_fetcher_->Start();
636 }
637
606 } // namespace data_reduction_proxy 638 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698