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

Unified Diff: components/domain_reliability/monitor.cc

Issue 491753003: Domain Reliability: Don't upload when metrics reporting is off. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Block uploads in uploader, not dispatcher Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: components/domain_reliability/monitor.cc
diff --git a/components/domain_reliability/monitor.cc b/components/domain_reliability/monitor.cc
index bde4c63c6dfd1169b45a8d25b73384dec7268178..4419f704ee3a9ac87c346def4b955891f1bd4e7b 100644
--- a/components/domain_reliability/monitor.cc
+++ b/components/domain_reliability/monitor.cc
@@ -27,6 +27,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
+ reporting_pref_initialized_(false),
weak_factory_(this) {}
DomainReliabilityMonitor::DomainReliabilityMonitor(
@@ -37,25 +38,47 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
+ reporting_pref_initialized_(false),
weak_factory_(this) {}
DomainReliabilityMonitor::~DomainReliabilityMonitor() {
ClearContexts();
}
-void DomainReliabilityMonitor::Init(
+void DomainReliabilityMonitor::InitReportingPref(
davidben 2014/08/20 21:49:02 Is this called anywhere outside of test code yet?
Deprecated (see juliatuttle) 2014/08/21 18:35:28 It is now!
+ PrefService* local_state_pref_service,
+ const char* reporting_pref_name,
+ const scoped_refptr<base::SingleThreadTaskRunner>&
+ network_message_loop_proxy) {
+ DCHECK(!reporting_pref_initialized_);
+
+ reporting_pref_.Init(
+ reporting_pref_name,
+ local_state_pref_service,
+ base::Bind(&DomainReliabilityMonitor::OnReportingPrefChanged,
+ base::Unretained(this)));
+ reporting_pref_.MoveToThread(network_message_loop_proxy);
+
+ reporting_pref_initialized_ = true;
+
+ OnReportingPrefChanged();
davidben 2014/08/20 21:49:03 Doesn't this require that |uploader_| be initializ
Deprecated (see juliatuttle) 2014/08/21 18:35:28 Well-spotted.
+}
+
+void DomainReliabilityMonitor::InitURLRequestContext(
net::URLRequestContext* url_request_context,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
+ DCHECK(reporting_pref_initialized_);
DCHECK(!thread_checker_);
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
new net::TrivialURLRequestContextGetter(url_request_context,
task_runner);
- Init(url_request_context_getter);
+ InitURLRequestContext(url_request_context_getter);
}
-void DomainReliabilityMonitor::Init(
+void DomainReliabilityMonitor::InitURLRequestContext(
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter) {
+ DCHECK(reporting_pref_initialized_);
DCHECK(!thread_checker_);
DCHECK(url_request_context_getter->GetNetworkTaskRunner()->
@@ -237,6 +260,11 @@ void DomainReliabilityMonitor::OnRequestLegComplete(
context->OnBeacon(request.url, beacon);
}
+void DomainReliabilityMonitor::OnReportingPrefChanged() {
+ // When metrics reporting is disabled, discard Domain Reliability uploads.
+ uploader_->set_discard_uploads(!*reporting_pref_);
+}
+
// TODO(ttuttle): Keep a separate wildcard_contexts_ map to avoid having to
// prepend '*.' to domains.
DomainReliabilityContext* DomainReliabilityMonitor::GetContextForHost(

Powered by Google App Engine
This is Rietveld 408576698