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

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

Issue 473723002: Update data reduction proxy statistics prefs less often on desktop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tooManyWritesPatch
Patch Set: Addressed bengr comments Created 6 years, 3 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698