// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/webui/diagnostics_ui/diagnostics_metrics.h"
#include "ash/constants/ash_features.h"
#include "chromeos/ash/components/feature_usage/feature_usage_metrics.h"
namespace ash {
namespace diagnostics {
namespace metrics {
namespace {
const char kDiagnosticsUmaFeatureName[] = "DiagnosticsUi";
}
DiagnosticsMetrics::DiagnosticsMetrics()
: feature_metrics_(kDiagnosticsUmaFeatureName, this),
successful_usage_started_(false) {}
bool DiagnosticsMetrics::IsEligible() const {
return true;
}
bool DiagnosticsMetrics::IsEnabled() const {
return true;
}
// Helper function for feature_usage::FeatureUsageMetrics RecordUsage.
void DiagnosticsMetrics::RecordUsage(bool success) {
feature_metrics_.RecordUsage(success);
// Start successful usage recording only when usage was successful and not
// currently recording a successful usage.
// See {@link feature_usage::FeatureUsageMetrics} for rationale behind
// starting and stopping usetime tracking.
if (success) {
DCHECK(!successful_usage_started_);
feature_metrics_.StartSuccessfulUsage();
successful_usage_started_ = true;
}
}
void DiagnosticsMetrics::StopSuccessfulUsage() {
// Exit early if usage was not started.
if (!successful_usage_started_) {
return;
}
feature_metrics_.StopSuccessfulUsage();
successful_usage_started_ = false;
}
// Test helpers to check state of `successful_usage_started`.
bool DiagnosticsMetrics::GetSuccessfulUsageStartedForTesting() {
return successful_usage_started_;
}
} // namespace metrics
} // namespace diagnostics
} // namespace ash