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