// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_ENTERPRISE_IDLE_METRICS_H_ #define COMPONENTS_ENTERPRISE_IDLE_METRICS_H_ #include <string> #include "base/time/time.h" namespace enterprise_idle { namespace metrics { // IdleTimeout and IdleTimeout policies histogram names. inline constexpr char kUMAIdleTimeoutActionSuccessTime[] = …; inline constexpr char kUMAIdleTimeoutActionSuccesStatus[] = …; inline constexpr char kUMAIdleTimeoutActionCase[] = …; inline constexpr char kUMAIdleTimeoutDialogEvent[] = …; inline constexpr char kUMAIdleTimeoutLaunchScreenEvent[] = …; // UMA Histogram name suffixes for idle timeout action names. inline constexpr char kUMAClearBrowsingDataSuffix[] = …; inline constexpr char kUMASignOutSuffix[] = …; inline constexpr char kUMACloseBrowsersSuffix[] = …; inline constexpr char kUMACloseTabsSuffix[] = …; inline constexpr char kUMAReloadPagesSuffix[] = …; inline constexpr char kUMAShowProfilePickerSuffix[] = …; inline constexpr char kUMAAllActionsSuffix[] = …; // The different action types that can run on idle timeout. `kClearBrowsingData` // encompasses all the clear_* actions that can be specified in the // IdleTimeoutActions policy list value. enum class IdleTimeoutActionType { … }; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. Keep in sync with // tools/metrics/histograms/metadata/enterprise/enums.xml. enum class IdleTimeoutCase { … }; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. Keep in sync with // tools/metrics/histograms/metadata/enterprise/enums.xml. // The values represent different idle timeout dialog UI events that can // happen. // `kDialogShown` : the idle timeout dialog is shown when the browser times out // in foreground. // `kDialogDismissedByUser` : the dioalog is either dismissed by // the user if they are active. // `kDialogExpired` : the dualog counted down to expiry before being // dismissed. enum class IdleTimeoutDialogEvent { … }; // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. Keep in sync with // tools/metrics/histograms/metadata/enterprise/enums.xml. // The values represent the different launch screen events that can happen on // app foreground on mobile. // `kLaunchScreenShown` : a launch scren is shown when idle timeout actions run // on foreground. /// `kLaunchScreenDismissedAfterActionCompletion` : the launch // screen is dismissed when actions complete. // `kLaunchScreenExpired` : the // launch screen has been displayed until expiry. Actions failed to complete by // deadline. enum class IdleTimeoutLaunchScreenEvent { … }; // Records the time needed for action `type` to run when the browser times out. void RecordIdleTimeoutActionTimeTaken(IdleTimeoutActionType type, base::TimeDelta time_duration); // Records whether idle timeout happens in foreground or background. void RecordIdleTimeoutCase(IdleTimeoutCase timeout_case); // Records whether action `type` ran successfully. void RecordActionsSuccess(IdleTimeoutActionType type, bool success); // Records an idle timeout dialog events. void RecordIdleTimeoutDialogEvent(IdleTimeoutDialogEvent event); // Records an idle timeout launch screen events. void RecordIdleTimeoutLaunchScreenEvent(IdleTimeoutLaunchScreenEvent event); // Returns the IdleTimeoutAction name from its `IdleTimeoutActionType`. std::string GetActionNameFromActionType(IdleTimeoutActionType type); } // namespace metrics } // namespace enterprise_idle #endif // COMPONENTS_ENTERPRISE_IDLE_METRICS_H_