diff options
author | stuartmorgan@chromium.org <stuartmorgan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-27 22:31:51 +0000 |
---|---|---|
committer | stuartmorgan@chromium.org <stuartmorgan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-27 22:31:51 +0000 |
commit | aa752c3f3c06918c0d684044c8418d3a6f33c37c (patch) | |
tree | d8b9b4458b9c7eb0b5741762890c0db2ef292c10 /chrome/common/metrics/metrics_log_manager.cc | |
parent | 98ae4a3d3ca74c8de31122951d54709b57faff08 (diff) | |
download | chromium_src-aa752c3f3c06918c0d684044c8418d3a6f33c37c.zip chromium_src-aa752c3f3c06918c0d684044c8418d3a6f33c37c.tar.gz chromium_src-aa752c3f3c06918c0d684044c8418d3a6f33c37c.tar.bz2 |
Fix log type preservation across log pausing
This was causing the first ongoing log to be stored as an initial log instead of an ongoing log (if it was stored instead of being sent).
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/10134051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@134375 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/metrics/metrics_log_manager.cc')
-rw-r--r-- | chrome/common/metrics/metrics_log_manager.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/chrome/common/metrics/metrics_log_manager.cc b/chrome/common/metrics/metrics_log_manager.cc index 078f9b4..2326cc8 100644 --- a/chrome/common/metrics/metrics_log_manager.cc +++ b/chrome/common/metrics/metrics_log_manager.cc @@ -22,8 +22,9 @@ const char kDiscardedLog[] = "Log discarded"; } // anonymous namespace -MetricsLogManager::MetricsLogManager() : current_log_type_(INITIAL_LOG), - staged_log_type_(INITIAL_LOG), +MetricsLogManager::MetricsLogManager() : current_log_type_(NO_LOG), + paused_log_type_(NO_LOG), + staged_log_type_(NO_LOG), max_ongoing_log_store_size_(0) {} MetricsLogManager::~MetricsLogManager() {} @@ -40,6 +41,7 @@ void MetricsLogManager::SerializedLog::swap(SerializedLog& log) { void MetricsLogManager::BeginLoggingWithLog(MetricsLogBase* log, LogType log_type) { + DCHECK(log_type != NO_LOG); DCHECK(!current_log_.get()); current_log_.reset(log); current_log_type_ = log_type; @@ -47,12 +49,14 @@ void MetricsLogManager::BeginLoggingWithLog(MetricsLogBase* log, void MetricsLogManager::FinishCurrentLog() { DCHECK(current_log_.get()); + DCHECK(current_log_type_ != NO_LOG); current_log_->CloseLog(); SerializedLog compressed_log; CompressCurrentLog(&compressed_log); if (!compressed_log.empty()) StoreLog(&compressed_log, current_log_type_); current_log_.reset(); + current_log_type_ = NO_LOG; } void MetricsLogManager::StageNextLogForUpload() { @@ -64,6 +68,7 @@ void MetricsLogManager::StageNextLogForUpload() { : INITIAL_LOG; DCHECK(!source_list->empty()); DCHECK(staged_log_text_.empty()); + DCHECK(staged_log_type_ == NO_LOG); staged_log_text_.swap(source_list->back()); staged_log_type_ = source_type; source_list->pop_back(); @@ -80,6 +85,7 @@ bool MetricsLogManager::has_staged_log_proto() const { void MetricsLogManager::DiscardStagedLog() { staged_log_text_.xml.clear(); staged_log_text_.proto.clear(); + staged_log_type_ = NO_LOG; } void MetricsLogManager::DiscardStagedLogProto() { @@ -89,16 +95,23 @@ void MetricsLogManager::DiscardStagedLogProto() { void MetricsLogManager::DiscardCurrentLog() { current_log_->CloseLog(); current_log_.reset(); + current_log_type_ = NO_LOG; } void MetricsLogManager::PauseCurrentLog() { DCHECK(!paused_log_.get()); + DCHECK(paused_log_type_ == NO_LOG); paused_log_.reset(current_log_.release()); + paused_log_type_ = current_log_type_; + current_log_type_ = NO_LOG; } void MetricsLogManager::ResumePausedLog() { DCHECK(!current_log_.get()); + DCHECK(current_log_type_ == NO_LOG); current_log_.reset(paused_log_.release()); + current_log_type_ = paused_log_type_; + paused_log_type_ = NO_LOG; } void MetricsLogManager::StoreStagedLogAsUnsent() { @@ -113,6 +126,7 @@ void MetricsLogManager::StoreStagedLogAsUnsent() { } void MetricsLogManager::StoreLog(SerializedLog* log_text, LogType log_type) { + DCHECK(log_type != NO_LOG); std::vector<SerializedLog>* destination_list = (log_type == INITIAL_LOG) ? &unsent_initial_logs_ : &unsent_ongoing_logs_; |