// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @fileoverview Handles metrics for the settings pages. */
/**
* Contains all possible recorded interactions across privacy settings pages.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the SettingsPrivacyElementInteractions enum in
* histograms/enums.xml
*/
export enum PrivacyElementInteractions {
SYNC_AND_GOOGLE_SERVICES = 0,
CHROME_SIGN_IN = 1,
DO_NOT_TRACK = 2,
PAYMENT_METHOD = 3,
NETWORK_PREDICTION = 4,
MANAGE_CERTIFICATES = 5,
SAFE_BROWSING = 6,
PASSWORD_CHECK = 7,
IMPROVE_SECURITY = 8,
COOKIES_ALL = 9,
COOKIES_INCOGNITO = 10,
COOKIES_THIRD = 11,
COOKIES_BLOCK = 12,
COOKIES_SESSION = 13,
SITE_DATA_REMOVE_ALL = 14,
SITE_DATA_REMOVE_FILTERED = 15,
SITE_DATA_REMOVE_SITE = 16,
COOKIE_DETAILS_REMOVE_ALL = 17,
COOKIE_DETAILS_REMOVE_ITEM = 18,
SITE_DETAILS_CLEAR_DATA = 19,
THIRD_PARTY_COOKIES_ALLOW = 20,
THIRD_PARTY_COOKIES_BLOCK_IN_INCOGNITO = 21,
THIRD_PARTY_COOKIES_BLOCK = 22,
BLOCK_ALL_THIRD_PARTY_COOKIES = 23,
IP_PROTECTION = 24,
FINGERPRINTING_PROTECTION = 25,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 26,
}
/**
* Contains all Safety Hub card states.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with SafetyHubCardState in
* histograms/enums.xml and CardState in safety_hub/safety_hub_browser_proxy.ts.
*/
export enum SafetyHubCardState {
WARNING = 0,
WEAK = 1,
INFO = 2,
SAFE = 3,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 4,
}
/**
* Contains all safety check interactions.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the SafetyCheckInteractions enum in
* histograms/enums.xml
*/
export enum SafetyCheckInteractions {
RUN_SAFETY_CHECK = 0,
UPDATES_RELAUNCH = 1,
PASSWORDS_MANAGE_COMPROMISED_PASSWORDS = 2,
SAFE_BROWSING_MANAGE = 3,
EXTENSIONS_REVIEW = 4,
// Deprecated in https://crbug.com/1407233.
CHROME_CLEANER_REBOOT = 5,
// Deprecated in https://crbug.com/1407233.
CHROME_CLEANER_REVIEW_INFECTED_STATE = 6,
PASSWORDS_CARET_NAVIGATION = 7,
SAFE_BROWSING_CARET_NAVIGATION = 8,
EXTENSIONS_CARET_NAVIGATION = 9,
// Deprecated in https://crbug.com/1407233.
CHROME_CLEANER_CARET_NAVIGATION = 10,
PASSWORDS_MANAGE_WEAK_PASSWORDS = 11,
UNUSED_SITE_PERMISSIONS_REVIEW = 12,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 13,
}
/**
* Contains all safety check notifications module interactions.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the SafetyCheckNotificationsModuleInteractions enum
* in histograms/enums.xml
*/
export enum SafetyCheckNotificationsModuleInteractions {
BLOCK = 0,
BLOCK_ALL = 1,
IGNORE = 2,
MINIMIZE = 3,
RESET = 4,
UNDO_BLOCK = 5,
UNDO_IGNORE = 6,
UNDO_RESET = 7,
OPEN_REVIEW_UI = 8,
UNDO_BLOCK_ALL = 9,
GO_TO_SETTINGS = 10,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 11,
}
/**
* Contains all safety check unused site permissions module interactions.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the
* SafetyCheckUnusedSitePermissionsModuleInteractions enum in
* histograms/enums.xml
*/
export enum SafetyCheckUnusedSitePermissionsModuleInteractions {
OPEN_REVIEW_UI = 0,
ALLOW_AGAIN = 1,
ACKNOWLEDGE_ALL = 2,
UNDO_ALLOW_AGAIN = 3,
UNDO_ACKNOWLEDGE_ALL = 4,
MINIMIZE = 5,
GO_TO_SETTINGS = 6,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 7,
}
/**
* Contains all entry points for Safety Hub page.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the SafetyHubEntryPoint enum in
* histograms/enums.xml and safety_hub/safety_hub_constants.h.
*/
export enum SafetyHubEntryPoint {
PRIVACY_SAFE = 0,
PRIVACY_WARNING = 1,
SITE_SETTINGS = 2,
THREE_DOT_MENU = 3,
NOTIFICATIONS = 4,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 5,
}
/**
* Contains all Safety Hub modules.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the SafetyHubModuleType enum in
* histograms/enums.xml and safety_hub/safety_hub_constants.h.
*/
export enum SafetyHubModuleType {
PERMISSIONS = 0,
NOTIFICATIONS = 1,
SAFE_BROWSING = 2,
EXTENSIONS = 3,
PASSWORDS = 4,
VERSION = 5,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 6,
}
/**
* Contains all safe browsing interactions.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with the UserAction in safe_browsing_settings_metrics.h.
*/
export enum SafeBrowsingInteractions {
SAFE_BROWSING_SHOWED = 0,
SAFE_BROWSING_ENHANCED_PROTECTION_CLICKED = 1,
SAFE_BROWSING_STANDARD_PROTECTION_CLICKED = 2,
SAFE_BROWSING_DISABLE_SAFE_BROWSING_CLICKED = 3,
SAFE_BROWSING_ENHANCED_PROTECTION_EXPAND_ARROW_CLICKED = 4,
SAFE_BROWSING_STANDARD_PROTECTION_EXPAND_ARROW_CLICKED = 5,
SAFE_BROWSING_DISABLE_SAFE_BROWSING_DIALOG_CONFIRMED = 6,
SAFE_BROWSING_DISABLE_SAFE_BROWSING_DIALOG_DENIED = 7,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 8,
}
/**
* All Privacy guide interactions with metrics.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with SettingsPrivacyGuideInteractions in emus.xml and
* PrivacyGuideInteractions in privacy_guide/privacy_guide.h.
*/
export enum PrivacyGuideInteractions {
WELCOME_NEXT_BUTTON = 0,
MSBB_NEXT_BUTTON = 1,
HISTORY_SYNC_NEXT_BUTTON = 2,
SAFE_BROWSING_NEXT_BUTTON = 3,
COOKIES_NEXT_BUTTON = 4,
COMPLETION_NEXT_BUTTON = 5,
SETTINGS_LINK_ROW_ENTRY = 6,
PROMO_ENTRY = 7,
SWAA_COMPLETION_LINK = 8,
PRIVACY_SANDBOX_COMPLETION_LINK = 9,
SEARCH_SUGGESTIONS_NEXT_BUTTON = 10,
TRACKING_PROTECTION_COMPLETION_LINK = 11,
AD_TOPICS_NEXT_BUTTON = 12,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 13,
}
/**
* This enum covers all possible combinations of the start and end
* settings states for each Privacy guide fragment, allowing metrics to see if
* users change their settings inside of Privacy guide or not. The format is
* settingAtStart-To-settingAtEnd.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with SettingsPrivacyGuideSettingsStates in enums.xml and
* PrivacyGuideSettingsStates in privacy_guide/privacy_guide.h.
*/
export enum PrivacyGuideSettingsStates {
MSBB_ON_TO_ON = 0,
MSBB_ON_TO_OFF = 1,
MSBB_OFF_TO_ON = 2,
MSBB_OFF_TO_OFF = 3,
BLOCK_3P_INCOGNITO_TO_3P_INCOGNITO = 4,
BLOCK_3P_INCOGNITO_TO_3P = 5,
BLOCK_3P_TO_3P_INCOGNITO = 6,
BLOCK_3P_TO_3P = 7,
HISTORY_SYNC_ON_TO_ON = 8,
HISTORY_SYNC_ON_TO_OFF = 9,
HISTORY_SYNC_OFF_TO_ON = 10,
HISTORY_SYNC_OFF_TO_OFF = 11,
SAFE_BROWSING_ENHANCED_TO_ENHANCED = 12,
SAFE_BROWSING_ENHANCED_TO_STANDARD = 13,
SAFE_BROWSING_STANDARD_TO_ENHANCED = 14,
SAFE_BROWSING_STANDARD_TO_STANDARD = 15,
SEARCH_SUGGESTIONS_ON_TO_ON = 16,
SEARCH_SUGGESTIONS_ON_TO_OFF = 17,
SEARCH_SUGGESTIONS_OFF_TO_ON = 18,
SEARCH_SUGGESTIONS_OFF_TO_OFF = 19,
AD_TOPICS_ON_TO_ON = 20,
AD_TOPICS_ON_TO_OFF = 21,
AD_TOPICS_OFF_TO_ON = 22,
AD_TOPICS_OFF_TO_OFF = 23,
// Max value should be updated whenever new entries are added.
MAX_VALUE = 24,
}
/**
* This enum is used with metrics to record when a step in the privacy guide is
* eligible to be shown and/or reached by the user.
*
* These values are persisted to logs. Entries should not be renumbered and
* numeric values should never be reused.
*
* Must be kept in sync with SettingsPrivacyGuideStepsEligibleAndReached in
* enums.xml and PrivacyGuideStepsEligibleAndReached in
* privacy_guide/privacy_guide.h.
*/
export enum PrivacyGuideStepsEligibleAndReached {
MSBB_ELIGIBLE = 0,
MSBB_REACHED = 1,
HISTORY_SYNC_ELIGIBLE = 2,
HISTORY_SYNC_REACHED = 3,
SAFE_BROWSING_ELIGIBLE = 4,
SAFE_BROWSING_REACHED = 5,
COOKIES_ELIGIBLE = 6,
COOKIES_REACHED = 7,
COMPLETION_ELIGIBLE = 8,
COMPLETION_REACHED = 9,
SEARCH_SUGGESTIONS_ELIGIBLE = 10,
SEARCH_SUGGESTIONS_REACHED = 11,
AD_TOPICS_ELIGIBLE = 12,
AD_TOPICS_REACHED = 13,
// Leave this at the end.
COUNT = 14,
}
/**
* Contains the possible delete browsing data action types.
* This should be kept in sync with the `DeleteBrowsingDataAction` enum in
* components/browsing_data/core/browsing_data_utils.h
*/
export enum DeleteBrowsingDataAction {
CLEAR_BROWSING_DATA_DIALOG = 0,
CLEAR_BROWSING_DATA_ON_EXIT = 1,
INCOGNITO_CLOSE_TABS = 2,
COOKIES_IN_USE_DIALOG = 3,
SITES_SETTINGS_PAGE = 4,
HISTORY_PAGE_ENTRIES = 5,
QUICK_DELETE = 6,
PAGE_INFO_RESET_PERMISSIONS = 7,
MAX_VALUE = 8,
}
/**
* This enum contains the different surfaces of Safety Hub that users can
* interact with, or on which they can observe a Safety Hub feature.
*
* Must be kept in sync with the `safety_hub::SafetyHubSurfaces` enum in
* chrome/browser/ui/safety_hub/safety_hub_constants.h and `SafetyHubSurfaces`
* in enums.xml
*/
export enum SafetyHubSurfaces {
THREE_DOT_MENU = 0,
SAFETY_HUB_PAGE = 1,
MAX_VALUE = 2,
}
/**
* This enum contains the possible user actions for the bulk CVC deletion
* operation on the payments settings page.
*/
export enum CvcDeletionUserAction {
HYPERLINK_CLICKED = 'BulkCvcDeletionHyperlinkClicked',
DIALOG_ACCEPTED = 'BulkCvcDeletionConfirmationDialogAccepted',
DIALOG_CANCELLED = 'BulkCvcDeletionConfirmationDialogCancelled',
}
/**
* This enum contains relevant UserAction log names for card benefits-related
* functionality on the payment methods settings page.
*/
export enum CardBenefitsUserAction {
CARD_BENEFITS_TERMS_LINK_CLICKED = 'CardBenefits_TermsLinkClicked',
}
export interface MetricsBrowserProxy {
/**
* Helper function that calls recordAction with one action from
* tools/metrics/actions/actions.xml.
*/
recordAction(action: string): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyCheck.Interactions histogram
*/
recordSafetyCheckInteractionHistogram(interaction: SafetyCheckInteractions):
void;
/**
* Helper function that calls recordHistogram for
* Settings.SafetyCheck.NotificationsListCount histogram.
*/
recordSafetyCheckNotificationsListCountHistogram(suggestions: number): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyCheck.NotificationsModuleInteractions histogram
*/
recordSafetyCheckNotificationsModuleInteractionsHistogram(
interaction: SafetyCheckNotificationsModuleInteractions): void;
/**
* Helper function that calls recordBooleanHistogram for the
* Settings.SafetyCheck.NotificationsModuleEntryPointShown histogram
*/
recordSafetyCheckNotificationsModuleEntryPointShown(visible: boolean): void;
/**
* Helper function that calls recordHistogram for
* Settings.SafetyCheck.UnusedSitePermissionsListCount histogram.
*/
recordSafetyCheckUnusedSitePermissionsListCountHistogram(suggestions: number):
void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyCheck.UnusedSitePermissionsModuleInteractions histogram
*/
recordSafetyCheckUnusedSitePermissionsModuleInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions): void;
/**
* Helper function that calls recordBooleanHistogram for the
* Settings.SafetyCheck.UnusedSitePermissionsModuleEntryPointShown histogram
*/
recordSafetyCheckUnusedSitePermissionsModuleEntryPointShown(visible: boolean):
void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.EntryPointShown histogram
*/
recordSafetyHubEntryPointShown(page: SafetyHubEntryPoint): void;
/**
* Helper function that calls recordHistogram for the
*Settings.SafetyHub.EntryPointClicked histogram
*/
recordSafetyHubEntryPointClicked(page: SafetyHubEntryPoint): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.DashboardWarning histogram
*/
recordSafetyHubModuleWarningImpression(module: SafetyHubModuleType): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.HasDashboardShowAnyWarning histogram
*/
recordSafetyHubDashboardAnyWarning(visible: boolean): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.[card_name].StatusOnClick histogram
*/
recordSafetyHubCardStateClicked(
histogramName: string, state: SafetyHubCardState): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.NotificationPermissionsModule.Interactions histogram
*/
recordSafetyHubNotificationPermissionsModuleInteractionsHistogram(
interaction: SafetyCheckNotificationsModuleInteractions): void;
/**
* Helper function that calls recordHistogram for
* Settings.SafetyHub.NotificationPermissionsModule.ListCount histogram
*/
recordSafetyHubNotificationPermissionsModuleListCountHistogram(
suggestions: number): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.UnusedSitePermissionsModule.Interactions histogram
*/
recordSafetyHubUnusedSitePermissionsModuleInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions): void;
/**
* Helper function that calls recordHistogram for the
* Settings.SafetyHub.AbusiveNotificationPermissionRevocation.Interactions
* histogram
*/
recordSafetyHubAbusiveNotificationPermissionRevocationInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions): void;
/**
* Helper function that calls recordHistogram for
* Settings.SafetyHub.UnusedSitePermissionsModule.ListCount histogram
*/
recordSafetyHubUnusedSitePermissionsModuleListCountHistogram(
suggestions: number): void;
/**
* Helper function that calls recordHistogram for the
* SettingsPage.PrivacyElementInteractions histogram
*/
recordSettingsPageHistogram(interaction: PrivacyElementInteractions): void;
/**
* Helper function that calls recordHistogram for the
* SafeBrowsing.Settings.UserAction histogram
*/
recordSafeBrowsingInteractionHistogram(interaction: SafeBrowsingInteractions):
void;
/**
* Helper function that calls recordHistogram for the
* Settings.PrivacyGuide.NextNavigation histogram
*/
recordPrivacyGuideNextNavigationHistogram(interaction:
PrivacyGuideInteractions): void;
/**
* Helper function that calls recordHistogram for the
* Settings.PrivacyGuide.EntryExit histogram
*/
recordPrivacyGuideEntryExitHistogram(interaction: PrivacyGuideInteractions):
void;
/**
* Helper function that calls recordHistogram for the
* Settings.PrivacyGuide.SettingsStates histogram
*/
recordPrivacyGuideSettingsStatesHistogram(state: PrivacyGuideSettingsStates):
void;
/**
* Helper function that calls recordHistogram for the
* Settings.PrivacyGuide.FlowLength histogram
*/
recordPrivacyGuideFlowLengthHistogram(steps: number): void;
/**
* Helper function that calls recordHistogram for the
* Settings.PrivacyGuide.StepsEligibleAndReached histogram
*/
recordPrivacyGuideStepsEligibleAndReachedHistogram(
status: PrivacyGuideStepsEligibleAndReached): void;
/**
* Helper function that delegates the metric recording to the
* recordDeleteBrowsingDataAction backend function.
*/
recordDeleteBrowsingDataAction(action: DeleteBrowsingDataAction): void;
/**
* Helper function that calls records an impression of the provided Safety Hub
* surface.
*/
recordSafetyHubImpression(surface: SafetyHubSurfaces): void;
/**
* Helper function that calls records an interaction of the provided Safety
* Hub surface.
*/
recordSafetyHubInteraction(surface: SafetyHubSurfaces): void;
// <if expr="_google_chrome and is_win">
/**
* Notifies Chrome that the `feature_notifications.enabled` Local State pref
* was changed via the System settings page.
*
* @param enabled True if the toggle was changed to on (enabled), false if it
* was changed to off (disabled).
*/
recordFeatureNotificationsChange(enabled: boolean): void;
// </if>
}
export class MetricsBrowserProxyImpl implements MetricsBrowserProxy {
recordAction(action: string) {
chrome.send('metricsHandler:recordAction', [action]);
}
recordSafetyCheckInteractionHistogram(interaction: SafetyCheckInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyCheck.Interactions',
interaction,
SafetyCheckInteractions.MAX_VALUE,
]);
}
recordSafetyCheckNotificationsListCountHistogram(suggestions: number) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyCheck.NotificationsListCount',
suggestions,
99 /*max value for Notification suggestions*/,
]);
}
recordSafetyCheckNotificationsModuleInteractionsHistogram(
interaction: SafetyCheckNotificationsModuleInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyCheck.NotificationsModuleInteractions',
interaction,
SafetyCheckNotificationsModuleInteractions.MAX_VALUE,
]);
}
recordSafetyCheckNotificationsModuleEntryPointShown(visible: boolean) {
chrome.send('metricsHandler:recordBooleanHistogram', [
'Settings.SafetyCheck.NotificationsModuleEntryPointShown',
visible,
]);
}
recordSafetyCheckUnusedSitePermissionsListCountHistogram(suggestions:
number) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyCheck.UnusedSitePermissionsListCount',
suggestions,
99 /*max value for length of revoked permissions list*/,
]);
}
recordSafetyCheckUnusedSitePermissionsModuleInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyCheck.UnusedSitePermissionsModuleInteractions',
interaction,
SafetyCheckUnusedSitePermissionsModuleInteractions.MAX_VALUE,
]);
}
recordSafetyCheckUnusedSitePermissionsModuleEntryPointShown(visible:
boolean) {
chrome.send('metricsHandler:recordBooleanHistogram', [
'Settings.SafetyCheck.UnusedSitePermissionsModuleEntryPointShown',
visible,
]);
}
recordSafetyHubCardStateClicked(
histogramName: string, state: SafetyHubCardState) {
chrome.send(
'metricsHandler:recordInHistogram',
[histogramName, state, SafetyHubCardState.MAX_VALUE]);
}
recordSafetyHubEntryPointShown(page: SafetyHubEntryPoint) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.EntryPointImpression',
page,
SafetyHubEntryPoint.MAX_VALUE,
]);
}
recordSafetyHubEntryPointClicked(page: SafetyHubEntryPoint) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.EntryPointInteraction',
page,
SafetyHubEntryPoint.MAX_VALUE,
]);
}
recordSafetyHubModuleWarningImpression(module: SafetyHubModuleType) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.DashboardWarning',
module,
SafetyHubModuleType.MAX_VALUE,
]);
}
recordSafetyHubDashboardAnyWarning(visible: boolean) {
chrome.send('metricsHandler:recordBooleanHistogram', [
'Settings.SafetyHub.HasDashboardShowAnyWarning',
visible,
]);
}
recordSafetyHubNotificationPermissionsModuleInteractionsHistogram(
interaction: SafetyCheckNotificationsModuleInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.NotificationPermissionsModule.Interactions',
interaction,
SafetyCheckNotificationsModuleInteractions.MAX_VALUE,
]);
}
recordSafetyHubNotificationPermissionsModuleListCountHistogram(suggestions:
number) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.NotificationPermissionsModule.ListCount',
suggestions,
99 /*max value for Notification Permissions suggestions*/,
]);
}
recordSafetyHubUnusedSitePermissionsModuleInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.UnusedSitePermissionsModule.Interactions',
interaction,
SafetyCheckUnusedSitePermissionsModuleInteractions.MAX_VALUE,
]);
}
recordSafetyHubAbusiveNotificationPermissionRevocationInteractionsHistogram(
interaction: SafetyCheckUnusedSitePermissionsModuleInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.AbusiveNotificationPermissionRevocation.Interactions',
interaction,
SafetyCheckUnusedSitePermissionsModuleInteractions.MAX_VALUE,
]);
}
recordSafetyHubUnusedSitePermissionsModuleListCountHistogram(suggestions:
number) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.UnusedSitePermissionsModule.ListCount',
suggestions,
99 /*max value for Unused Site Permissions suggestions*/,
]);
}
recordSettingsPageHistogram(interaction: PrivacyElementInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyElementInteractions',
interaction,
PrivacyElementInteractions.MAX_VALUE,
]);
}
recordSafeBrowsingInteractionHistogram(interaction:
SafeBrowsingInteractions) {
// TODO(crbug.com/40717279): Set the correct suffix for
// SafeBrowsing.Settings.UserAction. Use the .Default suffix for now.
chrome.send('metricsHandler:recordInHistogram', [
'SafeBrowsing.Settings.UserAction.Default',
interaction,
SafeBrowsingInteractions.MAX_VALUE,
]);
}
recordPrivacyGuideNextNavigationHistogram(interaction:
PrivacyGuideInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyGuide.NextNavigation',
interaction,
PrivacyGuideInteractions.MAX_VALUE,
]);
}
recordPrivacyGuideEntryExitHistogram(interaction: PrivacyGuideInteractions) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyGuide.EntryExit',
interaction,
PrivacyGuideInteractions.MAX_VALUE,
]);
}
recordPrivacyGuideSettingsStatesHistogram(state: PrivacyGuideSettingsStates) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyGuide.SettingsStates',
state,
PrivacyGuideSettingsStates.MAX_VALUE,
]);
}
recordPrivacyGuideFlowLengthHistogram(steps: number) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyGuide.FlowLength', steps,
5, /*max number of the settings related steps in privacy guide is 4*/
]);
}
recordPrivacyGuideStepsEligibleAndReachedHistogram(
status: PrivacyGuideStepsEligibleAndReached) {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.PrivacyGuide.StepsEligibleAndReached',
status,
PrivacyGuideStepsEligibleAndReached.COUNT,
]);
}
recordDeleteBrowsingDataAction(action: DeleteBrowsingDataAction): void {
chrome.send('metricsHandler:recordInHistogram', [
'Privacy.DeleteBrowsingData.Action',
action,
DeleteBrowsingDataAction.MAX_VALUE,
]);
}
recordSafetyHubImpression(surface: SafetyHubSurfaces): void {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.Impression',
surface,
SafetyHubSurfaces.MAX_VALUE,
]);
}
recordSafetyHubInteraction(surface: SafetyHubSurfaces): void {
chrome.send('metricsHandler:recordInHistogram', [
'Settings.SafetyHub.Interaction',
surface,
SafetyHubSurfaces.MAX_VALUE,
]);
}
// <if expr="_google_chrome and is_win">
recordFeatureNotificationsChange(enabled: boolean): void {
chrome.metricsPrivate.recordBoolean(
'Windows.FeatureNotificationsSettingChange', enabled);
}
// </if>
static getInstance(): MetricsBrowserProxy {
return instance || (instance = new MetricsBrowserProxyImpl());
}
static setInstance(obj: MetricsBrowserProxy) {
instance = obj;
}
}
let instance: MetricsBrowserProxy|null = null;