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/09/04 21:18:21
What's the significance of 0?
megjablon
2014/09/05 20:56:40
Fixed as discussed offline.
| |
212 int64 last_update_internal = | 212 int64 last_update_internal = |
213 local_state->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); | 213 statistics_prefs_->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); |
214 base::Time last_update = base::Time::FromInternalValue(last_update_internal); | 214 base::Time last_update = base::Time::FromInternalValue(last_update_internal); |
215 return static_cast<int64>(last_update.ToJsTime()); | 215 return static_cast<int64>(last_update.ToJsTime()); |
216 } | 216 } |
217 | 217 |
218 DataReductionProxySettings::ContentLengthList | 218 DataReductionProxySettings::ContentLengthList |
219 DataReductionProxySettings::GetDailyOriginalContentLengths() { | 219 DataReductionProxySettings::GetDailyOriginalContentLengths() { |
220 DCHECK(thread_checker_.CalledOnValidThread()); | 220 DCHECK(thread_checker_.CalledOnValidThread()); |
221 return GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); | 221 return GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); |
222 } | 222 } |
223 | 223 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
298 } | 298 } |
299 } | 299 } |
300 restricted_by_carrier_ = true; | 300 restricted_by_carrier_ = true; |
301 } | 301 } |
302 | 302 |
303 PrefService* DataReductionProxySettings::GetOriginalProfilePrefs() { | 303 PrefService* DataReductionProxySettings::GetOriginalProfilePrefs() { |
304 DCHECK(thread_checker_.CalledOnValidThread()); | 304 DCHECK(thread_checker_.CalledOnValidThread()); |
305 return prefs_; | 305 return prefs_; |
306 } | 306 } |
307 | 307 |
308 PrefService* DataReductionProxySettings::GetLocalStatePrefs() { | |
309 DCHECK(thread_checker_.CalledOnValidThread()); | |
310 return local_state_prefs_; | |
311 } | |
312 | |
313 void DataReductionProxySettings::AddDefaultProxyBypassRules() { | 308 void DataReductionProxySettings::AddDefaultProxyBypassRules() { |
314 // localhost | 309 // localhost |
315 DCHECK(configurator_); | 310 DCHECK(configurator_); |
316 configurator_->AddHostPatternToBypass("<local>"); | 311 configurator_->AddHostPatternToBypass("<local>"); |
317 // RFC1918 private addresses. | 312 // RFC1918 private addresses. |
318 configurator_->AddHostPatternToBypass("10.0.0.0/8"); | 313 configurator_->AddHostPatternToBypass("10.0.0.0/8"); |
319 configurator_->AddHostPatternToBypass("172.16.0.0/12"); | 314 configurator_->AddHostPatternToBypass("172.16.0.0/12"); |
320 configurator_->AddHostPatternToBypass("192.168.0.0/16"); | 315 configurator_->AddHostPatternToBypass("192.168.0.0/16"); |
321 // RFC4193 private addresses. | 316 // RFC4193 private addresses. |
322 configurator_->AddHostPatternToBypass("fc00::/7"); | 317 configurator_->AddHostPatternToBypass("fc00::/7"); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
366 | 361 |
367 void DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange() { | 362 void DataReductionProxySettings::OnProxyAlternativeEnabledPrefChange() { |
368 DCHECK(thread_checker_.CalledOnValidThread()); | 363 DCHECK(thread_checker_.CalledOnValidThread()); |
369 if (!params_->alternative_allowed()) | 364 if (!params_->alternative_allowed()) |
370 return; | 365 return; |
371 MaybeActivateDataReductionProxy(false); | 366 MaybeActivateDataReductionProxy(false); |
372 } | 367 } |
373 | 368 |
374 void DataReductionProxySettings::ResetDataReductionStatistics() { | 369 void DataReductionProxySettings::ResetDataReductionStatistics() { |
375 DCHECK(thread_checker_.CalledOnValidThread()); | 370 DCHECK(thread_checker_.CalledOnValidThread()); |
376 PrefService* prefs = GetLocalStatePrefs(); | 371 if (!statistics_prefs_) |
377 if (!prefs) | |
378 return; | 372 return; |
379 ListPrefUpdate original_update(prefs, prefs::kDailyHttpOriginalContentLength); | 373 base::ListValue* original_update = |
380 ListPrefUpdate received_update(prefs, prefs::kDailyHttpReceivedContentLength); | 374 statistics_prefs_->GetList(prefs::kDailyHttpOriginalContentLength); |
375 base::ListValue* received_update = | |
376 statistics_prefs_->GetList(prefs::kDailyHttpReceivedContentLength); | |
381 original_update->Clear(); | 377 original_update->Clear(); |
382 received_update->Clear(); | 378 received_update->Clear(); |
383 for (size_t i = 0; i < kNumDaysInHistory; ++i) { | 379 for (size_t i = 0; i < kNumDaysInHistory; ++i) { |
384 original_update->AppendString(base::Int64ToString(0)); | 380 original_update->AppendString(base::Int64ToString(0)); |
385 received_update->AppendString(base::Int64ToString(0)); | 381 received_update->AppendString(base::Int64ToString(0)); |
386 } | 382 } |
387 } | 383 } |
388 | 384 |
389 void DataReductionProxySettings::MaybeActivateDataReductionProxy( | 385 void DataReductionProxySettings::MaybeActivateDataReductionProxy( |
390 bool at_startup) { | 386 bool at_startup) { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
475 | 471 |
476 void DataReductionProxySettings::ResetParamsForTest( | 472 void DataReductionProxySettings::ResetParamsForTest( |
477 DataReductionProxyParams* params) { | 473 DataReductionProxyParams* params) { |
478 params_.reset(params); | 474 params_.reset(params); |
479 } | 475 } |
480 | 476 |
481 DataReductionProxySettings::ContentLengthList | 477 DataReductionProxySettings::ContentLengthList |
482 DataReductionProxySettings::GetDailyContentLengths(const char* pref_name) { | 478 DataReductionProxySettings::GetDailyContentLengths(const char* pref_name) { |
483 DCHECK(thread_checker_.CalledOnValidThread()); | 479 DCHECK(thread_checker_.CalledOnValidThread()); |
484 DataReductionProxySettings::ContentLengthList content_lengths; | 480 DataReductionProxySettings::ContentLengthList content_lengths; |
485 const base::ListValue* list_value = GetLocalStatePrefs()->GetList(pref_name); | 481 if (!statistics_prefs_) { |
bengr
2014/09/04 21:18:21
Is there no way to just ensure that this function
megjablon
2014/09/05 20:56:40
These are only called by JNI calls for Android chr
| |
482 return content_lengths; | |
483 } | |
484 const base::ListValue* list_value = statistics_prefs_->GetList(pref_name); | |
486 if (list_value->GetSize() == kNumDaysInHistory) { | 485 if (list_value->GetSize() == kNumDaysInHistory) { |
487 for (size_t i = 0; i < kNumDaysInHistory; ++i) { | 486 for (size_t i = 0; i < kNumDaysInHistory; ++i) { |
488 content_lengths.push_back(GetInt64PrefValue(*list_value, i)); | 487 content_lengths.push_back(GetInt64PrefValue(*list_value, i)); |
489 } | 488 } |
490 } | 489 } |
491 return content_lengths; | 490 return content_lengths; |
492 } | 491 } |
493 | 492 |
494 void DataReductionProxySettings::GetContentLengths( | 493 void DataReductionProxySettings::GetContentLengths( |
495 unsigned int days, | 494 unsigned int days, |
496 int64* original_content_length, | 495 int64* original_content_length, |
497 int64* received_content_length, | 496 int64* received_content_length, |
498 int64* last_update_time) { | 497 int64* last_update_time) { |
499 DCHECK(thread_checker_.CalledOnValidThread()); | 498 DCHECK(thread_checker_.CalledOnValidThread()); |
500 DCHECK_LE(days, kNumDaysInHistory); | 499 DCHECK_LE(days, kNumDaysInHistory); |
501 PrefService* local_state = GetLocalStatePrefs(); | 500 if (!statistics_prefs_) { |
502 if (!local_state) { | |
503 *original_content_length = 0L; | 501 *original_content_length = 0L; |
504 *received_content_length = 0L; | 502 *received_content_length = 0L; |
505 *last_update_time = 0L; | 503 *last_update_time = 0L; |
506 return; | 504 return; |
507 } | 505 } |
508 | 506 |
509 const base::ListValue* original_list = | 507 const base::ListValue* original_list = |
510 local_state->GetList(prefs::kDailyHttpOriginalContentLength); | 508 statistics_prefs_->GetList(prefs::kDailyHttpOriginalContentLength); |
511 const base::ListValue* received_list = | 509 const base::ListValue* received_list = |
512 local_state->GetList(prefs::kDailyHttpReceivedContentLength); | 510 statistics_prefs_->GetList(prefs::kDailyHttpReceivedContentLength); |
513 | 511 |
514 if (original_list->GetSize() != kNumDaysInHistory || | 512 if (original_list->GetSize() != kNumDaysInHistory || |
515 received_list->GetSize() != kNumDaysInHistory) { | 513 received_list->GetSize() != kNumDaysInHistory) { |
516 *original_content_length = 0L; | 514 *original_content_length = 0L; |
517 *received_content_length = 0L; | 515 *received_content_length = 0L; |
518 *last_update_time = 0L; | 516 *last_update_time = 0L; |
519 return; | 517 return; |
520 } | 518 } |
521 | 519 |
522 int64 orig = 0L; | 520 int64 orig = 0L; |
523 int64 recv = 0L; | 521 int64 recv = 0L; |
524 // Include days from the end of the list going backwards. | 522 // Include days from the end of the list going backwards. |
525 for (size_t i = kNumDaysInHistory - days; | 523 for (size_t i = kNumDaysInHistory - days; |
526 i < kNumDaysInHistory; ++i) { | 524 i < kNumDaysInHistory; ++i) { |
527 orig += GetInt64PrefValue(*original_list, i); | 525 orig += GetInt64PrefValue(*original_list, i); |
528 recv += GetInt64PrefValue(*received_list, i); | 526 recv += GetInt64PrefValue(*received_list, i); |
529 } | 527 } |
530 *original_content_length = orig; | 528 *original_content_length = orig; |
531 *received_content_length = recv; | 529 *received_content_length = recv; |
532 *last_update_time = | 530 *last_update_time = |
533 local_state->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); | 531 statistics_prefs_->GetInt64(prefs::kDailyHttpContentLengthLastUpdateDate); |
534 } | 532 } |
535 | 533 |
536 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher( | 534 net::URLFetcher* DataReductionProxySettings::GetBaseURLFetcher( |
537 const GURL& gurl, | 535 const GURL& gurl, |
538 int load_flags) { | 536 int load_flags) { |
539 | 537 |
540 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl, | 538 net::URLFetcher* fetcher = net::URLFetcher::Create(gurl, |
541 net::URLFetcher::GET, | 539 net::URLFetcher::GET, |
542 this); | 540 this); |
543 fetcher->SetLoadFlags(load_flags); | 541 fetcher->SetLoadFlags(load_flags); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
604 SetProxyConfigs(enabled_by_user_, | 602 SetProxyConfigs(enabled_by_user_, |
605 IsDataReductionProxyAlternativeEnabled(), | 603 IsDataReductionProxyAlternativeEnabled(), |
606 restricted_by_carrier_, | 604 restricted_by_carrier_, |
607 false); | 605 false); |
608 } | 606 } |
609 disabled_on_vpn_ = false; | 607 disabled_on_vpn_ = false; |
610 return false; | 608 return false; |
611 } | 609 } |
612 | 610 |
613 } // namespace data_reduction_proxy | 611 } // namespace data_reduction_proxy |
OLD | NEW |