Chromium Code Reviews| 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 | 86 |
| 87 namespace data_reduction_proxy { | 87 namespace data_reduction_proxy { |
| 88 | 88 |
| 89 DataReductionProxySettings::DataReductionProxySettings( | 89 DataReductionProxySettings::DataReductionProxySettings( |
| 90 DataReductionProxyParams* params) | 90 DataReductionProxyParams* params) |
| 91 : restricted_by_carrier_(false), | 91 : restricted_by_carrier_(false), |
| 92 enabled_by_user_(false), | 92 enabled_by_user_(false), |
| 93 disabled_on_vpn_(false), | 93 disabled_on_vpn_(false), |
| 94 unreachable_(false), | 94 unreachable_(false), |
| 95 prefs_(NULL), | 95 prefs_(NULL), |
| 96 local_state_prefs_(NULL), | |
| 97 url_request_context_getter_(NULL), | 96 url_request_context_getter_(NULL), |
| 98 configurator_(NULL) { | 97 configurator_(NULL) { |
| 99 DCHECK(params); | 98 DCHECK(params); |
| 100 params_.reset(params); | 99 params_.reset(params); |
| 101 } | 100 } |
| 102 | 101 |
| 103 DataReductionProxySettings::~DataReductionProxySettings() { | 102 DataReductionProxySettings::~DataReductionProxySettings() { |
| 104 if (params_->allowed()) | 103 if (params_->allowed()) |
| 105 spdy_proxy_auth_enabled_.Destroy(); | 104 spdy_proxy_auth_enabled_.Destroy(); |
| 106 net::NetworkChangeNotifier::RemoveIPAddressObserver(this); | 105 net::NetworkChangeNotifier::RemoveIPAddressObserver(this); |
| 107 } | 106 } |
| 108 | 107 |
| 109 void DataReductionProxySettings::InitPrefMembers() { | 108 void DataReductionProxySettings::InitPrefMembers() { |
| 110 DCHECK(thread_checker_.CalledOnValidThread()); | 109 DCHECK(thread_checker_.CalledOnValidThread()); |
| 111 spdy_proxy_auth_enabled_.Init( | 110 spdy_proxy_auth_enabled_.Init( |
| 112 prefs::kDataReductionProxyEnabled, | 111 prefs::kDataReductionProxyEnabled, |
| 113 GetOriginalProfilePrefs(), | 112 GetOriginalProfilePrefs(), |
| 114 base::Bind(&DataReductionProxySettings::OnProxyEnabledPrefChange, | 113 base::Bind(&DataReductionProxySettings::OnProxyEnabledPrefChange, |
| 115 base::Unretained(this))); | 114 base::Unretained(this))); |
| 116 data_reduction_proxy_alternative_enabled_.Init( | 115 data_reduction_proxy_alternative_enabled_.Init( |
| 117 prefs::kDataReductionProxyAltEnabled, | 116 prefs::kDataReductionProxyAltEnabled, |
| 118 GetOriginalProfilePrefs(), | 117 GetOriginalProfilePrefs(), |
| 119 base::Bind( | 118 base::Bind( |
| 120 &DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange, | 119 &DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange, |
| 121 base::Unretained(this))); | 120 base::Unretained(this))); |
| 122 } | 121 } |
| 123 | 122 |
| 124 void DataReductionProxySettings::InitDataReductionProxySettings( | 123 void DataReductionProxySettings::InitDataReductionProxySettings( |
| 125 PrefService* prefs, | 124 PrefService* prefs, |
| 126 PrefService* local_state_prefs, | |
| 127 net::URLRequestContextGetter* url_request_context_getter) { | 125 net::URLRequestContextGetter* url_request_context_getter) { |
| 128 DCHECK(thread_checker_.CalledOnValidThread()); | 126 DCHECK(thread_checker_.CalledOnValidThread()); |
| 129 DCHECK(prefs); | 127 DCHECK(prefs); |
| 130 DCHECK(local_state_prefs); | |
| 131 DCHECK(url_request_context_getter); | 128 DCHECK(url_request_context_getter); |
| 132 prefs_ = prefs; | 129 prefs_ = prefs; |
| 133 local_state_prefs_ = local_state_prefs; | |
| 134 url_request_context_getter_ = url_request_context_getter; | 130 url_request_context_getter_ = url_request_context_getter; |
| 135 InitPrefMembers(); | 131 InitPrefMembers(); |
| 136 RecordDataReductionInit(); | 132 RecordDataReductionInit(); |
| 137 | 133 |
| 138 // Disable the proxy if it is not allowed to be used. | 134 // Disable the proxy if it is not allowed to be used. |
| 139 if (!params_->allowed()) | 135 if (!params_->allowed()) |
| 140 return; | 136 return; |
| 141 | 137 |
| 142 AddDefaultProxyBypassRules(); | 138 AddDefaultProxyBypassRules(); |
| 143 net::NetworkChangeNotifier::AddIPAddressObserver(this); | 139 net::NetworkChangeNotifier::AddIPAddressObserver(this); |
| 144 | 140 |
| 145 // We set or reset the proxy pref at startup. | 141 // We set or reset the proxy pref at startup. |
| 146 MaybeActivateDataReductionProxy(true); | 142 MaybeActivateDataReductionProxy(true); |
| 147 } | 143 } |
| 148 | 144 |
| 149 void DataReductionProxySettings::InitDataReductionProxySettings( | 145 void DataReductionProxySettings::InitDataReductionProxySettings( |
| 150 PrefService* prefs, | 146 PrefService* prefs, |
| 151 PrefService* local_state_prefs, | |
| 152 net::URLRequestContextGetter* url_request_context_getter, | 147 net::URLRequestContextGetter* url_request_context_getter, |
| 153 DataReductionProxyConfigurator* configurator) { | 148 DataReductionProxyConfigurator* configurator) { |
| 154 InitDataReductionProxySettings(prefs, | 149 InitDataReductionProxySettings(prefs, |
| 155 local_state_prefs, | |
| 156 url_request_context_getter); | 150 url_request_context_getter); |
| 157 SetProxyConfigurator(configurator); | 151 SetProxyConfigurator(configurator); |
| 158 } | 152 } |
| 159 | 153 |
| 154 void DataReductionProxySettings::SetDataReductionProxyStatisticsPrefs( | |
| 155 DataReductionProxyStatisticsPrefs* statistics_prefs) { | |
| 156 statistics_prefs_ = statistics_prefs; | |
| 157 } | |
| 158 | |
| 160 void DataReductionProxySettings::SetOnDataReductionEnabledCallback( | 159 void DataReductionProxySettings::SetOnDataReductionEnabledCallback( |
| 161 const base::Callback<void(bool)>& on_data_reduction_proxy_enabled) { | 160 const base::Callback<void(bool)>& on_data_reduction_proxy_enabled) { |
| 162 on_data_reduction_proxy_enabled_ = on_data_reduction_proxy_enabled; | 161 on_data_reduction_proxy_enabled_ = on_data_reduction_proxy_enabled; |
| 163 on_data_reduction_proxy_enabled_.Run(IsDataReductionProxyEnabled()); | 162 on_data_reduction_proxy_enabled_.Run(IsDataReductionProxyEnabled()); |
| 164 } | 163 } |
| 165 | 164 |
| 166 void DataReductionProxySettings::SetProxyConfigurator( | 165 void DataReductionProxySettings::SetProxyConfigurator( |
| 167 DataReductionProxyConfigurator* configurator) { | 166 DataReductionProxyConfigurator* configurator) { |
| 168 DCHECK(configurator); | 167 DCHECK(configurator); |
| 169 configurator_ = configurator; | 168 configurator_ = configurator; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 201 if (!params_->alternative_allowed()) | 200 if (!params_->alternative_allowed()) |
| 202 return; | 201 return; |
| 203 if (data_reduction_proxy_alternative_enabled_.GetValue() != enabled) { | 202 if (data_reduction_proxy_alternative_enabled_.GetValue() != enabled) { |
| 204 data_reduction_proxy_alternative_enabled_.SetValue(enabled); | 203 data_reduction_proxy_alternative_enabled_.SetValue(enabled); |
| 205 OnProxyAlternativeEnabledPrefChange(); | 204 OnProxyAlternativeEnabledPrefChange(); |
| 206 } | 205 } |
| 207 } | 206 } |
| 208 | 207 |
| 209 int64 DataReductionProxySettings::GetDataReductionLastUpdateTime() { | 208 int64 DataReductionProxySettings::GetDataReductionLastUpdateTime() { |
| 210 DCHECK(thread_checker_.CalledOnValidThread()); | 209 DCHECK(thread_checker_.CalledOnValidThread()); |
| 211 PrefService* local_state = GetLocalStatePrefs(); | 210 if (!statistics_prefs_) { |
| 211 return 0; | |
|
bengr
2014/08/28 21:38:35
Why is this allowed?
megjablon
2014/08/30 01:10:04
Removed.
| |
| 212 } | |
| 212 int64 last_update_internal = | 213 int64 last_update_internal = |
| 213 local_state->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); | 214 statistics_prefs_->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); |
| 214 base::Time last_update = base::Time::FromInternalValue(last_update_internal); | 215 base::Time last_update = base::Time::FromInternalValue(last_update_internal); |
| 215 return static_cast<int64>(last_update.ToJsTime()); | 216 return static_cast<int64>(last_update.ToJsTime()); |
| 216 } | 217 } |
| 217 | 218 |
| 218 DataReductionProxySettings::ContentLengthList | 219 DataReductionProxySettings::ContentLengthList |
| 219 DataReductionProxySettings::GetDailyOriginalContentLengths() { | 220 DataReductionProxySettings::GetDailyOriginalContentLengths() { |
| 220 DCHECK(thread_checker_.CalledOnValidThread()); | 221 DCHECK(thread_checker_.CalledOnValidThread()); |
| 221 return GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); | 222 return GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); |
| 222 } | 223 } |
| 223 | 224 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 298 } | 299 } |
| 299 } | 300 } |
| 300 restricted_by_carrier_ = true; | 301 restricted_by_carrier_ = true; |
| 301 } | 302 } |
| 302 | 303 |
| 303 PrefService* DataReductionProxySettings::GetOriginalProfilePrefs() { | 304 PrefService* DataReductionProxySettings::GetOriginalProfilePrefs() { |
| 304 DCHECK(thread_checker_.CalledOnValidThread()); | 305 DCHECK(thread_checker_.CalledOnValidThread()); |
| 305 return prefs_; | 306 return prefs_; |
| 306 } | 307 } |
| 307 | 308 |
| 308 PrefService* DataReductionProxySettings::GetLocalStatePrefs() { | |
| 309 DCHECK(thread_checker_.CalledOnValidThread()); | |
| 310 return local_state_prefs_; | |
| 311 } | |
| 312 | |
| 313 void DataReductionProxySettings::AddDefaultProxyBypassRules() { | 309 void DataReductionProxySettings::AddDefaultProxyBypassRules() { |
| 314 // localhost | 310 // localhost |
| 315 DCHECK(configurator_); | 311 DCHECK(configurator_); |
| 316 configurator_->AddHostPatternToBypass("<local>"); | 312 configurator_->AddHostPatternToBypass("<local>"); |
| 317 // RFC1918 private addresses. | 313 // RFC1918 private addresses. |
| 318 configurator_->AddHostPatternToBypass("10.0.0.0/8"); | 314 configurator_->AddHostPatternToBypass("10.0.0.0/8"); |
| 319 configurator_->AddHostPatternToBypass("172.16.0.0/12"); | 315 configurator_->AddHostPatternToBypass("172.16.0.0/12"); |
| 320 configurator_->AddHostPatternToBypass("192.168.0.0/16"); | 316 configurator_->AddHostPatternToBypass("192.168.0.0/16"); |
| 321 // RFC4193 private addresses. | 317 // RFC4193 private addresses. |
| 322 configurator_->AddHostPatternToBypass("fc00::/7"); | 318 configurator_->AddHostPatternToBypass("fc00::/7"); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 366 | 362 |
| 367 void DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange() { | 363 void DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange() { |
| 368 DCHECK(thread_checker_.CalledOnValidThread()); | 364 DCHECK(thread_checker_.CalledOnValidThread()); |
| 369 if (!params_->alternative_allowed()) | 365 if (!params_->alternative_allowed()) |
| 370 return; | 366 return; |
| 371 MaybeActivateDataReductionProxy(false); | 367 MaybeActivateDataReductionProxy(false); |
| 372 } | 368 } |
| 373 | 369 |
| 374 void DataReductionProxySettings::ResetDataReductionStatistics() { | 370 void DataReductionProxySettings::ResetDataReductionStatistics() { |
| 375 DCHECK(thread_checker_.CalledOnValidThread()); | 371 DCHECK(thread_checker_.CalledOnValidThread()); |
| 376 PrefService* prefs = GetLocalStatePrefs(); | 372 if (!statistics_prefs_) |
| 377 if (!prefs) | |
| 378 return; | 373 return; |
| 379 ListPrefUpdate original_update(prefs, prefs::kDailyHttpOriginalContentLength); | 374 base::ListValue* original_update = |
| 380 ListPrefUpdate received_update(prefs, prefs::kDailyHttpReceivedContentLength); | 375 statistics_prefs_->GetList(prefs::kDailyHttpOriginalContentLength); |
| 376 base::ListValue* received_update = | |
| 377 statistics_prefs_->GetList(prefs::kDailyHttpReceivedContentLength); | |
| 381 original_update->Clear(); | 378 original_update->Clear(); |
| 382 received_update->Clear(); | 379 received_update->Clear(); |
| 383 for (size_t i = 0; i < kNumDaysInHistory; ++i) { | 380 for (size_t i = 0; i < kNumDaysInHistory; ++i) { |
| 384 original_update->AppendString(base::Int64ToString(0)); | 381 original_update->AppendString(base::Int64ToString(0)); |
| 385 received_update->AppendString(base::Int64ToString(0)); | 382 received_update->AppendString(base::Int64ToString(0)); |
| 386 } | 383 } |
| 387 } | 384 } |
| 388 | 385 |
| 389 void DataReductionProxySettings::MaybeActivateDataReductionProxy( | 386 void DataReductionProxySettings::MaybeActivateDataReductionProxy( |
| 390 bool at_startup) { | 387 bool at_startup) { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 475 | 472 |
| 476 void DataReductionProxySettings::ResetParamsForTest( | 473 void DataReductionProxySettings::ResetParamsForTest( |
| 477 DataReductionProxyParams* params) { | 474 DataReductionProxyParams* params) { |
| 478 params_.reset(params); | 475 params_.reset(params); |
| 479 } | 476 } |
| 480 | 477 |
| 481 DataReductionProxySettings::ContentLengthList | 478 DataReductionProxySettings::ContentLengthList |
| 482 DataReductionProxySettings::GetDailyContentLengths(const char* pref_name) { | 479 DataReductionProxySettings::GetDailyContentLengths(const char* pref_name) { |
| 483 DCHECK(thread_checker_.CalledOnValidThread()); | 480 DCHECK(thread_checker_.CalledOnValidThread()); |
| 484 DataReductionProxySettings::ContentLengthList content_lengths; | 481 DataReductionProxySettings::ContentLengthList content_lengths; |
| 485 const base::ListValue* list_value = GetLocalStatePrefs()->GetList(pref_name); | 482 if (!statistics_prefs_) { |
| 483 return content_lengths; | |
| 484 } | |
| 485 const base::ListValue* list_value = statistics_prefs_->GetList(pref_name); | |
| 486 if (list_value->GetSize() == kNumDaysInHistory) { | 486 if (list_value->GetSize() == kNumDaysInHistory) { |
| 487 for (size_t i = 0; i < kNumDaysInHistory; ++i) { | 487 for (size_t i = 0; i < kNumDaysInHistory; ++i) { |
| 488 content_lengths.push_back(GetInt64PrefValue(*list_value, i)); | 488 content_lengths.push_back(GetInt64PrefValue(*list_value, i)); |
| 489 } | 489 } |
| 490 } | 490 } |
| 491 return content_lengths; | 491 return content_lengths; |
| 492 } | 492 } |
| 493 | 493 |
| 494 void DataReductionProxySettings::GetContentLengths( | 494 void DataReductionProxySettings::GetContentLengths( |
| 495 unsigned int days, | 495 unsigned int days, |
| 496 int64* original_content_length, | 496 int64* original_content_length, |
| 497 int64* received_content_length, | 497 int64* received_content_length, |
| 498 int64* last_update_time) { | 498 int64* last_update_time) { |
| 499 DCHECK(thread_checker_.CalledOnValidThread()); | 499 DCHECK(thread_checker_.CalledOnValidThread()); |
| 500 DCHECK_LE(days, kNumDaysInHistory); | 500 DCHECK_LE(days, kNumDaysInHistory); |
| 501 PrefService* local_state = GetLocalStatePrefs(); | 501 if (!statistics_prefs_) { |
| 502 if (!local_state) { | |
| 503 *original_content_length = 0L; | 502 *original_content_length = 0L; |
| 504 *received_content_length = 0L; | 503 *received_content_length = 0L; |
| 505 *last_update_time = 0L; | 504 *last_update_time = 0L; |
| 506 return; | 505 return; |
| 507 } | 506 } |
| 508 | 507 |
| 509 const base::ListValue* original_list = | 508 const base::ListValue* original_list = |
| 510 local_state->GetList(prefs::kDailyHttpOriginalContentLength); | 509 statistics_prefs_->GetList(prefs::kDailyHttpOriginalContentLength); |
| 511 const base::ListValue* received_list = | 510 const base::ListValue* received_list = |
| 512 local_state->GetList(prefs::kDailyHttpReceivedContentLength); | 511 statistics_prefs_->GetList(prefs::kDailyHttpReceivedContentLength); |
| 513 | 512 |
| 514 if (original_list->GetSize() != kNumDaysInHistory || | 513 if (original_list->GetSize() != kNumDaysInHistory || |
| 515 received_list->GetSize() != kNumDaysInHistory) { | 514 received_list->GetSize() != kNumDaysInHistory) { |
| 516 *original_content_length = 0L; | 515 *original_content_length = 0L; |
| 517 *received_content_length = 0L; | 516 *received_content_length = 0L; |
| 518 *last_update_time = 0L; | 517 *last_update_time = 0L; |
| 519 return; | 518 return; |
| 520 } | 519 } |
| 521 | 520 |
| 522 int64 orig = 0L; | 521 int64 orig = 0L; |
| 523 int64 recv = 0L; | 522 int64 recv = 0L; |
| 524 // Include days from the end of the list going backwards. | 523 // Include days from the end of the list going backwards. |
| 525 for (size_t i = kNumDaysInHistory - days; | 524 for (size_t i = kNumDaysInHistory - days; |
| 526 i < kNumDaysInHistory; ++i) { | 525 i < kNumDaysInHistory; ++i) { |
| 527 orig += GetInt64PrefValue(*original_list, i); | 526 orig += GetInt64PrefValue(*original_list, i); |
| 528 recv += GetInt64PrefValue(*received_list, i); | 527 recv += GetInt64PrefValue(*received_list, i); |
| 529 } | 528 } |
| 530 *original_content_length = orig; | 529 *original_content_length = orig; |
| 531 *received_content_length = recv; | 530 *received_content_length = recv; |
| 532 *last_update_time = | 531 *last_update_time = |
| 533 local_state->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); | 532 statistics_prefs_->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); |
| 534 } | 533 } |
| 535 | 534 |
| 536 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher( | 535 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher( |
| 537 const GURL& gurl, | 536 const GURL& gurl, |
| 538 int load_flags) { | 537 int load_flags) { |
| 539 | 538 |
| 540 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl, | 539 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl, |
| 541 net::URLFetcher::GET, | 540 net::URLFetcher::GET, |
| 542 this); | 541 this); |
| 543 fetcher->SetLoadFlags(load_flags); | 542 fetcher->SetLoadFlags(load_flags); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 604 SetProxyConfigs(enabled_by_user_, | 603 SetProxyConfigs(enabled_by_user_, |
| 605 IsDataReductionProxyAlternativeEnabled(), | 604 IsDataReductionProxyAlternativeEnabled(), |
| 606 restricted_by_carrier_, | 605 restricted_by_carrier_, |
| 607 false); | 606 false); |
| 608 } | 607 } |
| 609 disabled_on_vpn_ = false; | 608 disabled_on_vpn_ = false; |
| 610 return false; | 609 return false; |
| 611 } | 610 } |
| 612 | 611 |
| 613 } // namespace data_reduction_proxy | 612 } // namespace data_reduction_proxy |
| OLD | NEW |