blob: 5f12aaa3428f2e45924357d4bd7ded0926b8af7b [file]
// Copyright 2023 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/glanceables/post_login_glanceables_metrics_recorder.h"
#include "ash/shell.h"
#include "base/metrics/histogram_functions.h"
#include "base/time/time.h"
namespace ash {
PostLoginGlanceablesMetricsRecorder::PostLoginGlanceablesMetricsRecorder() {
overview_observation_.Observe(Shell::Get()->overview_controller());
}
PostLoginGlanceablesMetricsRecorder::~PostLoginGlanceablesMetricsRecorder() =
default;
void PostLoginGlanceablesMetricsRecorder::OnOverviewModeStarting() {
RecordHypotheticalFetchEvent(DataFetchEventSource::kOverview);
}
void PostLoginGlanceablesMetricsRecorder::RecordPostLoginFullRestoreShown() {
RecordHypotheticalFetchEvent(DataFetchEventSource::kPostLoginFullRestore);
}
void PostLoginGlanceablesMetricsRecorder::RecordCalendarFetch() {
RecordHypotheticalFetchEvent(DataFetchEventSource::kCalendar);
}
void PostLoginGlanceablesMetricsRecorder::RecordHypotheticalFetchEvent(
DataFetchEventSource source) {
base::UmaHistogramEnumeration(
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.NoDelay", source);
auto MaybeRecordUsingTimestamp =
[source](std::optional<base::Time>& timestamp, base::TimeDelta time_delay,
const char* histogram_name) {
if (!timestamp.has_value() ||
base::Time::Now() - timestamp.value() > time_delay) {
base::UmaHistogramEnumeration(histogram_name, source);
timestamp = base::Time::Now();
}
};
MaybeRecordUsingTimestamp(
fifteen_second_timestamp_, base::Seconds(15),
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.15SecondDelay");
MaybeRecordUsingTimestamp(
thirty_second_timestamp_, base::Seconds(30),
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.30SecondDelay");
MaybeRecordUsingTimestamp(
five_minute_timestamp_, base::Minutes(5),
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.5MinuteDelay");
MaybeRecordUsingTimestamp(
fifteen_minute_timestamp_, base::Minutes(15),
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.15MinuteDelay");
MaybeRecordUsingTimestamp(
thirty_minute_timestamp_, base::Minutes(30),
"Ash.PostLoginGlanceables.HypotheticalFetchEvent.30MinuteDelay");
}
} // namespace ash