| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/histogram_synchronizer.h" | 5 #include "content/browser/histogram_synchronizer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 base::LazyInstance | 158 base::LazyInstance |
| 159 <HistogramSynchronizer::RequestContext::RequestContextMap>::Leaky | 159 <HistogramSynchronizer::RequestContext::RequestContextMap>::Leaky |
| 160 HistogramSynchronizer::RequestContext::outstanding_requests_ = | 160 HistogramSynchronizer::RequestContext::outstanding_requests_ = |
| 161 LAZY_INSTANCE_INITIALIZER; | 161 LAZY_INSTANCE_INITIALIZER; |
| 162 | 162 |
| 163 HistogramSynchronizer::HistogramSynchronizer() | 163 HistogramSynchronizer::HistogramSynchronizer() |
| 164 : lock_(), | 164 : lock_(), |
| 165 callback_thread_(NULL), | 165 callback_thread_(NULL), |
| 166 last_used_sequence_number_(kNeverUsableSequenceNumber), | 166 last_used_sequence_number_(kNeverUsableSequenceNumber), |
| 167 async_sequence_number_(kNeverUsableSequenceNumber) { | 167 async_sequence_number_(kNeverUsableSequenceNumber) { |
| 168 content::HistogramController::GetInstance()->Register(this); | 168 HistogramController::GetInstance()->Register(this); |
| 169 } | 169 } |
| 170 | 170 |
| 171 HistogramSynchronizer::~HistogramSynchronizer() { | 171 HistogramSynchronizer::~HistogramSynchronizer() { |
| 172 RequestContext::OnShutdown(); | 172 RequestContext::OnShutdown(); |
| 173 | 173 |
| 174 // Just in case we have any pending tasks, clear them out. | 174 // Just in case we have any pending tasks, clear them out. |
| 175 SetCallbackTaskAndThread(NULL, base::Closure()); | 175 SetCallbackTaskAndThread(NULL, base::Closure()); |
| 176 } | 176 } |
| 177 | 177 |
| 178 HistogramSynchronizer* HistogramSynchronizer::GetInstance() { | 178 HistogramSynchronizer* HistogramSynchronizer::GetInstance() { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 int sequence_number = GetNextAvailableSequenceNumber(requester); | 232 int sequence_number = GetNextAvailableSequenceNumber(requester); |
| 233 | 233 |
| 234 base::Closure callback = base::Bind( | 234 base::Closure callback = base::Bind( |
| 235 &HistogramSynchronizer::ForceHistogramSynchronizationDoneCallback, | 235 &HistogramSynchronizer::ForceHistogramSynchronizationDoneCallback, |
| 236 base::Unretained(this), | 236 base::Unretained(this), |
| 237 sequence_number); | 237 sequence_number); |
| 238 | 238 |
| 239 RequestContext::Register(callback, sequence_number); | 239 RequestContext::Register(callback, sequence_number); |
| 240 | 240 |
| 241 // Get histogram data from renderer and browser child processes. | 241 // Get histogram data from renderer and browser child processes. |
| 242 content::HistogramController::GetInstance()->GetHistogramData( | 242 HistogramController::GetInstance()->GetHistogramData(sequence_number); |
| 243 sequence_number); | |
| 244 | 243 |
| 245 // Post a task that would be called after waiting for wait_time. This acts | 244 // Post a task that would be called after waiting for wait_time. This acts |
| 246 // as a watchdog, to cancel the requests for non-responsive processes. | 245 // as a watchdog, to cancel the requests for non-responsive processes. |
| 247 BrowserThread::PostDelayedTask( | 246 BrowserThread::PostDelayedTask( |
| 248 BrowserThread::UI, FROM_HERE, | 247 BrowserThread::UI, FROM_HERE, |
| 249 base::Bind(&RequestContext::Unregister, sequence_number), | 248 base::Bind(&RequestContext::Unregister, sequence_number), |
| 250 wait_time); | 249 wait_time); |
| 251 } | 250 } |
| 252 | 251 |
| 253 void HistogramSynchronizer::OnPendingProcesses(int sequence_number, | 252 void HistogramSynchronizer::OnPendingProcesses(int sequence_number, |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 kHistogramSynchronizerReservedSequenceNumber + 1; | 336 kHistogramSynchronizerReservedSequenceNumber + 1; |
| 338 } | 337 } |
| 339 DCHECK_NE(last_used_sequence_number_, | 338 DCHECK_NE(last_used_sequence_number_, |
| 340 kHistogramSynchronizerReservedSequenceNumber); | 339 kHistogramSynchronizerReservedSequenceNumber); |
| 341 if (requester == ASYNC_HISTOGRAMS) | 340 if (requester == ASYNC_HISTOGRAMS) |
| 342 async_sequence_number_ = last_used_sequence_number_; | 341 async_sequence_number_ = last_used_sequence_number_; |
| 343 return last_used_sequence_number_; | 342 return last_used_sequence_number_; |
| 344 } | 343 } |
| 345 | 344 |
| 346 } // namespace content | 345 } // namespace content |
| OLD | NEW |