Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/domain_reliability/monitor.h" | 5 #include "components/domain_reliability/monitor.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/task_runner.h" | 10 #include "base/task_runner.h" |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 upload_reporter_string_(upload_reporter_string), | 26 upload_reporter_string_(upload_reporter_string), |
| 27 scheduler_params_( | 27 scheduler_params_( |
| 28 DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()), | 28 DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()), |
| 29 dispatcher_(time_.get()), | 29 dispatcher_(time_.get()), |
| 30 pref_task_runner_(pref_thread), | 30 pref_task_runner_(pref_thread), |
| 31 network_task_runner_(network_thread), | 31 network_task_runner_(network_thread), |
| 32 moved_to_network_thread_(false), | 32 moved_to_network_thread_(false), |
| 33 discard_uploads_set_(false), | 33 discard_uploads_set_(false), |
| 34 weak_factory_(this) { | 34 weak_factory_(this) { |
| 35 DCHECK(OnPrefThread()); | 35 DCHECK(OnPrefThread()); |
| 36 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); | |
| 36 } | 37 } |
| 37 | 38 |
| 38 DomainReliabilityMonitor::DomainReliabilityMonitor( | 39 DomainReliabilityMonitor::DomainReliabilityMonitor( |
| 39 const std::string& upload_reporter_string, | 40 const std::string& upload_reporter_string, |
| 40 scoped_refptr<base::SingleThreadTaskRunner> pref_thread, | 41 scoped_refptr<base::SingleThreadTaskRunner> pref_thread, |
| 41 scoped_refptr<base::SingleThreadTaskRunner> network_thread, | 42 scoped_refptr<base::SingleThreadTaskRunner> network_thread, |
| 42 scoped_ptr<MockableTime> time) | 43 scoped_ptr<MockableTime> time) |
| 43 : time_(time.Pass()), | 44 : time_(time.Pass()), |
| 44 upload_reporter_string_(upload_reporter_string), | 45 upload_reporter_string_(upload_reporter_string), |
| 45 scheduler_params_( | 46 scheduler_params_( |
| 46 DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()), | 47 DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()), |
| 47 dispatcher_(time_.get()), | 48 dispatcher_(time_.get()), |
| 48 pref_task_runner_(pref_thread), | 49 pref_task_runner_(pref_thread), |
| 49 network_task_runner_(network_thread), | 50 network_task_runner_(network_thread), |
| 50 moved_to_network_thread_(false), | 51 moved_to_network_thread_(false), |
| 51 discard_uploads_set_(false), | 52 discard_uploads_set_(false), |
| 52 weak_factory_(this) { | 53 weak_factory_(this) { |
| 53 DCHECK(OnPrefThread()); | 54 DCHECK(OnPrefThread()); |
| 55 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); | |
|
davidben
2014/10/30 21:18:00
I think this should be in InitURLRequestContext, o
| |
| 54 } | 56 } |
| 55 | 57 |
| 56 DomainReliabilityMonitor::~DomainReliabilityMonitor() { | 58 DomainReliabilityMonitor::~DomainReliabilityMonitor() { |
| 57 if (moved_to_network_thread_) | 59 if (moved_to_network_thread_) |
| 58 DCHECK(OnNetworkThread()); | 60 DCHECK(OnNetworkThread()); |
| 59 else | 61 else |
| 60 DCHECK(OnPrefThread()); | 62 DCHECK(OnPrefThread()); |
| 61 | 63 |
| 62 ClearContexts(); | 64 ClearContexts(); |
| 65 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); | |
| 63 } | 66 } |
| 64 | 67 |
| 65 void DomainReliabilityMonitor::MoveToNetworkThread() { | 68 void DomainReliabilityMonitor::MoveToNetworkThread() { |
| 66 DCHECK(OnPrefThread()); | 69 DCHECK(OnPrefThread()); |
| 67 DCHECK(!moved_to_network_thread_); | 70 DCHECK(!moved_to_network_thread_); |
| 68 | 71 |
| 69 moved_to_network_thread_ = true; | 72 moved_to_network_thread_ = true; |
| 70 } | 73 } |
| 71 | 74 |
| 72 void DomainReliabilityMonitor::InitURLRequestContext( | 75 void DomainReliabilityMonitor::InitURLRequestContext( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 137 return; | 140 return; |
| 138 RequestInfo request_info(*request); | 141 RequestInfo request_info(*request); |
| 139 if (request_info.AccessedNetwork()) { | 142 if (request_info.AccessedNetwork()) { |
| 140 OnRequestLegComplete(request_info); | 143 OnRequestLegComplete(request_info); |
| 141 // A request was just using the network, so now is a good time to run any | 144 // A request was just using the network, so now is a good time to run any |
| 142 // pending and eligible uploads. | 145 // pending and eligible uploads. |
| 143 dispatcher_.RunEligibleTasks(); | 146 dispatcher_.RunEligibleTasks(); |
| 144 } | 147 } |
| 145 } | 148 } |
| 146 | 149 |
| 150 void DomainReliabilityMonitor::OnNetworkChanged( | |
| 151 net::NetworkChangeNotifier::ConnectionType type) { | |
| 152 last_network_change_time_ = time_->NowTicks(); | |
| 153 } | |
| 154 | |
| 147 void DomainReliabilityMonitor::ClearBrowsingData( | 155 void DomainReliabilityMonitor::ClearBrowsingData( |
| 148 DomainReliabilityClearMode mode) { | 156 DomainReliabilityClearMode mode) { |
| 149 DCHECK(OnNetworkThread()); | 157 DCHECK(OnNetworkThread()); |
| 150 | 158 |
| 151 switch (mode) { | 159 switch (mode) { |
| 152 case CLEAR_BEACONS: { | 160 case CLEAR_BEACONS: { |
| 153 ContextMap::const_iterator it; | 161 ContextMap::const_iterator it; |
| 154 for (it = contexts_.begin(); it != contexts_.end(); ++it) | 162 for (it = contexts_.begin(); it != contexts_.end(); ++it) |
| 155 it->second->ClearBeacons(); | 163 it->second->ClearBeacons(); |
| 156 break; | 164 break; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 211 DCHECK(config); | 219 DCHECK(config); |
| 212 DCHECK(config->IsValid()); | 220 DCHECK(config->IsValid()); |
| 213 | 221 |
| 214 // Grab a copy of the domain before transferring ownership of |config|. | 222 // Grab a copy of the domain before transferring ownership of |config|. |
| 215 std::string domain = config->domain; | 223 std::string domain = config->domain; |
| 216 | 224 |
| 217 DomainReliabilityContext* context = | 225 DomainReliabilityContext* context = |
| 218 new DomainReliabilityContext(time_.get(), | 226 new DomainReliabilityContext(time_.get(), |
| 219 scheduler_params_, | 227 scheduler_params_, |
| 220 upload_reporter_string_, | 228 upload_reporter_string_, |
| 229 last_network_change_time_, | |
| 221 &dispatcher_, | 230 &dispatcher_, |
| 222 uploader_.get(), | 231 uploader_.get(), |
| 223 config.Pass()); | 232 config.Pass()); |
| 224 | 233 |
| 225 std::pair<ContextMap::iterator, bool> map_it = | 234 std::pair<ContextMap::iterator, bool> map_it = |
| 226 contexts_.insert(make_pair(domain, context)); | 235 contexts_.insert(make_pair(domain, context)); |
| 227 // Make sure the domain wasn't already in the map. | 236 // Make sure the domain wasn't already in the map. |
| 228 DCHECK(map_it.second); | 237 DCHECK(map_it.second); |
| 229 | 238 |
| 230 return map_it.first->second; | 239 return map_it.first->second; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 | 328 |
| 320 return NULL; | 329 return NULL; |
| 321 } | 330 } |
| 322 | 331 |
| 323 base::WeakPtr<DomainReliabilityMonitor> | 332 base::WeakPtr<DomainReliabilityMonitor> |
| 324 DomainReliabilityMonitor::MakeWeakPtr() { | 333 DomainReliabilityMonitor::MakeWeakPtr() { |
| 325 return weak_factory_.GetWeakPtr(); | 334 return weak_factory_.GetWeakPtr(); |
| 326 } | 335 } |
| 327 | 336 |
| 328 } // namespace domain_reliability | 337 } // namespace domain_reliability |
| OLD | NEW |