| 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 //------------------------------------------------------------------------------ | 5 //------------------------------------------------------------------------------ |
| 6 // Description of the life cycle of a instance of MetricsService. | 6 // Description of the life cycle of a instance of MetricsService. |
| 7 // | 7 // |
| 8 // OVERVIEW | 8 // OVERVIEW |
| 9 // | 9 // |
| 10 // A MetricsService instance is typically created at application startup. It is | 10 // A MetricsService instance is typically created at application startup. It is |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 | 245 |
| 246 SyntheticTrialGroup::SyntheticTrialGroup(uint32 trial, uint32 group) { | 246 SyntheticTrialGroup::SyntheticTrialGroup(uint32 trial, uint32 group) { |
| 247 id.name = trial; | 247 id.name = trial; |
| 248 id.group = group; | 248 id.group = group; |
| 249 } | 249 } |
| 250 | 250 |
| 251 SyntheticTrialGroup::~SyntheticTrialGroup() { | 251 SyntheticTrialGroup::~SyntheticTrialGroup() { |
| 252 } | 252 } |
| 253 | 253 |
| 254 MetricsService::PersistentHistogramIterator::PersistentHistogramIterator( | 254 MetricsService::PersistentHistogramIterator::PersistentHistogramIterator( |
| 255 HistogramSet* found_histograms, |
| 255 AllocatorSet& allocators, | 256 AllocatorSet& allocators, |
| 256 AllocatorSet::iterator pos) | 257 AllocatorSet::iterator pos) |
| 257 : allocators_(allocators), | 258 : allocators_(allocators), |
| 258 allocator_iter_(pos) { | 259 allocator_iter_(pos), |
| 260 found_histograms_(found_histograms) { |
| 259 if (pos != allocators_.end()) { | 261 if (pos != allocators_.end()) { |
| 260 (*allocator_iter_)->CreateIterator(&histogram_iter_); | 262 (*allocator_iter_)->CreateIterator(&histogram_iter_); |
| 261 // Have to call ++ to advance iterator to the first persistent histogram. | 263 // Have to call ++ to advance iterator to the first persistent histogram. |
| 262 operator++(); | 264 operator++(); |
| 263 } | 265 } |
| 264 } | 266 } |
| 265 | 267 |
| 266 MetricsService::PersistentHistogramIterator& | 268 MetricsService::PersistentHistogramIterator& |
| 267 MetricsService::PersistentHistogramIterator::operator++() { | 269 MetricsService::PersistentHistogramIterator::operator++() { |
| 268 if (allocator_iter_ != allocators_.end()) { | 270 if (allocator_iter_ != allocators_.end()) { |
| 269 for (;;) { | 271 for (;;) { |
| 270 base::HistogramBase* h = base::HistogramBase::GetNextPersistentHistogram( | 272 current_histogram_ = base::HistogramBase::GetNextPersistentHistogram( |
| 271 *allocator_iter_, &histogram_iter_); | 273 *allocator_iter_, &histogram_iter_); |
| 272 if (h) { | 274 if (current_histogram_) { |
| 273 current_histogram_ = new HistogramPointer(h); | 275 DCHECK(found_histograms_->find(current_histogram_) == |
| 276 found_histograms_->end()); |
| 277 found_histograms_->insert(current_histogram_); |
| 274 break; | 278 break; |
| 275 } | 279 } |
| 276 allocator_iter_++; | 280 allocator_iter_++; |
| 277 if (allocator_iter_ == allocators_.end()) { | 281 if (allocator_iter_ == allocators_.end()) { |
| 278 histogram_iter_.clear(); // Clear so it matches end() iterator. | 282 histogram_iter_.clear(); // Clear so it matches end() iterator. |
| 279 current_histogram_ = nullptr; | 283 current_histogram_ = nullptr; |
| 280 break; | 284 break; |
| 281 } | 285 } |
| 282 (*allocator_iter_)->CreateIterator(&histogram_iter_); | 286 (*allocator_iter_)->CreateIterator(&histogram_iter_); |
| 283 } | 287 } |
| (...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 GetSyntheticFieldTrialsOlderThan(log->creation_time(), &synthetic_trials); | 1155 GetSyntheticFieldTrialsOlderThan(log->creation_time(), &synthetic_trials); |
| 1152 log->RecordEnvironment(metrics_providers_.get(), synthetic_trials, | 1156 log->RecordEnvironment(metrics_providers_.get(), synthetic_trials, |
| 1153 GetInstallDate(), GetMetricsReportingEnabledDate()); | 1157 GetInstallDate(), GetMetricsReportingEnabledDate()); |
| 1154 } | 1158 } |
| 1155 | 1159 |
| 1156 void MetricsService::RecordCurrentHistograms() { | 1160 void MetricsService::RecordCurrentHistograms() { |
| 1157 DCHECK(log_manager_.current_log()); | 1161 DCHECK(log_manager_.current_log()); |
| 1158 histogram_snapshot_manager_.PrepareDeltas( | 1162 histogram_snapshot_manager_.PrepareDeltas( |
| 1159 base::StatisticsRecorder::begin(true), base::StatisticsRecorder::end(), | 1163 base::StatisticsRecorder::begin(true), base::StatisticsRecorder::end(), |
| 1160 base::Histogram::kNoFlags, base::Histogram::kUmaTargetedHistogramFlag); | 1164 base::Histogram::kNoFlags, base::Histogram::kUmaTargetedHistogramFlag); |
| 1165 HistogramSet persistent_histograms; |
| 1161 histogram_snapshot_manager_.PrepareDeltas( | 1166 histogram_snapshot_manager_.PrepareDeltas( |
| 1162 persistent_begin(), persistent_end(), | 1167 persistent_begin(&persistent_histograms), persistent_end(), |
| 1163 base::Histogram::kNoFlags, base::Histogram::kUmaTargetedHistogramFlag); | 1168 base::Histogram::kNoFlags, base::Histogram::kUmaTargetedHistogramFlag); |
| 1169 STLDeleteElements(&persistent_histograms); |
| 1164 } | 1170 } |
| 1165 | 1171 |
| 1166 void MetricsService::RecordCurrentStabilityHistograms() { | 1172 void MetricsService::RecordCurrentStabilityHistograms() { |
| 1167 DCHECK(log_manager_.current_log()); | 1173 DCHECK(log_manager_.current_log()); |
| 1168 histogram_snapshot_manager_.PrepareDeltas( | 1174 histogram_snapshot_manager_.PrepareDeltas( |
| 1169 base::StatisticsRecorder::begin(true), base::StatisticsRecorder::end(), | 1175 base::StatisticsRecorder::begin(true), base::StatisticsRecorder::end(), |
| 1170 base::Histogram::kNoFlags, base::Histogram::kUmaStabilityHistogramFlag); | 1176 base::Histogram::kNoFlags, base::Histogram::kUmaStabilityHistogramFlag); |
| 1171 } | 1177 } |
| 1172 | 1178 |
| 1173 void MetricsService::LogCleanShutdown() { | 1179 void MetricsService::LogCleanShutdown() { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1198 pref->SetInt64(prefs::kStabilityLastTimestampSec, | 1204 pref->SetInt64(prefs::kStabilityLastTimestampSec, |
| 1199 base::Time::Now().ToTimeT()); | 1205 base::Time::Now().ToTimeT()); |
| 1200 } | 1206 } |
| 1201 | 1207 |
| 1202 void MetricsService::SkipAndDiscardUpload() { | 1208 void MetricsService::SkipAndDiscardUpload() { |
| 1203 log_manager_.DiscardStagedLog(); | 1209 log_manager_.DiscardStagedLog(); |
| 1204 scheduler_->UploadCancelled(); | 1210 scheduler_->UploadCancelled(); |
| 1205 log_upload_in_progress_ = false; | 1211 log_upload_in_progress_ = false; |
| 1206 } | 1212 } |
| 1207 | 1213 |
| 1208 MetricsService::PersistentHistogramIterator MetricsService::persistent_begin() { | 1214 MetricsService::PersistentHistogramIterator MetricsService::persistent_begin( |
| 1209 return PersistentHistogramIterator(allocators_, allocators_.begin()); | 1215 HistogramSet* found) { |
| 1216 return PersistentHistogramIterator(found, allocators_, allocators_.begin()); |
| 1210 } | 1217 } |
| 1211 | 1218 |
| 1212 MetricsService::PersistentHistogramIterator MetricsService::persistent_end() { | 1219 MetricsService::PersistentHistogramIterator MetricsService::persistent_end() { |
| 1213 return PersistentHistogramIterator(allocators_, allocators_.end()); | 1220 return PersistentHistogramIterator(nullptr, allocators_, allocators_.end()); |
| 1214 } | 1221 } |
| 1215 | 1222 |
| 1216 } // namespace metrics | 1223 } // namespace metrics |
| OLD | NEW |