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 package com.android.healthconnect.controller.utils.logging 17 18 import com.android.healthconnect.controller.HealthFitnessUiStatsLog 19 import com.android.healthconnect.controller.HealthFitnessUiStatsLog.* 20 import dagger.hilt.EntryPoint 21 import dagger.hilt.InstallIn 22 import dagger.hilt.components.SingletonComponent 23 import javax.inject.Inject 24 import javax.inject.Singleton 25 26 /** Helper class for logging UI Impressions and Interactions. */ 27 @Singleton 28 class HealthConnectLogger @Inject constructor() { 29 30 private var pageName = PageName.UNKNOWN_PAGE 31 32 /** 33 * Sets the page ID which will be used for all impressions and interaction logging on this page. 34 */ setPageIdnull35 fun setPageId(pageName: PageName) { 36 this.pageName = pageName 37 } 38 39 /** Logs the impression of a page. */ logPageImpressionnull40 fun logPageImpression() { 41 HealthFitnessUiStatsLog.write(HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId) 42 } 43 44 /** Logs the impression of an element. */ logImpressionnull45 fun logImpression(element: ElementName) { 46 HealthFitnessUiStatsLog.write( 47 HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId, element.impressionId) 48 } 49 50 /** Logs the interaction with an element. */ logInteractionnull51 fun logInteraction(element: ElementName, action: UIAction = UIAction.ACTION_CLICK) { 52 HealthFitnessUiStatsLog.write( 53 HEALTH_CONNECT_UI_INTERACTION, pageName.interactionId, element.interactionId, action.id) 54 } 55 } 56 57 /** Enum class for UI Actions, used to specify whether we wish to log a click or a toggle. */ 58 enum class UIAction(val id: Int) { 59 ACTION_CLICK(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_CLICK), 60 ACTION_TOGGLE_ON(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_ON), 61 ACTION_TOGGLE_OFF(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_OFF), 62 ACTION_UNKNOWN(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_UNKNOWN) 63 } 64 65 /** Enum class for PageName. Each loggable fragment in the application should define a page name. */ 66 enum class PageName(val impressionId: Int, val interactionId: Int) { 67 HOME_PAGE( 68 HEALTH_CONNECT_UI_IMPRESSION__PAGE__HOME_PAGE, 69 HEALTH_CONNECT_UI_INTERACTION__PAGE__HOME_PAGE), 70 ONBOARDING_PAGE( 71 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ONBOARDING_PAGE, 72 HEALTH_CONNECT_UI_INTERACTION__PAGE__ONBOARDING_PAGE), 73 RECENT_ACCESS_PAGE( 74 HEALTH_CONNECT_UI_IMPRESSION__PAGE__RECENT_ACCESS_PAGE, 75 HEALTH_CONNECT_UI_INTERACTION__PAGE__RECENT_ACCESS_PAGE), 76 APP_PERMISSIONS_PAGE( 77 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_PAGE, 78 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_PAGE), 79 // TODO (b/270965648) not needed 80 APP_PERMISSIONS_EMPTY_STATE_PAGE( 81 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE, 82 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE), 83 HELP_AND_FEEDBACK_PAGE( 84 HEALTH_CONNECT_UI_IMPRESSION__PAGE__HELP_AND_FEEDBACK_PAGE, 85 HEALTH_CONNECT_UI_INTERACTION__PAGE__HELP_AND_FEEDBACK_PAGE), 86 CATEGORIES_PAGE( 87 HEALTH_CONNECT_UI_IMPRESSION__PAGE__CATEGORIES_PAGE, 88 HEALTH_CONNECT_UI_INTERACTION__PAGE__CATEGORIES_PAGE), 89 AUTO_DELETE_PAGE( 90 HEALTH_CONNECT_UI_IMPRESSION__PAGE__AUTO_DELETE_PAGE, 91 HEALTH_CONNECT_UI_INTERACTION__PAGE__AUTO_DELETE_PAGE), 92 PERMISSION_TYPES_PAGE( 93 HEALTH_CONNECT_UI_IMPRESSION__PAGE__PERMISSION_TYPES_PAGE, 94 HEALTH_CONNECT_UI_INTERACTION__PAGE__PERMISSION_TYPES_PAGE), 95 DATA_ACCESS_PAGE( 96 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ACCESS_PAGE, 97 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ACCESS_PAGE), 98 DATA_ENTRIES_PAGE( 99 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ENTRIES_PAGE, 100 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ENTRIES_PAGE), 101 ENTRY_DETAILS_PAGE( 102 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ENTRY_DETAILS_PAGE, 103 HEALTH_CONNECT_UI_INTERACTION__PAGE__ENTRY_DETAILS_PAGE), 104 APP_ACCESS_PAGE( 105 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_ACCESS_PAGE, 106 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_ACCESS_PAGE), 107 UNITS_PAGE( 108 HEALTH_CONNECT_UI_IMPRESSION__PAGE__UNITS_PAGE, 109 HEALTH_CONNECT_UI_INTERACTION__PAGE__UNITS_PAGE), 110 ALL_CATEGORIES_PAGE( 111 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_CATEGORIES_PAGE, 112 HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_CATEGORIES_PAGE), 113 REQUEST_PERMISSIONS_PAGE( 114 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_PERMISSIONS_PAGE, 115 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_PERMISSIONS_PAGE), 116 MANAGE_PERMISSIONS_PAGE( 117 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MANAGE_PERMISSIONS_PAGE, 118 HEALTH_CONNECT_UI_INTERACTION__PAGE__MANAGE_PERMISSIONS_PAGE), 119 SETTINGS_MANAGE_PERMISSIONS_PAGE( 120 HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE, 121 HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE), 122 MIGRATION_IN_PROGRESS_PAGE( 123 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_IN_PROGRESS_PAGE, 124 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_IN_PROGRESS_PAGE), 125 MIGRATION_APP_UPDATE_NEEDED_PAGE( 126 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE, 127 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE), 128 MIGRATION_MODULE_UPDATE_NEEDED_PAGE( 129 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE, 130 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE), 131 MIGRATION_MORE_SPACE_NEEDED_PAGE( 132 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_MORE_SPACE_NEEDED_PAGE, 133 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_MORE_SPACE_NEEDED_PAGE), 134 MIGRATION_PAUSED_PAGE( 135 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_PAUSED_PAGE, 136 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_PAUSED_PAGE), 137 UNKNOWN_PAGE( 138 HEALTH_CONNECT_UI_IMPRESSION__PAGE__PAGE_UNKNOWN, 139 HEALTH_CONNECT_UI_INTERACTION__PAGE__PAGE_UNKNOWN) 140 } 141 142 /** Common interface for loggable elements. */ 143 interface ElementName { 144 val impressionId: Int 145 val interactionId: Int 146 } 147 148 /** Loggable elements in the Home page. */ 149 enum class HomePageElement(override val impressionId: Int, override val interactionId: Int) : 150 ElementName { 151 APP_PERMISSIONS_BUTTON( 152 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_PERMISSIONS_BUTTON, 153 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_PERMISSIONS_BUTTON), 154 DATA_AND_ACCESS_BUTTON( 155 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_AND_ACCESS_BUTTON, 156 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_AND_ACCESS_BUTTON), 157 SEE_ALL_RECENT_ACCESS_BUTTON( 158 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON, 159 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON), 160 } 161 162 /** Loggable elements in the Onboarding page. */ 163 enum class OnboardingElement(override val impressionId: Int, override val interactionId: Int) : 164 ElementName { 165 ONBOARDING_COMPLETED_BUTTON( 166 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_COMPLETED_BUTTON, 167 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_COMPLETED_BUTTON), 168 ONBOARDING_GO_BACK_BUTTON( 169 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_GO_BACK_BUTTON, 170 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_GO_BACK_BUTTON), 171 } 172 173 /** Loggable elements in the Recent Access page. */ 174 enum class RecentAccessElement(override val impressionId: Int, override val interactionId: Int) : 175 ElementName { 176 RECENT_ACCESS_ENTRY_BUTTON( 177 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RECENT_ACCESS_ENTRY, 178 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RECENT_ACCESS_ENTRY), 179 MANAGE_PERMISSIONS_FAB( 180 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON, 181 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON), 182 } 183 184 /** Loggable elements in the Category and All categories pages. */ 185 enum class CategoriesElement(override val impressionId: Int, override val interactionId: Int) : 186 ElementName { 187 CATEGORY_BUTTON( 188 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CATEGORY_BUTTON, 189 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CATEGORY_BUTTON), 190 SEE_ALL_CATEGORIES_BUTTON( 191 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON, 192 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON), 193 EXPORT_DATA_BUTTON( 194 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_DATA_BUTTON, 195 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_DATA_BUTTON), 196 AUTO_DELETE_BUTTON( 197 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_BUTTON, 198 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_BUTTON), 199 DELETE_ALL_DATA_BUTTON( 200 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_ALL_DATA_BUTTON, 201 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_ALL_DATA_BUTTON), 202 } 203 204 /** Loggable elements in the App Permissions and Settings App Permission pages. */ 205 enum class AppPermissionsElement(override val impressionId: Int, override val interactionId: Int) : 206 ElementName { 207 SEARCH_BUTTON( 208 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEARCH_BUTTON, 209 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEARCH_BUTTON), 210 CONNECTED_APP_BUTTON( 211 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECTED_APP_BUTTON, 212 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECTED_APP_BUTTON), 213 NOT_CONNECTED_APP_BUTTON( 214 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NOT_CONNECTED_APP_BUTTON, 215 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NOT_CONNECTED_APP_BUTTON), 216 INACTIVE_APP_DELETE_BUTTON( 217 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__INACTIVE_APP_DELETE_BUTTON, 218 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__INACTIVE_APP_DELETE_BUTTON), 219 REMOVE_ALL_APPS_PERMISSIONS_BUTTON( 220 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON, 221 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON), 222 HELP_AND_FEEDBACK_BUTTON( 223 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HELP_AND_FEEDBACK_BUTTON, 224 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HELP_AND_FEEDBACK_BUTTON), 225 CHECK_FOR_UPDATES_BUTTON( 226 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHECK_FOR_UPDATES_BUTTON, 227 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHECK_FOR_UPDATES_BUTTON), 228 SEE_ALL_COMPATIBLE_APPS_BUTTON( 229 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON, 230 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON), 231 } 232 233 /** Loggable elements in the App Access page. */ 234 enum class AppAccessElement(override val impressionId: Int, override val interactionId: Int) : 235 ElementName { 236 ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE( 237 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE, 238 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE), 239 ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE( 240 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE, 241 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE), 242 PERMISSION_SWITCH_ACTIVE( 243 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_ACTIVE, 244 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_ACTIVE), 245 PERMISSION_SWITCH_INACTIVE( 246 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_INACTIVE, 247 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_INACTIVE), 248 DELETE_APP_DATA_BUTTON( 249 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_APP_DATA_BUTTON, 250 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_APP_DATA_BUTTON), 251 PRIVACY_POLICY_LINK( 252 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRIVACY_POLICY_LINK, 253 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRIVACY_POLICY_LINK), 254 } 255 256 /** Loggable elements in the Permission types page. */ 257 enum class PermissionTypesElement(override val impressionId: Int, override val interactionId: Int) : 258 ElementName { 259 APP_FILTER_BUTTON( 260 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_FILTER_BUTTON, 261 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_FILTER_BUTTON), 262 PERMISSION_TYPE_BUTTON( 263 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON, 264 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON), 265 SET_APP_PRIORITY_BUTTON( 266 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SET_APP_PRIORITY_BUTTON, 267 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SET_APP_PRIORITY_BUTTON), 268 DELETE_CATEGORY_DATA_BUTTON( 269 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON, 270 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON), 271 272 // App priority dialog 273 // TODO (b/270966817) 274 SET_APP_PRIORITY_DIALOG_CONTAINER( 275 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 276 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN), 277 SET_APP_PRIORITY_DIALOG_CANCEL_BUTTON( 278 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 279 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN), 280 SET_APP_PRIORITY_DIALOG_SAVE_BUTTON( 281 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 282 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN), 283 } 284 285 /** Loggable elements in the Data access page. */ 286 enum class DataAccessElement(override val impressionId: Int, override val interactionId: Int) : 287 ElementName { 288 DATA_ACCESS_APP_BUTTON( 289 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_APP_BUTTON, 290 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_APP_BUTTON), 291 DATA_ACCESS_INACTIVE_APP_BUTTON( 292 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON, 293 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON), 294 SEE_ALL_ENTRIES_BUTTON( 295 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_ENTRIES_BUTTON, 296 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_ENTRIES_BUTTON), 297 DELETE_THIS_DATA_BUTTON( 298 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_THIS_DATA_BUTTON, 299 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_THIS_DATA_BUTTON), 300 } 301 302 /** Loggable elements in the Data entries page. */ 303 enum class DataEntriesElement(override val impressionId: Int, override val interactionId: Int) : 304 ElementName { 305 AGGREGATION_DATA_VIEW( 306 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AGGREGATION_DATA_VIEW, 307 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AGGREGATION_DATA_VIEW), 308 DATA_ENTRY_VIEW( 309 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_VIEW, 310 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_VIEW), 311 DATA_ENTRY_DELETE_BUTTON( 312 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_DELETE_BUTTON, 313 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_DELETE_BUTTON), 314 EXERCISE_SESSION_ENTRY_BUTTON( 315 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON, 316 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON), 317 SLEEP_SESSION_ENTRY_BUTTON( 318 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON, 319 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON), 320 NEXT_DAY_BUTTON( 321 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NEXT_DAY_BUTTON, 322 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NEXT_DAY_BUTTON), 323 PREVIOUS_DAY_BUTTON( 324 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PREVIOUS_DAY_BUTTON, 325 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PREVIOUS_DAY_BUTTON), 326 SELECT_DATE_BUTTON( 327 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_DATE_BUTTON, 328 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_DATE_BUTTON), 329 } 330 331 /** Loggable elements in the Entry details page. */ 332 enum class EntryDetailsElement(override val impressionId: Int, override val interactionId: Int) : 333 ElementName { 334 SESSION_DETAIL_ENTRY_VIEW( 335 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW, 336 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW), 337 SESSION_DETAIL_HEADER_VIEW( 338 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_HEADER_VIEW, 339 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_HEADER_VIEW), 340 } 341 342 /** Loggable elements in the Units page. */ 343 enum class UnitsElement(override val impressionId: Int, override val interactionId: Int) : 344 ElementName { 345 // Units 346 CHANGE_UNITS_HEIGHT_BUTTON( 347 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON, 348 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON), 349 CHANGE_UNITS_WEIGHT_BUTTON( 350 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON, 351 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON), 352 CHANGE_UNITS_DISTANCE_BUTTON( 353 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON, 354 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON), 355 CHANGE_UNITS_ENERGY_BUTTON( 356 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON, 357 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON), 358 CHANGE_UNITS_TEMPERATURE_BUTTON( 359 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON, 360 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON), 361 CANCEL_BUTTON( 362 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BUTTON, 363 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BUTTON), 364 // Height 365 CENTIMETERS_BUTTON( 366 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CENTIMETERS_BUTTON, 367 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CENTIMETERS_BUTTON), 368 FEET_AND_INCHES_BUTTON( 369 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FEET_AND_INCHES_BUTTON, 370 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FEET_AND_INCHES_BUTTON), 371 // Weight 372 KILOGRAMS_BUTTON( 373 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOGRAMS_BUTTON, 374 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOGRAMS_BUTTON), 375 POUNDS_BUTTON( 376 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POUNDS_BUTTON, 377 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POUNDS_BUTTON), 378 STONES_BUTTON( 379 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__STONES_BUTTON, 380 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__STONES_BUTTON), 381 // Distance 382 KILOMETERS_BUTTON( 383 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOMETERS_BUTTON, 384 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOMETERS_BUTTON), 385 MILES_BUTTON( 386 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MILES_BUTTON, 387 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MILES_BUTTON), 388 // Energy 389 CALORIES_BUTTON( 390 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CALORIES_BUTTON, 391 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CALORIES_BUTTON), 392 KILOJOULES_BUTTON( 393 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOJOULES_BUTTON, 394 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOJOULES_BUTTON), 395 // Temperature 396 CELSIUS_BUTTON( 397 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CELSIUS_BUTTON, 398 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CELSIUS_BUTTON), 399 FAHRENHEIT_BUTTON( 400 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FAHRENHEIT_BUTTON, 401 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FAHRENHEIT_BUTTON), 402 KELVIN_BUTTON( 403 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KELVIN_BUTTON, 404 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KELVIN_BUTTON), 405 } 406 407 /** Loggable elements in the Auto delete page. */ 408 enum class AutoDeleteElement(override val impressionId: Int, override val interactionId: Int) : 409 ElementName { 410 AUTO_DELETE_3_MONTHS_BUTTON( 411 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON, 412 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON), 413 AUTO_DELETE_18_MONTHS_BUTTON( 414 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON, 415 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON), 416 AUTO_DELETE_NEVER_BUTTON( 417 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_NEVER_BUTTON, 418 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_NEVER_BUTTON), 419 420 // Auto-delete dialog 421 AUTO_DELETE_DIALOG_CONTAINER( 422 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER, 423 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER), 424 AUTO_DELETE_DIALOG_CANCEL_BUTTON( 425 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON, 426 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON), 427 AUTO_DELETE_DIALOG_CONFIRM_BUTTON( 428 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON, 429 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON), 430 AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER( 431 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, 432 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, 433 ), 434 AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON( 435 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON, 436 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON), 437 } 438 439 /** Loggable elements in the Disconnect app dialog. */ 440 enum class DisconnectAppDialogElement( 441 override val impressionId: Int, 442 override val interactionId: Int 443 ) : ElementName { 444 DISCONNECT_APP_DIALOG_CONTAINER( 445 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER, 446 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER), 447 DISCONNECT_APP_DIALOG_CANCEL_BUTTON( 448 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON, 449 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON), 450 DISCONNECT_APP_DIALOG_CONFIRM_BUTTON( 451 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON, 452 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON), 453 DISCONNECT_APP_DIALOG_DELETE_CHECKBOX( 454 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX, 455 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX), 456 } 457 458 /** Loggable elements in the Disconnect all apps dialog. */ 459 enum class DisconnectAllAppsDialogElement( 460 override val impressionId: Int, 461 override val interactionId: Int 462 ) : ElementName { 463 DISCONNECT_ALL_APPS_DIALOG_CONTAINER( 464 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER, 465 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER), 466 DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON( 467 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON, 468 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON), 469 DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON( 470 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON, 471 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON), 472 } 473 474 /** Loggable elements in the Deletion dialog time range picker dialog. */ 475 enum class DeletionDialogTimeRangeElement( 476 override val impressionId: Int, 477 override val interactionId: Int 478 ) : ElementName { 479 // Deletion time range dialog 480 DELETION_DIALOG_TIME_RANGE_CONTAINER( 481 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, 482 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER), 483 DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON( 484 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, 485 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON), 486 DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON( 487 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, 488 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON), 489 DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON( 490 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, 491 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON), 492 DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON( 493 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, 494 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON), 495 DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON( 496 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, 497 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON), 498 DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON( 499 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 500 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 501 ), 502 } 503 504 /** Loggable elements in the Deletion dialog confirmation dialog. */ 505 enum class DeletionDialogConfirmationElement( 506 override val impressionId: Int, 507 override val interactionId: Int 508 ) : ElementName { 509 DELETION_DIALOG_CONFIRMATION_CONTAINER( 510 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, 511 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER), 512 DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON( 513 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, 514 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON), 515 DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON( 516 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, 517 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON), 518 DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON( 519 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, 520 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON), 521 DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON( 522 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, 523 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON), 524 } 525 526 /** Loggable elements in the Progress dialog. */ 527 enum class ProgressDialogElement(override val impressionId: Int, override val interactionId: Int) : 528 ElementName { 529 DELETION_DIALOG_IN_PROGRESS_CONTAINER( 530 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, 531 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER), 532 } 533 534 /** Loggable elements in the Success dialog. */ 535 enum class SuccessDialogElement(override val impressionId: Int, override val interactionId: Int) : 536 ElementName { 537 DELETION_DIALOG_SUCCESS_CONTAINER( 538 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, 539 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER), 540 DELETION_DIALOG_SUCCESS_DONE_BUTTON( 541 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, 542 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON), 543 } 544 545 /** Loggable elements in the Failed dialog. */ 546 enum class FailedDialogElement(override val impressionId: Int, override val interactionId: Int) : 547 ElementName { 548 DELETION_DIALOG_ERROR_CONTAINER( 549 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, 550 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER), 551 DELETION_DIALOG_ERROR_CLOSE_BUTTON( 552 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, 553 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON), 554 DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON( 555 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, 556 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON), 557 } 558 559 /** Loggable elements in the Request and Manage permissions pages. */ 560 enum class PermissionsElement(override val impressionId: Int, override val interactionId: Int) : 561 ElementName { 562 ALLOW_PERMISSIONS_BUTTON( 563 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, 564 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_PERMISSIONS_BUTTON), 565 CANCEL_PERMISSIONS_BUTTON( 566 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, 567 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_PERMISSIONS_BUTTON), 568 ALLOW_ALL_SWITCH( 569 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_SWITCH, 570 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_SWITCH), 571 PERMISSION_SWITCH( 572 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH, 573 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH), 574 APP_RATIONALE_LINK( 575 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_RATIONALE_LINK, 576 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_RATIONALE_LINK), 577 } 578 579 /** Loggable elements in the toolbar. */ 580 enum class ToolbarElement(override val impressionId: Int, override val interactionId: Int) : 581 ElementName { 582 // Represents main menu 583 TOOLBAR_SETTINGS_BUTTON( 584 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, 585 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_SETTINGS_BUTTON), 586 TOOLBAR_HELP_BUTTON( 587 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_HELP_BUTTON, 588 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_HELP_BUTTON), 589 // TODO update 590 TOOLBAR_UNITS_BUTTON( 591 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 592 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN), 593 // TODO not sure if this will be needed 594 TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON( 595 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, 596 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON), 597 } 598 599 /** Loggable elements in the Entry details page. */ 600 enum class MigrationElement(override val impressionId: Int, override val interactionId: Int) : 601 ElementName { 602 MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON( 603 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, 604 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON), 605 MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON( 606 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, 607 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON), 608 MIGRATION_MORE_SPACE_NEEDED_FREE_UP_SPACE_BUTTON( 609 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_MORE_SPACE_NEEDED_FREE_UP_SPACE_BUTTON, 610 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_MORE_SPACE_NEEDED_FREE_UP_SPACE_BUTTON), 611 MIGRATION_PAUSED_CONTINUE_BUTTON( 612 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_MORE_SPACE_NEEDED_TRY_AGAIN_BUTTON, 613 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_MORE_SPACE_NEEDED_TRY_AGAIN_BUTTON), 614 MIGRATION_DONE_DIALOG_CONTAINER( 615 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, 616 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER), 617 MIGRATION_DONE_DIALOG_BUTTON( 618 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, 619 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON), 620 MIGRATION_IN_PROGRESS_DIALOG_CONTAINER( 621 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, 622 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER), 623 MIGRATION_IN_PROGRESS_DIALOG_BUTTON( 624 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, 625 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON), 626 MIGRATION_PENDING_DIALOG_CONTAINER( 627 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, 628 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER), 629 MIGRATION_PENDING_DIALOG_CANCEL_BUTTON( 630 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, 631 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON), 632 MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON( 633 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, 634 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON), 635 MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER( 636 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, 637 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER), 638 MIGRATION_NOT_COMPLETE_DIALOG_BUTTON( 639 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, 640 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON), 641 MIGRATION_RESUME_BANNER( 642 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER, 643 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER), 644 MIGRATION_RESUME_BANNER_BUTTON( 645 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, 646 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON), 647 MIGRATION_APP_UPDATE_BANNER( 648 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, 649 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BANNER), 650 MIGRATION_APP_UPDATE_BUTTON( 651 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, 652 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON) 653 } 654 655 /** Loggable elements belonging to the error page, and the unknown element. */ 656 enum class ErrorPageElement(override val impressionId: Int, override val interactionId: Int) : 657 ElementName { 658 UNKNOWN_ELEMENT( 659 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 660 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN) 661 } 662 663 @EntryPoint 664 @InstallIn(SingletonComponent::class) 665 interface HealthConnectLoggerEntryPoint { loggernull666 fun logger(): HealthConnectLogger 667 } 668