| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/metrics/metrics_log_manager.h" |
| |
| #include <algorithm> |
| #include <utility> |
| |
| #include "base/strings/string_util.h" |
| #include "components/metrics/metrics_log.h" |
| #include "components/metrics/metrics_log_store.h" |
| #include "components/metrics/metrics_pref_names.h" |
| |
| namespace metrics { |
| |
| MetricsLogManager::MetricsLogManager() {} |
| |
| MetricsLogManager::~MetricsLogManager() {} |
| |
| void MetricsLogManager::BeginLoggingWithLog(std::unique_ptr<MetricsLog> log) { |
| DCHECK(!current_log_); |
| current_log_ = std::move(log); |
| } |
| |
| void MetricsLogManager::FinishCurrentLog(MetricsLogStore* log_store) { |
| DCHECK(current_log_); |
| current_log_->CloseLog(); |
| std::string log_data; |
| current_log_->GetEncodedLog(&log_data); |
| if (!log_data.empty()) |
| log_store->StoreLog(log_data, current_log_->log_type()); |
| current_log_.reset(); |
| } |
| |
| void MetricsLogManager::DiscardCurrentLog() { |
| current_log_->CloseLog(); |
| current_log_.reset(); |
| } |
| |
| void MetricsLogManager::PauseCurrentLog() { |
| DCHECK(!paused_log_); |
| paused_log_ = std::move(current_log_); |
| } |
| |
| void MetricsLogManager::ResumePausedLog() { |
| DCHECK(!current_log_); |
| current_log_ = std::move(paused_log_); |
| } |
| |
| } // namespace metrics |