| OLD | NEW |
| 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 Loading... |
| 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 |
| 313 DCHECK(source == fetcher_.get()); |
| 307 net::URLRequestStatus status = source->GetStatus(); | 314 net::URLRequestStatus status = source->GetStatus(); |
| 308 if (status.status() == net::URLRequestStatus::FAILED && | 315 if (status.status() == net::URLRequestStatus::FAILED && |
| 309 status.error() == net::ERR_INTERNET_DISCONNECTED) { | 316 status.error() == net::ERR_INTERNET_DISCONNECTED) { |
| 310 RecordProbeURLFetchResult(INTERNET_DISCONNECTED); | 317 RecordProbeURLFetchResult(INTERNET_DISCONNECTED); |
| 311 return; | 318 return; |
| 312 } | 319 } |
| 313 | 320 |
| 314 std::string response; | 321 std::string response; |
| 315 source->GetResponseAsString(&response); | 322 source->GetResponseAsString(&response); |
| 316 | 323 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 | 399 |
| 393 LOG(WARNING) << "SPDY proxy " << (enabled ? annotated_on : kOff) | 400 LOG(WARNING) << "SPDY proxy " << (enabled ? annotated_on : kOff) |
| 394 << " " << (at_startup ? kAtStartup : kByUser); | 401 << " " << (at_startup ? kAtStartup : kByUser); |
| 395 } | 402 } |
| 396 | 403 |
| 397 void DataReductionProxySettings::OnIPAddressChanged() { | 404 void DataReductionProxySettings::OnIPAddressChanged() { |
| 398 DCHECK(thread_checker_.CalledOnValidThread()); | 405 DCHECK(thread_checker_.CalledOnValidThread()); |
| 399 if (enabled_by_user_) { | 406 if (enabled_by_user_) { |
| 400 DCHECK(params_->allowed()); | 407 DCHECK(params_->allowed()); |
| 401 ProbeWhetherDataReductionProxyIsAvailable(); | 408 ProbeWhetherDataReductionProxyIsAvailable(); |
| 409 WarmProxyConnection(); |
| 402 } | 410 } |
| 403 } | 411 } |
| 404 | 412 |
| 405 void DataReductionProxySettings::OnProxyEnabledPrefChange() { | 413 void DataReductionProxySettings::OnProxyEnabledPrefChange() { |
| 406 DCHECK(thread_checker_.CalledOnValidThread()); | 414 DCHECK(thread_checker_.CalledOnValidThread()); |
| 407 if (!params_->allowed()) | 415 if (!params_->allowed()) |
| 408 return; | 416 return; |
| 409 MaybeActivateDataReductionProxy(false); | 417 MaybeActivateDataReductionProxy(false); |
| 410 } | 418 } |
| 411 | 419 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 } | 452 } |
| 445 | 453 |
| 446 // Configure use of the data reduction proxy if it is enabled. | 454 // Configure use of the data reduction proxy if it is enabled. |
| 447 enabled_by_user_= IsDataReductionProxyEnabled(); | 455 enabled_by_user_= IsDataReductionProxyEnabled(); |
| 448 SetProxyConfigs(enabled_by_user_, | 456 SetProxyConfigs(enabled_by_user_, |
| 449 IsDataReductionProxyAlternativeEnabled(), | 457 IsDataReductionProxyAlternativeEnabled(), |
| 450 restricted_by_carrier_, | 458 restricted_by_carrier_, |
| 451 at_startup); | 459 at_startup); |
| 452 | 460 |
| 453 // Check if the proxy has been restricted explicitly by the carrier. | 461 // Check if the proxy has been restricted explicitly by the carrier. |
| 454 if (enabled_by_user_) | 462 if (enabled_by_user_) { |
| 455 ProbeWhetherDataReductionProxyIsAvailable(); | 463 ProbeWhetherDataReductionProxyIsAvailable(); |
| 464 WarmProxyConnection(); |
| 465 } |
| 456 } | 466 } |
| 457 | 467 |
| 458 void DataReductionProxySettings::SetProxyConfigs(bool enabled, | 468 void DataReductionProxySettings::SetProxyConfigs(bool enabled, |
| 459 bool alternative_enabled, | 469 bool alternative_enabled, |
| 460 bool restricted, | 470 bool restricted, |
| 461 bool at_startup) { | 471 bool at_startup) { |
| 462 DCHECK(thread_checker_.CalledOnValidThread()); | 472 DCHECK(thread_checker_.CalledOnValidThread()); |
| 463 LogProxyState(enabled, restricted, at_startup); | 473 LogProxyState(enabled, restricted, at_startup); |
| 464 // The alternative is only configured if the standard configuration is | 474 // The alternative is only configured if the standard configuration is |
| 465 // is enabled. | 475 // is enabled. |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 int64 salt, | 584 int64 salt, |
| 575 const std::string& key) { | 585 const std::string& key) { |
| 576 std::string salted_key = | 586 std::string salted_key = |
| 577 base::StringPrintf("%lld%s%lld", | 587 base::StringPrintf("%lld%s%lld", |
| 578 static_cast<long long>(salt), | 588 static_cast<long long>(salt), |
| 579 key.c_str(), | 589 key.c_str(), |
| 580 static_cast<long long>(salt)); | 590 static_cast<long long>(salt)); |
| 581 return base::UTF8ToUTF16(base::MD5String(salted_key)); | 591 return base::UTF8ToUTF16(base::MD5String(salted_key)); |
| 582 } | 592 } |
| 583 | 593 |
| 584 net::URLFetcher* DataReductionProxySettings::GetURLFetcher() { | 594 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher( |
| 585 DCHECK(url_request_context_getter_); | 595 const GURL& gurl, |
| 586 net::URLFetcher* fetcher = net::URLFetcher::Create(params_->probe_url(), | 596 int load_flags) { |
| 597 |
| 598 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl, |
| 587 net::URLFetcher::GET, | 599 net::URLFetcher::GET, |
| 588 this); | 600 this); |
| 589 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE | net::LOAD_BYPASS_PROXY); | 601 fetcher->SetLoadFlags(load_flags); |
| 602 DCHECK(url_request_context_getter_); |
| 590 fetcher->SetRequestContext(url_request_context_getter_); | 603 fetcher->SetRequestContext(url_request_context_getter_); |
| 591 // Configure max retries to be at most kMaxRetries times for 5xx errors. | 604 // Configure max retries to be at most kMaxRetries times for 5xx errors. |
| 592 static const int kMaxRetries = 5; | 605 static const int kMaxRetries = 5; |
| 593 fetcher->SetMaxRetriesOn5xx(kMaxRetries); | 606 fetcher->SetMaxRetriesOn5xx(kMaxRetries); |
| 594 fetcher->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries); | 607 fetcher->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries); |
| 595 return fetcher; | 608 return fetcher; |
| 596 } | 609 } |
| 597 | 610 |
| 611 |
| 612 net::URLFetcher* |
| 613 DataReductionProxySettings::GetURLFetcherForAvailabilityCheck() { |
| 614 return GetBaseURLFetcher(params_->probe_url(), |
| 615 net::LOAD_DISABLE_CACHE | net::LOAD_BYPASS_PROXY); |
| 616 } |
| 617 |
| 618 |
| 598 void DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() { | 619 void DataReductionProxySettings::ProbeWhetherDataReductionProxyIsAvailable() { |
| 599 net::URLFetcher* fetcher = GetURLFetcher(); | 620 net::URLFetcher* fetcher = GetURLFetcherForAvailabilityCheck(); |
| 600 if (!fetcher) | 621 if (!fetcher) |
| 601 return; | 622 return; |
| 602 fetcher_.reset(fetcher); | 623 fetcher_.reset(fetcher); |
| 603 fetcher_->Start(); | 624 fetcher_->Start(); |
| 604 } | 625 } |
| 605 | 626 |
| 627 net::URLFetcher* DataReductionProxySettings::GetURLFetcherForWarmup() { |
| 628 return GetBaseURLFetcher(params_->warmup_url(), net::LOAD_DISABLE_CACHE); |
| 629 } |
| 630 |
| 631 void DataReductionProxySettings::WarmProxyConnection() { |
| 632 net::URLFetcher* fetcher = GetURLFetcherForWarmup(); |
| 633 if (!fetcher) |
| 634 return; |
| 635 warmup_fetcher_.reset(fetcher); |
| 636 warmup_fetcher_->Start(); |
| 637 } |
| 638 |
| 606 } // namespace data_reduction_proxy | 639 } // namespace data_reduction_proxy |
| OLD | NEW |