Index: chrome_frame/metrics_service.cc |
diff --git a/chrome_frame/metrics_service.cc b/chrome_frame/metrics_service.cc |
index 622a892ae4b9e2ca4432065070afc1b995ebfc52..0186b24c0e10fce000fdcd318b60ae8fa42fe825 100644 |
--- a/chrome_frame/metrics_service.cc |
+++ b/chrome_frame/metrics_service.cc |
@@ -366,8 +366,11 @@ void MetricsService::StartRecording() { |
if (log_manager_.current_log()) |
return; |
+ MetricsLogManager::LogType log_type = (state_ == INITIALIZED) ? |
+ MetricsLogManager::INITIAL_LOG : MetricsLogManager::ONGOING_LOG; |
log_manager_.BeginLoggingWithLog(new MetricsLogBase(client_id_, session_id_, |
- GetVersionString())); |
+ GetVersionString()), |
+ log_type); |
if (state_ == INITIALIZED) |
state_ = ACTIVE; |
} |
@@ -384,10 +387,12 @@ void MetricsService::StopRecording(bool save_log) { |
RecordCurrentHistograms(); |
} |
- if (save_log) |
- log_manager_.StageCurrentLogForUpload(); |
- else |
+ if (save_log) { |
+ log_manager_.FinishCurrentLog(); |
+ log_manager_.StageNextLogForUpload(); |
+ } else { |
log_manager_.DiscardCurrentLog(); |
+ } |
} |
void MetricsService::MakePendingLog() { |
@@ -409,8 +414,6 @@ void MetricsService::MakePendingLog() { |
DCHECK(false); |
return; |
} |
- |
- DCHECK(log_manager_.has_staged_log()); |
} |
bool MetricsService::TransmissionPermitted() const { |
@@ -434,19 +437,18 @@ bool MetricsService::UploadData() { |
} |
MakePendingLog(); |
- DCHECK(log_manager_.has_staged_log()); |
bool ret = true; |
- if (log_manager_.staged_log_text().empty()) { |
- NOTREACHED() << "Failed to compress log for transmission."; |
- ret = false; |
- } else { |
+ if (log_manager_.has_staged_log()) { |
HRESULT hr = ChromeFrameMetricsDataUploader::UploadDataHelper( |
log_manager_.staged_log_text().xml); |
DCHECK(SUCCEEDED(hr)); |
+ log_manager_.DiscardStagedLog(); |
+ } else { |
+ NOTREACHED(); |
+ ret = false; |
} |
- log_manager_.DiscardStagedLog(); |
currently_uploading = 0; |
return ret; |