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_2_CLICKED; 29 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_ADDITIONAL_INFO_CLICKED; 30 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_DISMISSED; 31 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_GOT_IT_BUTTON_CLICKED; 32 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_MORE_BUTTON_CLICKED; 33 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_IN; 34 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_OUT; 35 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED; 36 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED_TO_BOTTOM; 37 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SETTINGS_BUTTON_CLICKED; 38 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_CONFIRMATION_PAGE_DISPLAYED; 39 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISABLED; 40 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISPLAYED; 41 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_LANDING_PAGE_DISPLAYED; 42 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_REQUESTED; 43 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED; 44 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_MORE_INFO_CLICKED; 45 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED; 46 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED; 47 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_MORE_INFO_CLICKED; 48 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED; 49 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_ADDITIONAL_INFO_CLICKED; 50 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISMISSED; 51 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISPLAYED; 52 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_GOT_IT_BUTTON_CLICKED; 53 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_MORE_BUTTON_CLICKED; 54 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_IN; 55 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_OUT; 56 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED; 57 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED_TO_BOTTOM; 58 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SETTINGS_BUTTON_CLICKED; 59 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_APPS_SELECTED; 60 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_MEASUREMENT_SELECTED; 61 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_TOPICS_SELECTED; 62 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_IN_SELECTED; 63 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_OUT_SELECTED; 64 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISABLED; 65 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISPLAYED; 66 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_IN_SELECTED; 67 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_OUT_SELECTED; 68 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED; 69 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED; 70 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_SELECTED; 71 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED; 72 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED; 73 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_SELECTED; 74 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_ENTRY_POINT_CLICKED; 75 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_SETTINGS_PAGE_DISPLAYED; 76 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__REQUESTED_NOTIFICATION; 77 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_APP_SELECTED; 78 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_MEASUREMENT_SELECTED; 79 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_TOPIC_SELECTED; 80 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_IN_SELECTED; 81 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_OUT_SELECTED; 82 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_APP_SELECTED; 83 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_TOPIC_SELECTED; 84 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_DISABLED; 85 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_ENABLED; 86 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED; 87 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED; 88 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_IN; 89 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_OUT; 90 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_IN; 91 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_OUT; 92 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_IN; 93 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_OUT; 94 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_IN; 95 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_OUT; 96 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__ALREADY_ENROLLED_CHANNEL; 97 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__CONSENT_NOTIFICATION_DEBUG_CHANNEL; 98 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__FIRST_CONSENT_NOTIFICATION_CHANNEL; 99 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__PAS_FIRST_NOTIFICATION_CHANNEL; 100 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__PAS_RENOTIFY_NOTIFICATION_CHANNEL; 101 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__RECONSENT_NOTIFICATION_CHANNEL; 102 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__UNSPECIFIED_CHANNEL; 103 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__UNSUPPORTED_CHANNEL; 104 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__EU; 105 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__ROW; 106 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__BETA_UX; 107 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__GA_UX; 108 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__GA_UX_WITH_PAS; 109 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__UNSPECIFIED_UX; 110 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__UNSUPPORTED_UX; 111 import static com.android.adservices.service.ui.constants.DebugMessages.PRIVACY_SANDBOX_UI_REQUEST_MESSAGE; 112 113 import android.content.Context; 114 import android.os.Build; 115 116 import androidx.annotation.RequiresApi; 117 118 import com.android.adservices.LogUtil; 119 import com.android.adservices.service.FlagsFactory; 120 import com.android.adservices.service.consent.AdServicesApiType; 121 import com.android.adservices.service.consent.ConsentManager; 122 import com.android.adservices.service.consent.DeviceRegionProvider; 123 import com.android.adservices.service.ui.data.UxStatesManager; 124 import com.android.adservices.service.ui.enrollment.collection.BetaUxEnrollmentChannelCollection; 125 import com.android.adservices.service.ui.enrollment.collection.GaUxEnrollmentChannelCollection; 126 import com.android.adservices.service.ui.enrollment.collection.PrivacySandboxEnrollmentChannelCollection; 127 import com.android.adservices.service.ui.enrollment.collection.U18UxEnrollmentChannelCollection; 128 import com.android.adservices.shared.common.ApplicationContextSingleton; 129 import com.android.internal.annotations.VisibleForTesting; 130 131 /** Logger for UiStats. */ 132 @RequiresApi(Build.VERSION_CODES.S) 133 public final class UiStatsLogger { 134 private static AdServicesLoggerImpl sLogger = AdServicesLoggerImpl.getInstance(); 135 136 /** Logs that a notification was displayed. */ logNotificationDisplayed()137 public static void logNotificationDisplayed() { 138 UIStats uiStats = getBaseUiStats(); 139 140 uiStats.setAction( 141 FlagsFactory.getFlags().getGaUxFeatureEnabled() 142 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISPLAYED 143 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISPLAYED); 144 145 getAdServicesLogger().logUIStats(uiStats); 146 } 147 148 /** Logs that the more button on the landing page was displayed. */ logLandingPageMoreButtonClicked()149 public static void logLandingPageMoreButtonClicked() { 150 UIStats uiStats = getBaseUiStats(); 151 152 uiStats.setAction( 153 FlagsFactory.getFlags().getGaUxFeatureEnabled() 154 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_MORE_BUTTON_CLICKED 155 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_MORE_BUTTON_CLICKED); 156 157 getAdServicesLogger().logUIStats(uiStats); 158 } 159 160 /** Logs that the additional info dropdown on the landing page was displayed. */ logLandingPageAdditionalInfoClicked()161 public static void logLandingPageAdditionalInfoClicked() { 162 UIStats uiStats = getBaseUiStats(); 163 164 uiStats.setAction( 165 FlagsFactory.getFlags().getGaUxFeatureEnabled() 166 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_ADDITIONAL_INFO_CLICKED 167 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_ADDITIONAL_INFO_CLICKED); 168 169 getAdServicesLogger().logUIStats(uiStats); 170 } 171 172 /** Logs that the user scrolled the landing page. */ logLandingPageScrolled()173 public static void logLandingPageScrolled() { 174 UIStats uiStats = getBaseUiStats(); 175 176 uiStats.setAction( 177 FlagsFactory.getFlags().getGaUxFeatureEnabled() 178 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED 179 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED); 180 181 getAdServicesLogger().logUIStats(uiStats); 182 } 183 184 /** Logs that the user scrolled to the bottom of the landing page. */ logLandingPageScrolledToBottom()185 public static void logLandingPageScrolledToBottom() { 186 UIStats uiStats = getBaseUiStats(); 187 188 uiStats.setAction( 189 FlagsFactory.getFlags().getGaUxFeatureEnabled() 190 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SCROLLED_TO_BOTTOM 191 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SCROLLED_TO_BOTTOM); 192 193 getAdServicesLogger().logUIStats(uiStats); 194 } 195 196 /** Logs that the user clicked the setting button on the landing page. */ logLandingPageSettingsButtonClicked()197 public static void logLandingPageSettingsButtonClicked() { 198 UIStats uiStats = getBaseUiStats(); 199 200 uiStats.setAction( 201 FlagsFactory.getFlags().getGaUxFeatureEnabled() 202 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_SETTINGS_BUTTON_CLICKED 203 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_SETTINGS_BUTTON_CLICKED); 204 205 getAdServicesLogger().logUIStats(uiStats); 206 } 207 208 /** Logs that the user dismissed the landing page. */ logLandingPageDismissed()209 public static void logLandingPageDismissed() { 210 UIStats uiStats = getBaseUiStats(); 211 212 uiStats.setAction( 213 FlagsFactory.getFlags().getGaUxFeatureEnabled() 214 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_DISMISSED 215 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISMISSED); 216 217 getAdServicesLogger().logUIStats(uiStats); 218 } 219 220 /** Logs that the user clicked the got it button on the landing page. */ logLandingPageGotItButtonClicked()221 public static void logLandingPageGotItButtonClicked() { 222 UIStats uiStats = getBaseUiStats(); 223 224 uiStats.setAction( 225 FlagsFactory.getFlags().getGaUxFeatureEnabled() 226 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_GOT_IT_BUTTON_CLICKED 227 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_GOT_IT_BUTTON_CLICKED); 228 229 getAdServicesLogger().logUIStats(uiStats); 230 } 231 232 /** Logs that the user opt-in from the landing page. */ logLandingPageOptIn()233 public static void logLandingPageOptIn() { 234 UIStats uiStats = getBaseUiStats(); 235 236 uiStats.setAction( 237 FlagsFactory.getFlags().getGaUxFeatureEnabled() 238 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_IN 239 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_IN); 240 241 getAdServicesLogger().logUIStats(uiStats); 242 } 243 244 /** Logs that the user opt-out from the landing page. */ logLandingPageOptOut()245 public static void logLandingPageOptOut() { 246 UIStats uiStats = getBaseUiStats(); 247 248 uiStats.setAction( 249 FlagsFactory.getFlags().getGaUxFeatureEnabled() 250 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_OPT_OUT 251 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_OPT_OUT); 252 253 getAdServicesLogger().logUIStats(uiStats); 254 } 255 256 /** Logs that the user clicked settings on the opt-in confirmation page. */ logOptInConfirmationPageSettingsClicked()257 public static void logOptInConfirmationPageSettingsClicked() { 258 UIStats uiStats = getBaseUiStats(); 259 260 uiStats.setAction( 261 FlagsFactory.getFlags().getGaUxFeatureEnabled() 262 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED 263 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_SETTINGS_CLICKED); 264 265 getAdServicesLogger().logUIStats(uiStats); 266 } 267 268 /** Logs that the user clicked settings on the opt-out confirmation page. */ logOptOutConfirmationPageSettingsClicked()269 public static void logOptOutConfirmationPageSettingsClicked() { 270 UIStats uiStats = getBaseUiStats(); 271 272 uiStats.setAction( 273 FlagsFactory.getFlags().getGaUxFeatureEnabled() 274 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED 275 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_SETTINGS_CLICKED); 276 277 getAdServicesLogger().logUIStats(uiStats); 278 } 279 280 /** Logs that the user clicked got it on the opt-in confirmation page. */ logOptInConfirmationPageGotItClicked()281 public static void logOptInConfirmationPageGotItClicked() { 282 UIStats uiStats = getBaseUiStats(); 283 284 uiStats.setAction( 285 FlagsFactory.getFlags().getGaUxFeatureEnabled() 286 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED 287 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_CONFIRMATION_PAGE_GOT_IT_CLICKED); 288 289 getAdServicesLogger().logUIStats(uiStats); 290 } 291 292 /** Logs that the user clicked got it on the opt-out confirmation page. */ logOptOutConfirmationPageGotItClicked()293 public static void logOptOutConfirmationPageGotItClicked() { 294 UIStats uiStats = getBaseUiStats(); 295 296 uiStats.setAction( 297 FlagsFactory.getFlags().getGaUxFeatureEnabled() 298 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED 299 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_CONFIRMATION_PAGE_GOT_IT_CLICKED); 300 301 getAdServicesLogger().logUIStats(uiStats); 302 } 303 304 /** GA only. Logs that the user clicked more info on the opt-in confirmation page. */ logOptInConfirmationPageMoreInfoClicked()305 public static void logOptInConfirmationPageMoreInfoClicked() { 306 UIStats uiStats = getBaseUiStats(); 307 308 uiStats.setAction( 309 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_IN_CONFIRMATION_PAGE_MORE_INFO_CLICKED); 310 311 getAdServicesLogger().logUIStats(uiStats); 312 } 313 314 /** GA only. Logs that the user clicked more info on the opt-out confirmation page. */ logOptOutConfirmationPageMoreInfoClicked()315 public static void logOptOutConfirmationPageMoreInfoClicked() { 316 UIStats uiStats = getBaseUiStats(); 317 318 uiStats.setAction( 319 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_OPT_OUT_CONFIRMATION_PAGE_MORE_INFO_CLICKED); 320 321 getAdServicesLogger().logUIStats(uiStats); 322 } 323 324 /** Logs that the user dismissed the confirmation page. */ logConfirmationPageDismissed()325 public static void logConfirmationPageDismissed() { 326 UIStats uiStats = getBaseUiStats(); 327 328 uiStats.setAction( 329 FlagsFactory.getFlags().getGaUxFeatureEnabled() 330 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_CONFIRMATION_PAGE_DISMISSED 331 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISMISSED); 332 333 getAdServicesLogger().logUIStats(uiStats); 334 } 335 336 /** Logs that a notification was requested. */ logRequestedNotification()337 public static void logRequestedNotification() { 338 UIStats uiStats = getBaseUiStats(); 339 340 uiStats.setUx(getUx(true)); 341 uiStats.setAction( 342 FlagsFactory.getFlags().getGaUxFeatureEnabled() 343 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_REQUESTED 344 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__REQUESTED_NOTIFICATION); 345 346 getAdServicesLogger().logUIStats(uiStats); 347 } 348 349 /** Logs that notifications are disabled on a device. */ logNotificationDisabled()350 public static void logNotificationDisabled() { 351 UIStats uiStats = getBaseUiStats(); 352 353 uiStats.setUx(getUx(true)); 354 uiStats.setAction( 355 FlagsFactory.getFlags().getGaUxFeatureEnabled() 356 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_DISABLED 357 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_DISABLED); 358 359 getAdServicesLogger().logUIStats(uiStats); 360 } 361 362 /** Logs that the landing page was shown to a user. */ logLandingPageDisplayed()363 public static void logLandingPageDisplayed() { 364 UIStats uiStats = getBaseUiStats(); 365 366 uiStats.setAction( 367 FlagsFactory.getFlags().getGaUxFeatureEnabled() 368 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_LANDING_PAGE_DISPLAYED 369 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__LANDING_PAGE_DISPLAYED); 370 371 getAdServicesLogger().logUIStats(uiStats); 372 } 373 374 /** Logs that the confirmation page was shown to a user. */ logConfirmationPageDisplayed()375 public static void logConfirmationPageDisplayed() { 376 UIStats uiStats = getBaseUiStats(); 377 378 uiStats.setAction( 379 FlagsFactory.getFlags().getGaUxFeatureEnabled() 380 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_NOTIFICATION_CONFIRMATION_PAGE_DISPLAYED 381 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__CONFIRMATION_PAGE_DISPLAYED); 382 383 getAdServicesLogger().logUIStats(uiStats); 384 } 385 386 /** Logs user opt-in action for PP API. */ logOptInSelected()387 public static void logOptInSelected() { 388 UIStats uiStats = getBaseUiStats(); 389 390 uiStats.setAction( 391 FlagsFactory.getFlags().getGaUxFeatureEnabled() 392 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_IN_SELECTED 393 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_IN_SELECTED); 394 395 getAdServicesLogger().logUIStats(uiStats); 396 } 397 398 /** Logs user opt-out action for PP API. */ logOptOutSelected()399 public static void logOptOutSelected() { 400 UIStats uiStats = getBaseUiStats(); 401 402 uiStats.setAction( 403 FlagsFactory.getFlags().getGaUxFeatureEnabled() 404 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__NOTIFICATION_OPT_OUT_SELECTED 405 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__OPT_OUT_SELECTED); 406 407 getAdServicesLogger().logUIStats(uiStats); 408 } 409 410 /** Logs user opt-in action given an ApiType. */ logOptInSelected(AdServicesApiType apiType)411 public static void logOptInSelected(AdServicesApiType apiType) { 412 UIStats uiStats = getBaseUiStats(apiType); 413 414 uiStats.setAction(getPerApiConsentAction(apiType, /* isOptIn */ true)); 415 416 getAdServicesLogger().logUIStats(uiStats); 417 } 418 419 /** Logs user opt-out action given an ApiType. */ logOptOutSelected(AdServicesApiType apiType)420 public static void logOptOutSelected(AdServicesApiType apiType) { 421 UIStats uiStats = getBaseUiStats(apiType); 422 423 uiStats.setAction(getPerApiConsentAction(apiType, /* isOptIn */ false)); 424 425 getAdServicesLogger().logUIStats(uiStats); 426 } 427 428 /** Logs that a user has opened the settings page. */ logSettingsPageDisplayed()429 public static void logSettingsPageDisplayed() { 430 UIStats uiStats = getBaseUiStats(); 431 432 uiStats.setAction( 433 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_SETTINGS_PAGE_DISPLAYED); 434 435 getAdServicesLogger().logUIStats(uiStats); 436 } 437 438 /** Logs that a user has clicked manage topics button. */ logManageTopicsSelected()439 public static void logManageTopicsSelected() { 440 UIStats uiStats = getBaseUiStats(); 441 442 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_TOPICS_SELECTED); 443 444 getAdServicesLogger().logUIStats(uiStats); 445 } 446 447 /** Logs that a user has clicked manage apps button. */ logManageAppsSelected()448 public static void logManageAppsSelected() { 449 UIStats uiStats = getBaseUiStats(); 450 451 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_APPS_SELECTED); 452 453 getAdServicesLogger().logUIStats(uiStats); 454 } 455 456 /** Logs that a user has clicked reset topics button. */ logResetTopicSelected()457 public static void logResetTopicSelected() { 458 UIStats uiStats = getBaseUiStats(); 459 460 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_TOPIC_SELECTED); 461 462 getAdServicesLogger().logUIStats(uiStats); 463 } 464 465 /** Logs that a user has clicked reset apps button. */ logResetAppSelected()466 public static void logResetAppSelected() { 467 UIStats uiStats = getBaseUiStats(); 468 469 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_APP_SELECTED); 470 471 getAdServicesLogger().logUIStats(uiStats); 472 } 473 474 /** Logs that a user has clicked block topic button. */ logBlockTopicSelected()475 public static void logBlockTopicSelected() { 476 UIStats uiStats = getBaseUiStats(); 477 478 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_TOPIC_SELECTED); 479 480 getAdServicesLogger().logUIStats(uiStats); 481 } 482 483 /** Logs that a user has clicked unblock topic button. */ logUnblockTopicSelected()484 public static void logUnblockTopicSelected() { 485 UIStats uiStats = getBaseUiStats(); 486 487 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_TOPIC_SELECTED); 488 489 getAdServicesLogger().logUIStats(uiStats); 490 } 491 492 /** Logs that a user has clicked block app button. */ logBlockAppSelected()493 public static void logBlockAppSelected() { 494 UIStats uiStats = getBaseUiStats(); 495 496 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__BLOCK_APP_SELECTED); 497 498 getAdServicesLogger().logUIStats(uiStats); 499 } 500 501 /** Logs that a user has clicked unblock app button. */ logUnblockAppSelected()502 public static void logUnblockAppSelected() { 503 UIStats uiStats = getBaseUiStats(); 504 505 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__UNBLOCK_APP_SELECTED); 506 507 getAdServicesLogger().logUIStats(uiStats); 508 } 509 510 /** Logs that a user has clicked manage measurement button. */ logManageMeasurementSelected()511 public static void logManageMeasurementSelected() { 512 UIStats uiStats = getBaseUiStats(); 513 514 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MANAGE_MEASUREMENT_SELECTED); 515 516 getAdServicesLogger().logUIStats(uiStats); 517 } 518 519 /** Logs that a user has clicked reset measurement button. */ logResetMeasurementSelected()520 public static void logResetMeasurementSelected() { 521 UIStats uiStats = getBaseUiStats(); 522 523 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__RESET_MEASUREMENT_SELECTED); 524 525 getAdServicesLogger().logUIStats(uiStats); 526 } 527 528 /** Logs that the user has clicked the privacy sandbox entry point in the settings page. */ logEntryPointClicked()529 public static void logEntryPointClicked() { 530 UIStats uiStats = getBaseUiStats(); 531 532 uiStats.setAction( 533 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__PRIVACY_SANDBOX_ENTRY_POINT_CLICKED); 534 535 getAdServicesLogger().logUIStats(uiStats); 536 537 LogUtil.d(PRIVACY_SANDBOX_UI_REQUEST_MESSAGE); 538 } 539 540 /** Logs that the second additional info button on the landing page was clicked. */ logLandingPageSecondAdditionalInfoClicked()541 public static void logLandingPageSecondAdditionalInfoClicked() { 542 UIStats uiStats = getBaseUiStats(); 543 544 uiStats.setAction( 545 AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__GA_UX_LANDING_PAGE_ADDITIONAL_INFO_2_CLICKED); 546 547 getAdServicesLogger().logUIStats(uiStats); 548 } 549 550 @VisibleForTesting getAdServicesLogger()551 public static AdServicesLogger getAdServicesLogger() { 552 return sLogger; 553 } 554 /** Logs that the user enter an unspecified ux flow. */ logRequestedNotificationIneligible()555 public static void logRequestedNotificationIneligible() { 556 UIStats uiStats = getBaseUiStats(); 557 558 /* Reuse beta's notification here, so that this track won't affect GA metrics */ 559 uiStats.setAction(AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__REQUESTED_NOTIFICATION); 560 uiStats.setUx(AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__UNSUPPORTED_UX); 561 sLogger.logUIStats(uiStats); 562 563 LogUtil.d(PRIVACY_SANDBOX_UI_REQUEST_MESSAGE); 564 } 565 getRegion()566 private static int getRegion() { 567 Context context = getApplicationContext(); 568 return DeviceRegionProvider.isEuDevice(context) 569 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__EU 570 : AD_SERVICES_SETTINGS_USAGE_REPORTED__REGION__ROW; 571 } 572 getDefaultConsent()573 private static int getDefaultConsent() { 574 Boolean defaultConsent = ConsentManager.getInstance().getDefaultConsent(); 575 // edge case where the user opens the settings pages before receiving consent notification. 576 if (defaultConsent == null) { 577 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED; 578 } else { 579 return defaultConsent 580 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_IN 581 : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__PP_API_DEFAULT_OPT_OUT; 582 } 583 } 584 getDefaultAdIdState()585 private static int getDefaultAdIdState() { 586 Boolean defaultAdIdState = ConsentManager.getInstance().getDefaultAdIdState(); 587 // edge case where the user opens the settings pages before receiving consent notification. 588 if (defaultAdIdState == null) { 589 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED; 590 } else { 591 return defaultAdIdState 592 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_ENABLED 593 : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__AD_ID_DISABLED; 594 } 595 } 596 getDefaultConsent(AdServicesApiType apiType)597 private static int getDefaultConsent(AdServicesApiType apiType) { 598 switch (apiType) { 599 case TOPICS: 600 Boolean topicsDefaultConsent = 601 ConsentManager.getInstance().getTopicsDefaultConsent(); 602 // edge case where the user checks topic consent before receiving consent 603 // notification. 604 if (topicsDefaultConsent == null) { 605 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED; 606 } else { 607 return topicsDefaultConsent 608 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_IN 609 : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__TOPICS_DEFAULT_OPT_OUT; 610 } 611 case FLEDGE: 612 Boolean fledgeDefaultConsent = 613 ConsentManager.getInstance().getFledgeDefaultConsent(); 614 // edge case where the user checks FLEDGE consent before receiving consent 615 // notification. 616 if (fledgeDefaultConsent == null) { 617 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED; 618 } else { 619 return fledgeDefaultConsent 620 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_IN 621 : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__FLEDGE_DEFAULT_OPT_OUT; 622 } 623 case MEASUREMENTS: 624 Boolean measurementDefaultConsent = 625 ConsentManager.getInstance().getMeasurementDefaultConsent(); 626 // edge case where the user checks measurement consent before receiving consent 627 // notification. 628 if (measurementDefaultConsent == null) { 629 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_AD_ID_STATE__STATE_UNSPECIFIED; 630 } else { 631 return measurementDefaultConsent 632 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_IN 633 : AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__MEASUREMENT_DEFAULT_OPT_OUT; 634 } 635 default: 636 return AD_SERVICES_SETTINGS_USAGE_REPORTED__DEFAULT_CONSENT__CONSENT_UNSPECIFIED; 637 } 638 } 639 getPerApiConsentAction(AdServicesApiType apiType, boolean isOptIn)640 private static int getPerApiConsentAction(AdServicesApiType apiType, boolean isOptIn) { 641 switch (apiType) { 642 case TOPICS: 643 return isOptIn 644 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_IN_SELECTED 645 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__TOPICS_OPT_OUT_SELECTED; 646 case FLEDGE: 647 return isOptIn 648 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_IN_SELECTED 649 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__FLEDGE_OPT_OUT_SELECTED; 650 case MEASUREMENTS: 651 return isOptIn 652 ? AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_IN_SELECTED 653 : AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__MEASUREMENT_OPT_OUT_SELECTED; 654 default: 655 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ACTION__ACTION_UNSPECIFIED; 656 } 657 } 658 getUx(boolean beforeNotificationShown)659 private static int getUx(boolean beforeNotificationShown) { 660 switch (UxStatesManager.getInstance().getUx()) { 661 case U18_UX: 662 return AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__UNSPECIFIED_UX; 663 case GA_UX: 664 if (UxStatesManager.getInstance().pasUxIsActive(beforeNotificationShown)) { 665 // UI views should be updated only once notification is sent (ROW). 666 return AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__GA_UX_WITH_PAS; 667 } 668 return AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__GA_UX; 669 case BETA_UX: 670 return AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__BETA_UX; 671 default: 672 return AD_SERVICES_SETTINGS_USAGE_REPORTED__UX__UNSUPPORTED_UX; 673 } 674 } 675 getEnrollmentChannel()676 private static int getEnrollmentChannel() { 677 PrivacySandboxEnrollmentChannelCollection enrollmentChannel = 678 UxStatesManager.getInstance().getEnrollmentChannel(); 679 if (enrollmentChannel == GaUxEnrollmentChannelCollection.FIRST_CONSENT_NOTIFICATION_CHANNEL 680 || enrollmentChannel 681 == BetaUxEnrollmentChannelCollection.FIRST_CONSENT_NOTIFICATION_CHANNEL 682 || enrollmentChannel 683 == U18UxEnrollmentChannelCollection.FIRST_CONSENT_NOTIFICATION_CHANNEL) { 684 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__FIRST_CONSENT_NOTIFICATION_CHANNEL; 685 } else if (enrollmentChannel 686 == GaUxEnrollmentChannelCollection.PAS_FIRST_CONSENT_NOTIFICATION_CHANNEL) { 687 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__PAS_FIRST_NOTIFICATION_CHANNEL; 688 } else if (enrollmentChannel 689 == GaUxEnrollmentChannelCollection.CONSENT_NOTIFICATION_DEBUG_CHANNEL 690 || enrollmentChannel 691 == BetaUxEnrollmentChannelCollection.CONSENT_NOTIFICATION_DEBUG_CHANNEL 692 || enrollmentChannel 693 == U18UxEnrollmentChannelCollection.CONSENT_NOTIFICATION_DEBUG_CHANNEL) { 694 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__CONSENT_NOTIFICATION_DEBUG_CHANNEL; 695 } else if (enrollmentChannel == GaUxEnrollmentChannelCollection.ALREADY_ENROLLED_CHANNEL 696 || enrollmentChannel == BetaUxEnrollmentChannelCollection.ALREADY_ENROLLED_CHANNEL 697 || enrollmentChannel == U18UxEnrollmentChannelCollection.ALREADY_ENROLLED_CHANNEL) { 698 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__ALREADY_ENROLLED_CHANNEL; 699 } else if (enrollmentChannel 700 == GaUxEnrollmentChannelCollection.RECONSENT_NOTIFICATION_CHANNEL) { 701 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__RECONSENT_NOTIFICATION_CHANNEL; 702 } else if (enrollmentChannel 703 == GaUxEnrollmentChannelCollection.PAS_RECONSENT_NOTIFICATION_CHANNEL) { 704 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__PAS_RENOTIFY_NOTIFICATION_CHANNEL; 705 } else if (enrollmentChannel == GaUxEnrollmentChannelCollection.GA_GRADUATION_CHANNEL) { 706 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__UNSPECIFIED_CHANNEL; 707 } else if (enrollmentChannel == U18UxEnrollmentChannelCollection.U18_DETENTION_CHANNEL) { 708 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__UNSPECIFIED_CHANNEL; 709 } 710 return AD_SERVICES_SETTINGS_USAGE_REPORTED__ENROLLMENT_CHANNEL__UNSUPPORTED_CHANNEL; 711 } 712 getBaseUiStats()713 private static UIStats getBaseUiStats() { 714 return new UIStats.Builder() 715 .setCode(AD_SERVICES_SETTINGS_USAGE_REPORTED) 716 .setRegion(getRegion()) 717 .setDefaultConsent(getDefaultConsent()) 718 .setDefaultAdIdState(getDefaultAdIdState()) 719 .setUx(getUx(/* beforeNotificationShown */ false)) 720 .setEnrollmentChannel(getEnrollmentChannel()) 721 .build(); 722 } 723 getBaseUiStats(AdServicesApiType apiType)724 private static UIStats getBaseUiStats(AdServicesApiType apiType) { 725 return new UIStats.Builder() 726 .setCode(AD_SERVICES_SETTINGS_USAGE_REPORTED) 727 .setRegion(getRegion()) 728 .setDefaultConsent(getDefaultConsent(apiType)) 729 .setDefaultAdIdState(getDefaultAdIdState()) 730 .setUx(getUx(/* beforeNotificationShown */ false)) 731 .setEnrollmentChannel(getEnrollmentChannel()) 732 .build(); 733 } 734 getApplicationContext()735 private static Context getApplicationContext() { 736 return ApplicationContextSingleton.get(); 737 } 738 UiStatsLogger()739 private UiStatsLogger() { 740 throw new UnsupportedOperationException(); 741 } 742 } 743