// 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 #include #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 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(), base::make_optional(current_log_->samples_count())); } 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