Chromium Code Reviews| 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( |