Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(759)

Side by Side Diff: components/metrics/metrics_log_manager.cc

Issue 318993002: Merge MetricsLog and MetricsLogBase. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: address nits Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/metrics/metrics_log_manager.h" 5 #include "components/metrics/metrics_log_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "base/timer/elapsed_timer.h" 11 #include "base/timer/elapsed_timer.h"
12 #include "components/metrics/metrics_log_base.h" 12 #include "components/metrics/metrics_log.h"
13 #include "components/metrics/metrics_pref_names.h" 13 #include "components/metrics/metrics_pref_names.h"
14 14
15 namespace metrics { 15 namespace metrics {
16 16
17 namespace { 17 namespace {
18 18
19 // The number of "initial" logs to save, and hope to send during a future Chrome 19 // The number of "initial" logs to save, and hope to send during a future Chrome
20 // session. Initial logs contain crash stats, and are pretty small. 20 // session. Initial logs contain crash stats, and are pretty small.
21 const size_t kInitialLogsPersistLimit = 20; 21 const size_t kInitialLogsPersistLimit = 20;
22 22
(...skipping 24 matching lines...) Expand all
47 kStorageByteLimitPerLogType, 47 kStorageByteLimitPerLogType,
48 0), 48 0),
49 ongoing_log_queue_(local_state, 49 ongoing_log_queue_(local_state,
50 prefs::kMetricsOngoingLogs, 50 prefs::kMetricsOngoingLogs,
51 kOngoingLogsPersistLimit, 51 kOngoingLogsPersistLimit,
52 kStorageByteLimitPerLogType, 52 kStorageByteLimitPerLogType,
53 max_ongoing_log_size) {} 53 max_ongoing_log_size) {}
54 54
55 MetricsLogManager::~MetricsLogManager() {} 55 MetricsLogManager::~MetricsLogManager() {}
56 56
57 void MetricsLogManager::BeginLoggingWithLog(scoped_ptr<MetricsLogBase> log) { 57 void MetricsLogManager::BeginLoggingWithLog(scoped_ptr<MetricsLog> log) {
58 DCHECK(!current_log_); 58 DCHECK(!current_log_);
59 current_log_ = log.Pass(); 59 current_log_ = log.Pass();
60 } 60 }
61 61
62 void MetricsLogManager::FinishCurrentLog() { 62 void MetricsLogManager::FinishCurrentLog() {
63 DCHECK(current_log_.get()); 63 DCHECK(current_log_.get());
64 current_log_->CloseLog(); 64 current_log_->CloseLog();
65 std::string log_text; 65 std::string log_text;
66 current_log_->GetEncodedLog(&log_text); 66 current_log_->GetEncodedLog(&log_text);
67 if (!log_text.empty()) 67 if (!log_text.empty())
(...skipping 26 matching lines...) Expand all
94 void MetricsLogManager::PauseCurrentLog() { 94 void MetricsLogManager::PauseCurrentLog() {
95 DCHECK(!paused_log_.get()); 95 DCHECK(!paused_log_.get());
96 paused_log_.reset(current_log_.release()); 96 paused_log_.reset(current_log_.release());
97 } 97 }
98 98
99 void MetricsLogManager::ResumePausedLog() { 99 void MetricsLogManager::ResumePausedLog() {
100 DCHECK(!current_log_.get()); 100 DCHECK(!current_log_.get());
101 current_log_.reset(paused_log_.release()); 101 current_log_.reset(paused_log_.release());
102 } 102 }
103 103
104 void MetricsLogManager::StoreLog(std::string* log, LogType log_type) { 104 void MetricsLogManager::StoreLog(std::string* log,
105 MetricsLog::LogType log_type) {
105 switch (log_type) { 106 switch (log_type) {
106 case MetricsLogBase::INITIAL_STABILITY_LOG: 107 case MetricsLog::INITIAL_STABILITY_LOG:
107 initial_log_queue_.StoreLog(log); 108 initial_log_queue_.StoreLog(log);
108 break; 109 break;
109 case MetricsLogBase::ONGOING_LOG: 110 case MetricsLog::ONGOING_LOG:
110 ongoing_log_queue_.StoreLog(log); 111 ongoing_log_queue_.StoreLog(log);
111 break; 112 break;
112 } 113 }
113 } 114 }
114 115
115 void MetricsLogManager::StoreStagedLogAsUnsent( 116 void MetricsLogManager::StoreStagedLogAsUnsent(
116 metrics::PersistedLogs::StoreType store_type) { 117 metrics::PersistedLogs::StoreType store_type) {
117 DCHECK(has_staged_log()); 118 DCHECK(has_staged_log());
118 if (initial_log_queue_.has_staged_log()) 119 if (initial_log_queue_.has_staged_log())
119 initial_log_queue_.StoreStagedLogAsUnsent(store_type); 120 initial_log_queue_.StoreStagedLogAsUnsent(store_type);
(...skipping 21 matching lines...) Expand all
141 142
142 void MetricsLogManager::LoadPersistedUnsentLogs() { 143 void MetricsLogManager::LoadPersistedUnsentLogs() {
143 base::ElapsedTimer timer; 144 base::ElapsedTimer timer;
144 initial_log_queue_.DeserializeLogs(); 145 initial_log_queue_.DeserializeLogs();
145 ongoing_log_queue_.DeserializeLogs(); 146 ongoing_log_queue_.DeserializeLogs();
146 UMA_HISTOGRAM_TIMES("UMA.LoadLogsTime", timer.Elapsed()); 147 UMA_HISTOGRAM_TIMES("UMA.LoadLogsTime", timer.Elapsed());
147 148
148 unsent_logs_loaded_ = true; 149 unsent_logs_loaded_ = true;
149 } 150 }
150 151
151 } // namespace metrics 152 } // namespace metrics
OLDNEW
« no previous file with comments | « components/metrics/metrics_log_manager.h ('k') | components/metrics/metrics_log_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698