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

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: Fix pref handling 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
« no previous file with comments | « components/domain_reliability/monitor.h ('k') | components/domain_reliability/monitor_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/domain_reliability/monitor.cc
diff --git a/components/domain_reliability/monitor.cc b/components/domain_reliability/monitor.cc
index bde4c63c6dfd1169b45a8d25b73384dec7268178..c25c4d7410963b1cbcd2b587a9f22cdb2df3ee54 100644
--- a/components/domain_reliability/monitor.cc
+++ b/components/domain_reliability/monitor.cc
@@ -6,7 +6,6 @@
#include "base/command_line.h"
#include "base/logging.h"
-#include "base/message_loop/message_loop.h"
#include "base/single_thread_task_runner.h"
#include "base/task_runner.h"
#include "base/threading/thread_checker.h"
@@ -27,6 +26,7 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
+ reporting_pref_initialized_(false),
weak_factory_(this) {}
DomainReliabilityMonitor::DomainReliabilityMonitor(
@@ -37,32 +37,54 @@ DomainReliabilityMonitor::DomainReliabilityMonitor(
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
+ reporting_pref_initialized_(false),
weak_factory_(this) {}
DomainReliabilityMonitor::~DomainReliabilityMonitor() {
+ DCHECK(!thread_checker_ || thread_checker_->CalledOnValidThread());
+
ClearContexts();
}
-void DomainReliabilityMonitor::Init(
+void DomainReliabilityMonitor::InitReportingPref(
+ PrefService* local_state_pref_service,
+ const char* reporting_pref_name,
+ const scoped_refptr<base::SingleThreadTaskRunner>&
+ network_task_runner) {
+ DCHECK(!reporting_pref_initialized_);
+
+ reporting_pref_.Init(
+ reporting_pref_name,
+ local_state_pref_service,
+ base::Bind(&DomainReliabilityMonitor::OnReportingPrefChanged,
+ base::Unretained(this)));
+ reporting_pref_initialized_ = true;
+ reporting_pref_.MoveToThread(network_task_runner);
+}
+
+void DomainReliabilityMonitor::InitURLRequestContext(
net::URLRequestContext* url_request_context,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
davidben 2014/08/22 19:00:40 I wonder if the thread_checker_ should be replaced
davidben 2014/08/22 19:02:10 Er, that got lost in rewording. By 'add DCHECK', I
+ 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()->
RunsTasksOnCurrentThread());
- uploader_ = DomainReliabilityUploader::Create(url_request_context_getter);
thread_checker_.reset(new base::ThreadChecker());
+ uploader_ = DomainReliabilityUploader::Create(url_request_context_getter);
+ OnReportingPrefChanged();
}
void DomainReliabilityMonitor::AddBakedInConfigs() {
@@ -237,6 +259,15 @@ void DomainReliabilityMonitor::OnRequestLegComplete(
context->OnBeacon(request.url, beacon);
}
+void DomainReliabilityMonitor::OnReportingPrefChanged() {
davidben 2014/08/22 19:00:40 Probably want to add a check for uploader_ being N
Deprecated (see juliatuttle) 2014/08/23 00:10:29 Done.
+ // When metrics reporting is disabled, discard Domain Reliability uploads.
+ uploader_->set_discard_uploads(!*reporting_pref_);
+}
+
+void DomainReliabilityMonitor::DestroyReportingPref() {
+ reporting_pref_.Destroy();
+}
+
// TODO(ttuttle): Keep a separate wildcard_contexts_ map to avoid having to
// prepend '*.' to domains.
DomainReliabilityContext* DomainReliabilityMonitor::GetContextForHost(
« no previous file with comments | « components/domain_reliability/monitor.h ('k') | components/domain_reliability/monitor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698