• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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.adservices.service.stats;
18 
19 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED;
20 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__ACTION_UNSPECIFIED;
21 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_APP_SELECTED;
22 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_TOPIC_SELECTED;
23 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISMISSED;
24 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISPLAYED;
25 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_IN_SELECTED;
26 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_OUT_SELECTED;
27 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_CONFIRMATION_PAGE_DISMISSED;
28 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_ADDITIONAL_INFO_CLICKED;
29 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_DISMISSED;
30 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_GOT_IT_BUTTON_CLICKED;
31 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_MORE_BUTTON_CLICKED;
32 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_IN;
33 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_OUT;
34 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED;
35 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED_TO_BOTTOM;
36 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SETTINGS_BUTTON_CLICKED;
37 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_CONFIRMATION_PAGE_DISPLAYED;
38 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISABLED;
39 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISPLAYED;
40 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_LANDING_PAGE_DISPLAYED;
41 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_REQUESTED;
42 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED;
43 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_MORE_INFO_CLICKED;
44 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED;
45 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED;
46 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_MORE_INFO_CLICKED;
47 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED;
48 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_ADDITIONAL_INFO_CLICKED;
49 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISMISSED;
50 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISPLAYED;
51 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_GOT_IT_BUTTON_CLICKED;
52 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_MORE_BUTTON_CLICKED;
53 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_IN;
54 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_OUT;
55 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED;
56 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED_TO_BOTTOM;
57 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SETTINGS_BUTTON_CLICKED;
58 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_APPS_SELECTED;
59 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_MEASUREMENT_SELECTED;
60 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_TOPICS_SELECTED;
61 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_IN_SELECTED;
62 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_OUT_SELECTED;
63 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISABLED;
64 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISPLAYED;
65 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_IN_SELECTED;
66 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_OUT_SELECTED;
67 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED;
68 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED;
69 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_SELECTED;
70 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED;
71 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED;
72 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_SELECTED;
73 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_SETTINGS_PAGE_DISPLAYED;
74 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__REQUESTED_NOTIFICATION;
75 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_APP_SELECTED;
76 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_MEASUREMENT_SELECTED;
77 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_TOPIC_SELECTED;
78 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_IN_SELECTED;
79 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_OUT_SELECTED;
80 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_APP_SELECTED;
81 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_TOPIC_SELECTED;
82 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_DISABLED;
83 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_ENABLED;
84 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED;
85 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED;
86 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_IN;
87 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_OUT;
88 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_IN;
89 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_OUT;
90 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_IN;
91 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_OUT;
92 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_IN;
93 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_OUT;
94 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__FEATURE_UNSPECIFIED;
95 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_FIRST_CONSENT;
96 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_FIRST_CONSENT_FF;
97 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_RECONSENT;
98 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_RECONSENT_FF;
99 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_UNSUPPORTED;
100 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__EU;
101 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__ROW;
102 
103 import android.content.Context;
104 import android.os.Build;
105 
106 import androidx.annotation.NonNull;
107 import androidx.annotation.RequiresApi;
108 
109 import com.android.adservices.service.FlagsFactory;
110 import com.android.adservices.service.common.feature.PrivacySandboxFeatureType;
111 import com.android.adservices.service.consent.AdServicesApiType;
112 import com.android.adservices.service.consent.ConsentManager;
113 import com.android.adservices.service.consent.DeviceRegionProvider;
114 
115 /** Logger for UiStats. */
116 // TODO(b/269798827): Enable for R.
117 @RequiresApi(Build.VERSION_CODES.S)
118 public class UiStatsLogger {
119     private static AdServicesLoggerImpl sLogger = AdServicesLoggerImpl.getInstance();
120 
121     /** Logs that a notification was displayed. */
logNotificationDisplayed(@onNull Context context)122     public static void logNotificationDisplayed(@NonNull Context context) {
123         UIStats uiStats = getBaseUiStats(context);
124 
125         uiStats.setAction(
126                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
127                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISPLAYED
128                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISPLAYED);
129 
130         sLogger.logUIStats(uiStats);
131     }
132 
133     /** Logs that the more button on the landing page was displayed. */
logLandingPageMoreButtonClicked(@onNull Context context)134     public static void logLandingPageMoreButtonClicked(@NonNull Context context) {
135         UIStats uiStats = getBaseUiStats(context);
136 
137         uiStats.setAction(
138                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
139                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_MORE_BUTTON_CLICKED
140                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_MORE_BUTTON_CLICKED);
141 
142         sLogger.logUIStats(uiStats);
143     }
144 
145     /** Logs that the additional info dropdown on the landing page was displayed. */
logLandingPageAdditionalInfoClicked(@onNull Context context)146     public static void logLandingPageAdditionalInfoClicked(@NonNull Context context) {
147         UIStats uiStats = getBaseUiStats(context);
148 
149         uiStats.setAction(
150                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
151                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_ADDITIONAL_INFO_CLICKED
152                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_ADDITIONAL_INFO_CLICKED);
153 
154         sLogger.logUIStats(uiStats);
155     }
156 
157     /** Logs that the user scrolled the landing page. */
logLandingPageScrolled(@onNull Context context)158     public static void logLandingPageScrolled(@NonNull Context context) {
159         UIStats uiStats = getBaseUiStats(context);
160 
161         uiStats.setAction(
162                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
163                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED
164                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED);
165 
166         sLogger.logUIStats(uiStats);
167     }
168 
169     /** Logs that the user scrolled to the bottom of the landing page. */
logLandingPageScrolledToBottom(@onNull Context context)170     public static void logLandingPageScrolledToBottom(@NonNull Context context) {
171         UIStats uiStats = getBaseUiStats(context);
172 
173         uiStats.setAction(
174                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
175                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED_TO_BOTTOM
176                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED_TO_BOTTOM);
177 
178         sLogger.logUIStats(uiStats);
179     }
180 
181     /** Logs that the user clicked the setting button on the landing page. */
logLandingPageSettingsButtonClicked(@onNull Context context)182     public static void logLandingPageSettingsButtonClicked(@NonNull Context context) {
183         UIStats uiStats = getBaseUiStats(context);
184 
185         uiStats.setAction(
186                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
187                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SETTINGS_BUTTON_CLICKED
188                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SETTINGS_BUTTON_CLICKED);
189 
190         sLogger.logUIStats(uiStats);
191     }
192 
193     /** Logs that the user dismissed the landing page. */
logLandingPageDismissed(@onNull Context context)194     public static void logLandingPageDismissed(@NonNull Context context) {
195         UIStats uiStats = getBaseUiStats(context);
196 
197         uiStats.setAction(
198                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
199                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_DISMISSED
200                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISMISSED);
201 
202         sLogger.logUIStats(uiStats);
203     }
204 
205     /** Logs that the user clicked the got it button on the landing page. */
logLandingPageGotItButtonClicked(@onNull Context context)206     public static void logLandingPageGotItButtonClicked(@NonNull Context context) {
207         UIStats uiStats = getBaseUiStats(context);
208 
209         uiStats.setAction(
210                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
211                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_GOT_IT_BUTTON_CLICKED
212                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_GOT_IT_BUTTON_CLICKED);
213 
214         sLogger.logUIStats(uiStats);
215     }
216 
217     /** Logs that the user opt-in from the landing page. */
logLandingPageOptIn(@onNull Context context)218     public static void logLandingPageOptIn(@NonNull Context context) {
219         UIStats uiStats = getBaseUiStats(context);
220 
221         uiStats.setAction(
222                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
223                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_IN
224                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_IN);
225 
226         sLogger.logUIStats(uiStats);
227     }
228 
229     /** Logs that the user opt-out from the landing page. */
logLandingPageOptOut(@onNull Context context)230     public static void logLandingPageOptOut(@NonNull Context context) {
231         UIStats uiStats = getBaseUiStats(context);
232 
233         uiStats.setAction(
234                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
235                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_OUT
236                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_OUT);
237 
238         sLogger.logUIStats(uiStats);
239     }
240 
241     /** Logs that the user clicked settings on the opt-in confirmation page. */
logOptInConfirmationPageSettingsClicked(@onNull Context context)242     public static void logOptInConfirmationPageSettingsClicked(@NonNull Context context) {
243         UIStats uiStats = getBaseUiStats(context);
244 
245         uiStats.setAction(
246                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
247                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED
248                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED);
249 
250         sLogger.logUIStats(uiStats);
251     }
252 
253     /** Logs that the user clicked settings on the opt-out confirmation page. */
logOptOutConfirmationPageSettingsClicked(@onNull Context context)254     public static void logOptOutConfirmationPageSettingsClicked(@NonNull Context context) {
255         UIStats uiStats = getBaseUiStats(context);
256 
257         uiStats.setAction(
258                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
259                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED
260                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED);
261 
262         sLogger.logUIStats(uiStats);
263     }
264 
265     /** Logs that the user clicked got it on the opt-in confirmation page. */
logOptInConfirmationPageGotItClicked(@onNull Context context)266     public static void logOptInConfirmationPageGotItClicked(@NonNull Context context) {
267         UIStats uiStats = getBaseUiStats(context);
268 
269         uiStats.setAction(
270                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
271                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED
272                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED);
273 
274         sLogger.logUIStats(uiStats);
275     }
276 
277     /** Logs that the user clicked got it on the opt-out confirmation page. */
logOptOutConfirmationPageGotItClicked(@onNull Context context)278     public static void logOptOutConfirmationPageGotItClicked(@NonNull Context context) {
279         UIStats uiStats = getBaseUiStats(context);
280 
281         uiStats.setAction(
282                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
283                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED
284                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED);
285 
286         sLogger.logUIStats(uiStats);
287     }
288 
289     /** GA only. Logs that the user clicked more info on the opt-in confirmation page. */
logOptInConfirmationPageMoreInfoClicked(@onNull Context context)290     public static void logOptInConfirmationPageMoreInfoClicked(@NonNull Context context) {
291         UIStats uiStats = getBaseUiStats(context);
292 
293         uiStats.setAction(
294                 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_MORE_INFO_CLICKED);
295 
296         sLogger.logUIStats(uiStats);
297     }
298 
299     /** GA only. Logs that the user clicked more info on the opt-out confirmation page. */
logOptOutConfirmationPageMoreInfoClicked(@onNull Context context)300     public static void logOptOutConfirmationPageMoreInfoClicked(@NonNull Context context) {
301         UIStats uiStats = getBaseUiStats(context);
302 
303         uiStats.setAction(
304                 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_MORE_INFO_CLICKED);
305 
306         sLogger.logUIStats(uiStats);
307     }
308 
309     /** Logs that the user dismissed the confirmation page. */
logConfirmationPageDismissed(@onNull Context context)310     public static void logConfirmationPageDismissed(@NonNull Context context) {
311         UIStats uiStats = getBaseUiStats(context);
312 
313         uiStats.setAction(
314                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
315                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_CONFIRMATION_PAGE_DISMISSED
316                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISMISSED);
317 
318         sLogger.logUIStats(uiStats);
319     }
320 
321     /** Logs that a notification was requested. */
logRequestedNotification(@onNull Context context)322     public static void logRequestedNotification(@NonNull Context context) {
323         UIStats uiStats = getBaseUiStats(context);
324 
325         uiStats.setAction(
326                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
327                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_REQUESTED
328                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__REQUESTED_NOTIFICATION);
329 
330         sLogger.logUIStats(uiStats);
331     }
332 
333     /** Logs that notifications are disabled on a device. */
logNotificationDisabled(@onNull Context context)334     public static void logNotificationDisabled(@NonNull Context context) {
335         UIStats uiStats = getBaseUiStats(context);
336 
337         uiStats.setAction(
338                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
339                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISABLED
340                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISABLED);
341 
342         sLogger.logUIStats(uiStats);
343     }
344 
345     /** Logs that the landing page was shown to a user. */
logLandingPageDisplayed(@onNull Context context)346     public static void logLandingPageDisplayed(@NonNull Context context) {
347         UIStats uiStats = getBaseUiStats(context);
348 
349         uiStats.setAction(
350                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
351                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_LANDING_PAGE_DISPLAYED
352                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISPLAYED);
353 
354         sLogger.logUIStats(uiStats);
355     }
356 
357     /** Logs that the confirmation page was shown to a user. */
logConfirmationPageDisplayed(@onNull Context context)358     public static void logConfirmationPageDisplayed(@NonNull Context context) {
359         UIStats uiStats = getBaseUiStats(context);
360 
361         uiStats.setAction(
362                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
363                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_CONFIRMATION_PAGE_DISPLAYED
364                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISPLAYED);
365 
366         sLogger.logUIStats(uiStats);
367     }
368 
369     /** Logs user opt-in action for PP API. */
logOptInSelected(@onNull Context context)370     public static void logOptInSelected(@NonNull Context context) {
371         UIStats uiStats = getBaseUiStats(context);
372 
373         uiStats.setAction(
374                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
375                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_IN_SELECTED
376                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_SELECTED);
377 
378         sLogger.logUIStats(uiStats);
379     }
380 
381     /** Logs user opt-out action for PP API. */
logOptOutSelected(@onNull Context context)382     public static void logOptOutSelected(@NonNull Context context) {
383         UIStats uiStats = getBaseUiStats(context);
384 
385         uiStats.setAction(
386                 FlagsFactory.getFlags().getGaUxFeatureEnabled()
387                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_OUT_SELECTED
388                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_SELECTED);
389 
390         sLogger.logUIStats(uiStats);
391     }
392 
393     /** Logs user opt-in action given an ApiType. */
logOptInSelected(@onNull Context context, AdServicesApiType apiType)394     public static void logOptInSelected(@NonNull Context context, AdServicesApiType apiType) {
395         UIStats uiStats = getBaseUiStats(context, apiType);
396 
397         uiStats.setAction(getPerApiConsentAction(apiType, /* isOptIn */ true));
398 
399         sLogger.logUIStats(uiStats);
400     }
401 
402     /** Logs user opt-out action given an ApiType. */
logOptOutSelected(@onNull Context context, AdServicesApiType apiType)403     public static void logOptOutSelected(@NonNull Context context, AdServicesApiType apiType) {
404         UIStats uiStats = getBaseUiStats(context, apiType);
405 
406         uiStats.setAction(getPerApiConsentAction(apiType, /* isOptIn */ false));
407 
408         sLogger.logUIStats(uiStats);
409     }
410 
411     /** Logs that a user has opened the settings page. */
logSettingsPageDisplayed(@onNull Context context)412     public static void logSettingsPageDisplayed(@NonNull Context context) {
413         UIStats uiStats = getBaseUiStats(context);
414 
415         uiStats.setAction(
416                 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_SETTINGS_PAGE_DISPLAYED);
417 
418         sLogger.logUIStats(uiStats);
419     }
420 
421     /** Logs that a user has clicked manage topics button. */
logManageTopicsSelected(@onNull Context context)422     public static void logManageTopicsSelected(@NonNull Context context) {
423         UIStats uiStats = getBaseUiStats(context);
424 
425         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_TOPICS_SELECTED);
426 
427         sLogger.logUIStats(uiStats);
428     }
429 
430     /** Logs that a user has clicked manage apps button. */
logManageAppsSelected(@onNull Context context)431     public static void logManageAppsSelected(@NonNull Context context) {
432         UIStats uiStats = getBaseUiStats(context);
433 
434         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_APPS_SELECTED);
435 
436         sLogger.logUIStats(uiStats);
437     }
438 
439     /** Logs that a user has clicked reset topics button. */
logResetTopicSelected(@onNull Context context)440     public static void logResetTopicSelected(@NonNull Context context) {
441         UIStats uiStats = getBaseUiStats(context);
442 
443         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_TOPIC_SELECTED);
444 
445         sLogger.logUIStats(uiStats);
446     }
447 
448     /** Logs that a user has clicked reset apps button. */
logResetAppSelected(@onNull Context context)449     public static void logResetAppSelected(@NonNull Context context) {
450         UIStats uiStats = getBaseUiStats(context);
451 
452         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_APP_SELECTED);
453 
454         sLogger.logUIStats(uiStats);
455     }
456 
457     /** Logs that a user has clicked block topic button. */
logBlockTopicSelected(@onNull Context context)458     public static void logBlockTopicSelected(@NonNull Context context) {
459         UIStats uiStats = getBaseUiStats(context);
460 
461         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_TOPIC_SELECTED);
462 
463         sLogger.logUIStats(uiStats);
464     }
465     /** Logs that a user has clicked unblock topic button. */
logUnblockTopicSelected(@onNull Context context)466     public static void logUnblockTopicSelected(@NonNull Context context) {
467         UIStats uiStats = getBaseUiStats(context);
468 
469         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_TOPIC_SELECTED);
470 
471         sLogger.logUIStats(uiStats);
472     }
473 
474     /** Logs that a user has clicked block app button. */
logBlockAppSelected(@onNull Context context)475     public static void logBlockAppSelected(@NonNull Context context) {
476         UIStats uiStats = getBaseUiStats(context);
477 
478         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_APP_SELECTED);
479 
480         sLogger.logUIStats(uiStats);
481     }
482 
483     /** Logs that a user has clicked unblock app button. */
logUnblockAppSelected(@onNull Context context)484     public static void logUnblockAppSelected(@NonNull Context context) {
485         UIStats uiStats = getBaseUiStats(context);
486 
487         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_APP_SELECTED);
488 
489         sLogger.logUIStats(uiStats);
490     }
491 
492     /** Logs that a user has clicked manage measurement button. */
logManageMeasurementSelected(@onNull Context context)493     public static void logManageMeasurementSelected(@NonNull Context context) {
494         UIStats uiStats = getBaseUiStats(context);
495 
496         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_MEASUREMENT_SELECTED);
497 
498         sLogger.logUIStats(uiStats);
499     }
500 
501     /** Logs that a user has clicked reset measurement button. */
logResetMeasurementSelected(@onNull Context context)502     public static void logResetMeasurementSelected(@NonNull Context context) {
503         UIStats uiStats = getBaseUiStats(context);
504 
505         uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_MEASUREMENT_SELECTED);
506 
507         sLogger.logUIStats(uiStats);
508     }
509 
getRegion(@onNull Context context)510     private static int getRegion(@NonNull Context context) {
511         return DeviceRegionProvider.isEuDevice(context)
512                 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__EU
513                 : AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__ROW;
514     }
515 
getDefaultConsent(@onNull Context context)516     private static int getDefaultConsent(@NonNull Context context) {
517         Boolean defaultConsent = ConsentManager.getInstance(context).getDefaultConsent();
518         // edge case where the user opens the settings pages before receiving consent notification.
519         if (defaultConsent == null) {
520             return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED;
521         } else {
522             return defaultConsent
523                     ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_IN
524                     : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_OUT;
525         }
526     }
527 
getDefaultAdIdState(@onNull Context context)528     private static int getDefaultAdIdState(@NonNull Context context) {
529         Boolean defaultAdIdState = ConsentManager.getInstance(context).getDefaultAdIdState();
530         // edge case where the user opens the settings pages before receiving consent notification.
531         if (defaultAdIdState == null) {
532             return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED;
533         } else {
534             return defaultAdIdState
535                     ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_ENABLED
536                     : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_DISABLED;
537         }
538     }
539 
getDefaultConsent(@onNull Context context, AdServicesApiType apiType)540     private static int getDefaultConsent(@NonNull Context context, AdServicesApiType apiType) {
541         switch (apiType) {
542             case TOPICS:
543                 Boolean topicsDefaultConsent =
544                         ConsentManager.getInstance(context).getTopicsDefaultConsent();
545                 // edge case where the user checks topic consent before receiving consent
546                 // notification.
547                 if (topicsDefaultConsent == null) {
548                     return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED;
549                 } else {
550                     return topicsDefaultConsent
551                             ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_IN
552                             : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_OUT;
553                 }
554             case FLEDGE:
555                 Boolean fledgeDefaultConsent =
556                         ConsentManager.getInstance(context).getFledgeDefaultConsent();
557                 // edge case where the user checks FLEDGE consent before receiving consent
558                 // notification.
559                 if (fledgeDefaultConsent == null) {
560                     return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED;
561                 } else {
562                     return fledgeDefaultConsent
563                             ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_IN
564                             : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_OUT;
565                 }
566             case MEASUREMENTS:
567                 Boolean measurementDefaultConsent =
568                         ConsentManager.getInstance(context).getMeasurementDefaultConsent();
569                 // edge case where the user checks measurement consent before receiving consent
570                 // notification.
571                 if (measurementDefaultConsent == null) {
572                     return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED;
573                 } else {
574                     return measurementDefaultConsent
575                             ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_IN
576                             : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_OUT;
577                 }
578             default:
579                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED;
580         }
581     }
582 
getPerApiConsentAction(AdServicesApiType apiType, boolean isOptIn)583     private static int getPerApiConsentAction(AdServicesApiType apiType, boolean isOptIn) {
584         switch (apiType) {
585             case TOPICS:
586                 return isOptIn
587                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_IN_SELECTED
588                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_OUT_SELECTED;
589             case FLEDGE:
590                 return isOptIn
591                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_IN_SELECTED
592                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_OUT_SELECTED;
593             case MEASUREMENTS:
594                 return isOptIn
595                         ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_IN_SELECTED
596                         : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_OUT_SELECTED;
597             default:
598                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__ACTION_UNSPECIFIED;
599         }
600     }
601 
getPrivacySandboxFeatureType(@onNull Context context)602     private static int getPrivacySandboxFeatureType(@NonNull Context context) {
603         if (!FlagsFactory.getFlags().isUiFeatureTypeLoggingEnabled()) {
604             return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__FEATURE_UNSPECIFIED;
605         }
606 
607         PrivacySandboxFeatureType featureType =
608                 ConsentManager.getInstance(context).getCurrentPrivacySandboxFeature();
609         if (featureType == null) {
610             return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__FEATURE_UNSPECIFIED;
611         }
612 
613         switch (featureType) {
614             case PRIVACY_SANDBOX_FIRST_CONSENT_FF:
615                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_FIRST_CONSENT_FF;
616             case PRIVACY_SANDBOX_RECONSENT_FF:
617                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_RECONSENT_FF;
618             case PRIVACY_SANDBOX_FIRST_CONSENT:
619                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_FIRST_CONSENT;
620             case PRIVACY_SANDBOX_RECONSENT:
621                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_RECONSENT;
622             case PRIVACY_SANDBOX_UNSUPPORTED:
623                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__PRIVACY_SANDBOX_UNSUPPORTED;
624             default:
625                 return AD_SERVICES_SETTINGS_USAGE_REPORTED__FEATURE_TYPE__FEATURE_UNSPECIFIED;
626         }
627     }
628 
getBaseUiStats(@onNull Context context)629     private static UIStats getBaseUiStats(@NonNull Context context) {
630         return new UIStats.Builder()
631                 .setCode(AD_SERVICES_SETTINGS_USAGE_REPORTED)
632                 .setRegion(getRegion(context))
633                 .setDefaultConsent(getDefaultConsent(context))
634                 .setDefaultAdIdState(getDefaultAdIdState(context))
635                 .setPrivacySandboxFeatureType(getPrivacySandboxFeatureType(context))
636                 .build();
637     }
638 
getBaseUiStats(@onNull Context context, AdServicesApiType apiType)639     private static UIStats getBaseUiStats(@NonNull Context context, AdServicesApiType apiType) {
640         return new UIStats.Builder()
641                 .setCode(AD_SERVICES_SETTINGS_USAGE_REPORTED)
642                 .setRegion(getRegion(context))
643                 .setDefaultConsent(getDefaultConsent(context, apiType))
644                 .setDefaultAdIdState(getDefaultAdIdState(context))
645                 .setPrivacySandboxFeatureType(getPrivacySandboxFeatureType(context))
646                 .build();
647     }
648 }
649