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 |