• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.accessibility;
18 
19 import static com.android.settings.accessibility.TextReadingPreferenceFragment.BOLD_TEXT_KEY;
20 import static com.android.settings.accessibility.TextReadingPreferenceFragment.DISPLAY_SIZE_KEY;
21 import static com.android.settings.accessibility.TextReadingPreferenceFragment.EntryPoint.ACCESSIBILITY_SETTINGS;
22 import static com.android.settings.accessibility.TextReadingPreferenceFragment.EntryPoint.DISPLAY_SETTINGS;
23 import static com.android.settings.accessibility.TextReadingPreferenceFragment.EntryPoint.HIGH_CONTRAST_TEXT_NOTIFICATION;
24 import static com.android.settings.accessibility.TextReadingPreferenceFragment.EntryPoint.SUW_ANYTHING_ELSE;
25 import static com.android.settings.accessibility.TextReadingPreferenceFragment.EntryPoint.SUW_VISION_SETTINGS;
26 import static com.android.settings.accessibility.TextReadingPreferenceFragment.FONT_SIZE_KEY;
27 import static com.android.settings.accessibility.TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY;
28 import static com.android.settings.accessibility.TextReadingPreferenceFragment.RESET_KEY;
29 
30 import android.content.ComponentName;
31 
32 import com.android.internal.util.FrameworkStatsLog;
33 import com.android.settings.core.instrumentation.SettingsStatsLog;
34 
35 /** Methods for logging accessibility states. */
36 public final class AccessibilityStatsLogUtils {
37 
AccessibilityStatsLogUtils()38     private AccessibilityStatsLogUtils() {}
39 
40     /**
41      * Logs accessibility service name and its enabled status. Calls this when the user trigger
42      * the accessibility service to be enabled/disabled.
43      *
44      * @param componentName component name of the service
45      * @param enabled       {@code true} if the service is enabled
46      */
logAccessibilityServiceEnabled(ComponentName componentName, boolean enabled)47     static void logAccessibilityServiceEnabled(ComponentName componentName, boolean enabled) {
48         SettingsStatsLog.write(SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED,
49                 componentName.flattenToString(), convertToLoggingServiceEnabled(enabled));
50     }
51 
convertToLoggingServiceEnabled(boolean enabled)52     private static int convertToLoggingServiceEnabled(boolean enabled) {
53         return enabled ? SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__ENABLED
54                 : SettingsStatsLog.ACCESSIBILITY_SERVICE_REPORTED__SERVICE_STATUS__DISABLED;
55     }
56 
57     /**
58      * Logs when the non-a11y category service is disabled. Calls this when the user disables the
59      * non-a11y category service for the first time.
60      *
61      * @param packageName package name of the service
62      * @param durationMills    duration in milliseconds between starting the page and disabling the
63      *                    service
64      */
logDisableNonA11yCategoryService(String packageName, long durationMills)65     static void logDisableNonA11yCategoryService(String packageName, long durationMills) {
66         com.android.internal.accessibility.util.AccessibilityStatsLogUtils
67                 .logNonA11yToolServiceWarningReported(
68                         packageName,
69                         com.android.internal.accessibility.util.AccessibilityStatsLogUtils
70                                 .ACCESSIBILITY_PRIVACY_WARNING_STATUS_SERVICE_DISABLED,
71                         durationMills);
72     }
73 
74     /**
75      * Converts to the key name for logging.
76      *
77      * @param prefKey the preference key
78      * @return the int value which maps to the key name
79      */
convertToItemKeyName(String prefKey)80     static int convertToItemKeyName(String prefKey) {
81         switch (prefKey) {
82             case FONT_SIZE_KEY:
83                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_FONT_SIZE;
84             case DISPLAY_SIZE_KEY:
85                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_DISPLAY_SIZE;
86             case BOLD_TEXT_KEY:
87                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_BOLD_TEXT;
88             case HIGH_TEXT_CONTRAST_KEY:
89                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_HIGH_CONTRAST_TEXT;
90             case RESET_KEY:
91                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_RESET;
92             default:
93                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__NAME__TEXT_READING_UNKNOWN_ITEM;
94         }
95     }
96 
97     /**
98      * Converts to the entry point for logging.
99      *
100      * @param entryPoint the entry point
101      * @return the int value which maps to the entry point
102      */
convertToEntryPoint(int entryPoint)103     static int convertToEntryPoint(int entryPoint) {
104         switch (entryPoint) {
105             case SUW_VISION_SETTINGS:
106                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_SUW_VISION_SETTINGS;
107             case SUW_ANYTHING_ELSE:
108                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_SUW_ANYTHING_ELSE;
109             case DISPLAY_SETTINGS:
110                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_DISPLAY_SETTINGS;
111             case ACCESSIBILITY_SETTINGS:
112                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_ACCESSIBILITY_SETTINGS;
113             case HIGH_CONTRAST_TEXT_NOTIFICATION:
114                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_HIGH_CONTRAST_TEXT_NOTIFICATION;
115             default:
116                 return SettingsStatsLog.ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED__ENTRY_POINT__TEXT_READING_UNKNOWN_ENTRY;
117         }
118     }
119 
120     /**
121      * Converts the entering page id where the hearing aid binding process starts for logging.
122      *
123      * @param pageId the entry page id where the hearing aid binding process starts
124      * @return the int value for logging mapped from some page ids defined in
125      * {@link SettingsStatsLog}
126      */
convertToHearingAidInfoBondEntry(int pageId)127     public static int convertToHearingAidInfoBondEntry(int pageId) {
128         switch (pageId) {
129             case SettingsStatsLog.SETTINGS_UICHANGED__PAGE_ID__SETTINGS_CONNECTED_DEVICE_CATEGORY:
130                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__CONNECTED_DEVICES;
131             case SettingsStatsLog.SETTINGS_UICHANGED__PAGE_ID__DIALOG_ACCESSIBILITY_HEARINGAID:
132                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__ACCESSIBILITY_HEARING_AIDS;
133             case SettingsStatsLog.SETTINGS_UICHANGED__PAGE_ID__DIALOG_ACCESSIBILITY_HEARING_AID_PAIR_ANOTHER:
134                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__ACCESSIBILITY_HEARING_AID_PAIR_ANOTHER;
135             case SettingsStatsLog.SETTINGS_UICHANGED__PAGE_ID__BLUETOOTH_FRAGMENT:
136                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__BLUETOOTH;
137             case SettingsStatsLog.SETTINGS_UICHANGED__PAGE_ID__ACCESSIBILITY_HEARING_AID_SETTINGS:
138                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__ACCESSIBILITY_HEARING_AID_SETTINGS;
139             default:
140                 return FrameworkStatsLog.HEARING_AID_INFO_REPORTED__BOND_ENTRY__PAGE_UNKNOWN;
141         }
142     }
143 }
144