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..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( |