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 androidx.annotation.VisibleForTesting 19 import com.android.healthconnect.controller.HealthFitnessUiStatsLog.* 20 import com.android.healthfitness.flags.Flags.personalHealthRecordUiTelemetry 21 import dagger.hilt.EntryPoint 22 import dagger.hilt.InstallIn 23 import dagger.hilt.components.SingletonComponent 24 import javax.inject.Inject 25 import javax.inject.Singleton 26 27 /** Helper class for logging UI Impressions and Interactions. */ 28 @Singleton 29 class HealthConnectLogger @Inject constructor() { 30 31 companion object { 32 private val phrElements = 33 setOf( 34 OnboardingElement.ONBOARDING_MESSAGE_WITH_PHR, 35 HomePageElement.BROWSE_HEALTH_RECORDS_BUTTON, 36 CombinedAppAccessElement.FITNESS_PERMISSIONS_BUTTON, 37 CombinedAppAccessElement.MEDICAL_PERMISSIONS_BUTTON, 38 CombinedAppAccessElement.REMOVE_ALL_PERMISSIONS_BUTTON, 39 HomePageElement.LOCK_SCREEN_BANNER, 40 HomePageElement.LOCK_SCREEN_BANNER_BUTTON, 41 HomePageElement.LOCK_SCREEN_BANNER_DISMISS_BUTTON, 42 RawFhirPageElement.RAW_FHIR_RESOURCE, 43 MedicalWritePermissionPageElement.ALLOW_WRITE_HEALTH_RECORDS_BUTTON, 44 MedicalWritePermissionPageElement.CANCEL_WRITE_HEALTH_RECORDS_BUTTON, 45 ) 46 } 47 48 private var pageName = PageName.UNKNOWN_PAGE 49 50 /** 51 * Sets the page ID which will be used for all impressions and interaction logging on this page. 52 */ setPageIdnull53 fun setPageId(pageName: PageName) { 54 if (isGuardedByPhrFlag(pageName)) { 55 return 56 } 57 this.pageName = pageName 58 } 59 getPageIdnull60 @VisibleForTesting fun getPageId(): PageName = pageName 61 62 /** Logs the impression of a page. */ 63 fun logPageImpression() { 64 write(HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId) 65 } 66 67 /** Logs the impression of an element. */ logImpressionnull68 fun logImpression(element: ElementName) { 69 if (isGuardedByPhrFlag(element)) { 70 return 71 } 72 write(HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId, element.impressionId) 73 } 74 75 /** Logs the interaction with an element. */ logInteractionnull76 fun logInteraction(element: ElementName, action: UIAction = UIAction.ACTION_CLICK) { 77 if (isGuardedByPhrFlag(element)) { 78 return 79 } 80 write( 81 HEALTH_CONNECT_UI_INTERACTION, 82 pageName.interactionId, 83 element.interactionId, 84 action.id, 85 ) 86 } 87 isGuardedByPhrFlagnull88 private fun isGuardedByPhrFlag(pageName: PageName) = 89 pageName.isPhrPage() && !personalHealthRecordUiTelemetry() 90 91 private fun isGuardedByPhrFlag(elementName: ElementName): Boolean { 92 return phrElements.contains(elementName) && !personalHealthRecordUiTelemetry() 93 } 94 } 95 96 /** Enum class for UI Actions, used to specify whether we wish to log a click or a toggle. */ 97 enum class UIAction(val id: Int) { 98 ACTION_CLICK(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_CLICK), 99 ACTION_TOGGLE_ON(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_ON), 100 ACTION_TOGGLE_OFF(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_OFF), 101 ACTION_UNKNOWN(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_UNKNOWN), 102 } 103 104 /** Enum class for PageName. Each loggable fragment in the application should define a page name. */ 105 enum class PageName(val impressionId: Int, val interactionId: Int) { 106 HOME_PAGE( 107 HEALTH_CONNECT_UI_IMPRESSION__PAGE__HOME_PAGE, 108 HEALTH_CONNECT_UI_INTERACTION__PAGE__HOME_PAGE, 109 ), 110 ONBOARDING_PAGE( 111 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ONBOARDING_PAGE, 112 HEALTH_CONNECT_UI_INTERACTION__PAGE__ONBOARDING_PAGE, 113 ), 114 RECENT_ACCESS_PAGE( 115 HEALTH_CONNECT_UI_IMPRESSION__PAGE__RECENT_ACCESS_PAGE, 116 HEALTH_CONNECT_UI_INTERACTION__PAGE__RECENT_ACCESS_PAGE, 117 ), 118 APP_PERMISSIONS_PAGE( 119 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_PAGE, 120 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_PAGE, 121 ), 122 // TODO (b/270965648) not needed 123 APP_PERMISSIONS_EMPTY_STATE_PAGE( 124 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE, 125 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE, 126 ), 127 HELP_AND_FEEDBACK_PAGE( 128 HEALTH_CONNECT_UI_IMPRESSION__PAGE__HELP_AND_FEEDBACK_PAGE, 129 HEALTH_CONNECT_UI_INTERACTION__PAGE__HELP_AND_FEEDBACK_PAGE, 130 ), 131 CATEGORIES_PAGE( 132 HEALTH_CONNECT_UI_IMPRESSION__PAGE__CATEGORIES_PAGE, 133 HEALTH_CONNECT_UI_INTERACTION__PAGE__CATEGORIES_PAGE, 134 ), 135 AUTO_DELETE_PAGE( 136 HEALTH_CONNECT_UI_IMPRESSION__PAGE__AUTO_DELETE_PAGE, 137 HEALTH_CONNECT_UI_INTERACTION__PAGE__AUTO_DELETE_PAGE, 138 ), 139 PERMISSION_TYPES_PAGE( 140 HEALTH_CONNECT_UI_IMPRESSION__PAGE__PERMISSION_TYPES_PAGE, 141 HEALTH_CONNECT_UI_INTERACTION__PAGE__PERMISSION_TYPES_PAGE, 142 ), 143 DATA_ACCESS_PAGE( 144 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ACCESS_PAGE, 145 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ACCESS_PAGE, 146 ), 147 DATA_ENTRIES_PAGE( 148 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ENTRIES_PAGE, 149 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ENTRIES_PAGE, 150 ), 151 ENTRY_DETAILS_PAGE( 152 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ENTRY_DETAILS_PAGE, 153 HEALTH_CONNECT_UI_INTERACTION__PAGE__ENTRY_DETAILS_PAGE, 154 ), 155 APP_ACCESS_PAGE( 156 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_ACCESS_PAGE, 157 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_ACCESS_PAGE, 158 ), 159 UNITS_PAGE( 160 HEALTH_CONNECT_UI_IMPRESSION__PAGE__UNITS_PAGE, 161 HEALTH_CONNECT_UI_INTERACTION__PAGE__UNITS_PAGE, 162 ), 163 ALL_CATEGORIES_PAGE( 164 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_CATEGORIES_PAGE, 165 HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_CATEGORIES_PAGE, 166 ), 167 REQUEST_PERMISSIONS_PAGE( 168 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_PERMISSIONS_PAGE, 169 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_PERMISSIONS_PAGE, 170 ), 171 REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE( 172 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE, 173 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE, 174 ), 175 REQUEST_BACKGROUND_READ_PERMISSION_PAGE( 176 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_BACKGROUND_READ_PERMISSION_PAGE, 177 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_BACKGROUND_READ_PERMISSION_PAGE, 178 ), 179 REQUEST_HISTORY_READ_PERMISSION_PAGE( 180 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_HISTORY_READ_PERMISSION_PAGE, 181 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_HISTORY_READ_PERMISSION_PAGE, 182 ), 183 MANAGE_PERMISSIONS_PAGE( 184 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MANAGE_PERMISSIONS_PAGE, 185 HEALTH_CONNECT_UI_INTERACTION__PAGE__MANAGE_PERMISSIONS_PAGE, 186 ), 187 SETTINGS_MANAGE_PERMISSIONS_PAGE( 188 HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE, 189 HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE, 190 ), 191 MIGRATION_IN_PROGRESS_PAGE( 192 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_IN_PROGRESS_PAGE, 193 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_IN_PROGRESS_PAGE, 194 ), 195 MIGRATION_APP_UPDATE_NEEDED_PAGE( 196 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE, 197 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE, 198 ), 199 MIGRATION_MODULE_UPDATE_NEEDED_PAGE( 200 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE, 201 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE, 202 ), 203 MIGRATION_PAUSED_PAGE( 204 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_PAUSED_PAGE, 205 HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_PAUSED_PAGE, 206 ), 207 MANAGE_DATA_PAGE( 208 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MANAGE_DATA_PAGE, 209 HEALTH_CONNECT_UI_INTERACTION__PAGE__MANAGE_DATA_PAGE, 210 ), 211 DATA_SOURCES_PAGE( 212 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_SOURCES_PAGE, 213 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_SOURCES_PAGE, 214 ), 215 ADD_AN_APP_PAGE( 216 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ADD_AN_APP_PAGE, 217 HEALTH_CONNECT_UI_INTERACTION__PAGE__ADD_AN_APP_PAGE, 218 ), 219 ADDITIONAL_ACCESS_PAGE( 220 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ADDITIONAL_ACCESS_PAGE, 221 HEALTH_CONNECT_UI_INTERACTION__PAGE__ADDITIONAL_ACCESS_PAGE, 222 ), 223 DATA_RESTORE_IN_PROGRESS_PAGE( 224 HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_RESTORE_IN_PROGRESS_PAGE, 225 HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_RESTORE_IN_PROGRESS_PAGE, 226 ), 227 SEARCH_APPS_PAGE( 228 HEALTH_CONNECT_UI_IMPRESSION__PAGE__SEARCH_APPS_PAGE, 229 HEALTH_CONNECT_UI_INTERACTION__PAGE__SEARCH_APPS_PAGE, 230 ), 231 BACKUP_AND_RESTORE_PAGE( 232 HEALTH_CONNECT_UI_IMPRESSION__PAGE__BACKUP_AND_RESTORE_PAGE, 233 HEALTH_CONNECT_UI_INTERACTION__PAGE__BACKUP_AND_RESTORE_PAGE, 234 ), 235 EXPORT_FREQUENCY_PAGE( 236 HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_FREQUENCY_PAGE, 237 HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_FREQUENCY_PAGE, 238 ), 239 EXPORT_DESTINATION_PAGE( 240 HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_DESTINATION_PAGE, 241 HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_DESTINATION_PAGE, 242 ), 243 IMPORT_SOURCE_LOCATION_PAGE( 244 HEALTH_CONNECT_UI_IMPRESSION__PAGE__IMPORT_SOURCE_LOCATION_PAGE, 245 HEALTH_CONNECT_UI_INTERACTION__PAGE__IMPORT_SOURCE_LOCATION_PAGE, 246 ), 247 EXPORT_SETTINGS_PAGE( 248 HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_SETTINGS_PAGE, 249 HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_SETTINGS_PAGE, 250 ), 251 ALL_DATA_PAGE( 252 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_DATA_PAGE, 253 HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_DATA_PAGE, 254 ), 255 TAB_ENTRIES_PAGE( 256 HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_ENTRIES_PAGE, 257 HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_ENTRIES_PAGE, 258 ), 259 TAB_ACCESS_PAGE( 260 HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_ACCESS_PAGE, 261 HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_ACCESS_PAGE, 262 ), 263 APP_DATA_PAGE( 264 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_DATA_PAGE, 265 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_DATA_PAGE, 266 ), 267 APP_ENTRIES_PAGE( 268 HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_ENTRIES_PAGE, 269 HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_ENTRIES_PAGE, 270 ), 271 ALL_MEDICAL_DATA_PAGE( 272 HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_MEDICAL_DATA_PAGE, 273 HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_MEDICAL_DATA_PAGE, 274 ), 275 TAB_MEDICAL_ENTRIES_PAGE( 276 HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_MEDICAL_ENTRIES_PAGE, 277 HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_MEDICAL_ENTRIES_PAGE, 278 ), 279 TAB_MEDICAL_ACCESS_PAGE( 280 HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_MEDICAL_ACCESS_PAGE, 281 HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_MEDICAL_ACCESS_PAGE, 282 ), 283 RAW_FHIR_PAGE( 284 HEALTH_CONNECT_UI_IMPRESSION__PAGE__RAW_FHIR_PAGE, 285 HEALTH_CONNECT_UI_INTERACTION__PAGE__RAW_FHIR_PAGE, 286 ), 287 REQUEST_MEDICAL_PERMISSIONS_PAGE( 288 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_MEDICAL_PERMISSIONS_PAGE, 289 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_MEDICAL_PERMISSIONS_PAGE, 290 ), 291 COMBINED_APP_ACCESS_PAGE( 292 HEALTH_CONNECT_UI_IMPRESSION__PAGE__COMBINED_APP_ACCESS_PAGE, 293 HEALTH_CONNECT_UI_INTERACTION__PAGE__COMBINED_APP_ACCESS_PAGE, 294 ), 295 MEDICAL_APP_ACCESS_PAGE( 296 HEALTH_CONNECT_UI_IMPRESSION__PAGE__MEDICAL_APP_ACCESS_PAGE, 297 HEALTH_CONNECT_UI_INTERACTION__PAGE__MEDICAL_APP_ACCESS_PAGE, 298 ), 299 SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE( 300 HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE, 301 HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE, 302 ), 303 SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE( 304 HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE, 305 HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE, 306 ), 307 REQUEST_WRITE_MEDICAL_PERMISSION_PAGE( 308 HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_WRITE_MEDICAL_PERMISSION_PAGE, 309 HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_WRITE_MEDICAL_PERMISSION_PAGE, 310 ), 311 UNKNOWN_PAGE( 312 HEALTH_CONNECT_UI_IMPRESSION__PAGE__PAGE_UNKNOWN, 313 HEALTH_CONNECT_UI_INTERACTION__PAGE__PAGE_UNKNOWN, 314 ); 315 isPhrPagenull316 fun isPhrPage(): Boolean { 317 val phrPages = 318 setOf( 319 ALL_MEDICAL_DATA_PAGE, 320 TAB_MEDICAL_ENTRIES_PAGE, 321 TAB_MEDICAL_ACCESS_PAGE, 322 RAW_FHIR_PAGE, 323 REQUEST_MEDICAL_PERMISSIONS_PAGE, 324 COMBINED_APP_ACCESS_PAGE, 325 MEDICAL_APP_ACCESS_PAGE, 326 SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE, 327 SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE, 328 REQUEST_WRITE_MEDICAL_PERMISSION_PAGE, 329 ) 330 return phrPages.contains(this) 331 } 332 } 333 334 /** Common interface for loggable elements. */ 335 interface ElementName { 336 val impressionId: Int 337 val interactionId: Int 338 } 339 340 /** Loggable elements in the Home page. */ 341 enum class HomePageElement(override val impressionId: Int, override val interactionId: Int) : 342 ElementName { 343 APP_PERMISSIONS_BUTTON( 344 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_PERMISSIONS_BUTTON, 345 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_PERMISSIONS_BUTTON, 346 ), 347 DATA_AND_ACCESS_BUTTON( 348 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_AND_ACCESS_BUTTON, 349 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_AND_ACCESS_BUTTON, 350 ), 351 SEE_ALL_RECENT_ACCESS_BUTTON( 352 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON, 353 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON, 354 ), 355 MANAGE_DATA_BUTTON( 356 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MANAGE_DATA_BUTTON, 357 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MANAGE_DATA_BUTTON, 358 ), 359 EXPORT_ERROR_BANNER( 360 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_ERROR_BANNER, 361 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_ERROR_BANNER, 362 ), 363 EXPORT_ERROR_BANNER_BUTTON( 364 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_ERROR_BANNER_BUTTON, 365 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_ERROR_BANNER_BUTTON, 366 ), 367 BROWSE_DATA_BUTTON( 368 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BROWSE_DATA_BUTTON, 369 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BROWSE_DATA_BUTTON, 370 ), 371 BROWSE_HEALTH_RECORDS_BUTTON( 372 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BROWSE_HEALTH_RECORDS_BUTTON, 373 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BROWSE_HEALTH_RECORDS_BUTTON, 374 ), 375 LOCK_SCREEN_BANNER( 376 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER, 377 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER, 378 ), 379 LOCK_SCREEN_BANNER_BUTTON( 380 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER_BUTTON, 381 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER_BUTTON, 382 ), 383 LOCK_SCREEN_BANNER_DISMISS_BUTTON( 384 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER_DISMISS_BUTTON, 385 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER_DISMISS_BUTTON, 386 ), 387 } 388 389 /** Loggable elements in the Onboarding page. */ 390 enum class OnboardingElement(override val impressionId: Int, override val interactionId: Int) : 391 ElementName { 392 ONBOARDING_COMPLETED_BUTTON( 393 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_COMPLETED_BUTTON, 394 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_COMPLETED_BUTTON, 395 ), 396 ONBOARDING_GO_BACK_BUTTON( 397 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_GO_BACK_BUTTON, 398 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_GO_BACK_BUTTON, 399 ), 400 ONBOARDING_MESSAGE_WITH_PHR( 401 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_MESSAGE_WITH_PHR, 402 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_MESSAGE_WITH_PHR, 403 ), 404 } 405 406 /** Loggable elements in the Recent Access page. */ 407 enum class RecentAccessElement(override val impressionId: Int, override val interactionId: Int) : 408 ElementName { 409 RECENT_ACCESS_ENTRY_BUTTON( 410 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RECENT_ACCESS_ENTRY, 411 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RECENT_ACCESS_ENTRY, 412 ), 413 MANAGE_PERMISSIONS_FAB( 414 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON, 415 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON, 416 ), 417 } 418 419 /** Loggable elements in the Manage Data page. */ 420 enum class ManageDataElement(override val impressionId: Int, override val interactionId: Int) : 421 ElementName { 422 AUTO_DELETE_BUTTON( 423 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_BUTTON, 424 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_BUTTON, 425 ), 426 BACKUP_BUTTON( 427 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKUP_DATA_BUTTON, 428 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKUP_DATA_BUTTON, 429 ), 430 DATA_SOURCES_AND_PRIORITY_BUTTON( 431 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, 432 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, 433 ), 434 SET_UNITS_BUTTON( 435 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SET_UNITS_BUTTON, 436 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SET_UNITS_BUTTON, 437 ), 438 BACKUP_AND_RESTORE_BUTTON( 439 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKUP_AND_RESTORE_BUTTON, 440 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKUP_AND_RESTORE_BUTTON, 441 ), 442 } 443 444 /** Loggable elements in the Category and All categories pages. */ 445 enum class CategoriesElement(override val impressionId: Int, override val interactionId: Int) : 446 ElementName { 447 CATEGORY_BUTTON( 448 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CATEGORY_BUTTON, 449 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CATEGORY_BUTTON, 450 ), 451 SEE_ALL_CATEGORIES_BUTTON( 452 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON, 453 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON, 454 ), 455 DELETE_ALL_DATA_BUTTON( 456 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_ALL_DATA_BUTTON, 457 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_ALL_DATA_BUTTON, 458 ), 459 } 460 461 /** Loggable elements in the App Permissions and Settings App Permission pages. */ 462 enum class AppPermissionsElement(override val impressionId: Int, override val interactionId: Int) : 463 ElementName { 464 SEARCH_BUTTON( 465 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEARCH_BUTTON, 466 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEARCH_BUTTON, 467 ), 468 CONNECTED_APP_BUTTON( 469 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECTED_APP_BUTTON, 470 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECTED_APP_BUTTON, 471 ), 472 NOT_CONNECTED_APP_BUTTON( 473 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NOT_CONNECTED_APP_BUTTON, 474 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NOT_CONNECTED_APP_BUTTON, 475 ), 476 INACTIVE_APP_BUTTON( 477 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__INACTIVE_APP_BUTTON, 478 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__INACTIVE_APP_BUTTON, 479 ), 480 INACTIVE_APP_DELETE_BUTTON( 481 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__INACTIVE_APP_DELETE_BUTTON, 482 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__INACTIVE_APP_DELETE_BUTTON, 483 ), 484 NEEDS_UPDATE_APP_BUTTON( 485 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_APP_BUTTON, 486 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_APP_BUTTON, 487 ), 488 REMOVE_ALL_APPS_PERMISSIONS_BUTTON( 489 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON, 490 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON, 491 ), 492 HELP_AND_FEEDBACK_BUTTON( 493 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HELP_AND_FEEDBACK_BUTTON, 494 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HELP_AND_FEEDBACK_BUTTON, 495 ), 496 CHECK_FOR_UPDATES_BUTTON( 497 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHECK_FOR_UPDATES_BUTTON, 498 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHECK_FOR_UPDATES_BUTTON, 499 ), 500 SEE_ALL_COMPATIBLE_APPS_BUTTON( 501 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON, 502 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON, 503 ), 504 SEND_FEEDBACK_BUTTON( 505 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEND_FEEDBACK_BUTTON, 506 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEND_FEEDBACK_BUTTON, 507 ), 508 } 509 510 /** Loggable elements in the App Access page. */ 511 enum class AppAccessElement(override val impressionId: Int, override val interactionId: Int) : 512 ElementName { 513 ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE( 514 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE, 515 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE, 516 ), 517 ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE( 518 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE, 519 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE, 520 ), 521 PERMISSION_SWITCH_ACTIVE( 522 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_ACTIVE, 523 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_ACTIVE, 524 ), 525 PERMISSION_SWITCH_INACTIVE( 526 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_INACTIVE, 527 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_INACTIVE, 528 ), 529 DELETE_APP_DATA_BUTTON( 530 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_APP_DATA_BUTTON, 531 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_APP_DATA_BUTTON, 532 ), 533 PRIVACY_POLICY_LINK( 534 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRIVACY_POLICY_LINK, 535 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRIVACY_POLICY_LINK, 536 ), 537 ADDITIONAL_ACCESS_BUTTON( 538 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ADDITIONAL_ACCESS_BUTTON, 539 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ADDITIONAL_ACCESS_BUTTON, 540 ), 541 SEE_APP_DATA_BUTTON( 542 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_APP_DATA_BUTTON, 543 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_APP_DATA_BUTTON, 544 ), 545 } 546 547 /** Loggable elements in the Permission types page. */ 548 enum class PermissionTypesElement(override val impressionId: Int, override val interactionId: Int) : 549 ElementName { 550 APP_FILTER_BUTTON( 551 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_FILTER_BUTTON, 552 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_FILTER_BUTTON, 553 ), 554 PERMISSION_TYPE_BUTTON( 555 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON, 556 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON, 557 ), 558 DELETE_CATEGORY_DATA_BUTTON( 559 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON, 560 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON, 561 ), 562 DATA_SOURCES_AND_PRIORITY_BUTTON( 563 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, 564 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, 565 ), 566 } 567 568 /** Loggable elements in the Data access page. */ 569 enum class DataAccessElement(override val impressionId: Int, override val interactionId: Int) : 570 ElementName { 571 DATA_ACCESS_APP_BUTTON( 572 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_APP_BUTTON, 573 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_APP_BUTTON, 574 ), 575 DATA_ACCESS_INACTIVE_APP_BUTTON( 576 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON, 577 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON, 578 ), 579 SEE_ALL_ENTRIES_BUTTON( 580 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_ENTRIES_BUTTON, 581 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_ENTRIES_BUTTON, 582 ), 583 DELETE_THIS_DATA_BUTTON( 584 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_THIS_DATA_BUTTON, 585 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_THIS_DATA_BUTTON, 586 ), 587 } 588 589 /** Loggable elements in the Data entries page. */ 590 enum class DataEntriesElement(override val impressionId: Int, override val interactionId: Int) : 591 ElementName { 592 AGGREGATION_DATA_VIEW( 593 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AGGREGATION_DATA_VIEW, 594 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AGGREGATION_DATA_VIEW, 595 ), 596 DATA_ENTRY_VIEW( 597 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_VIEW, 598 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_VIEW, 599 ), 600 DATA_ENTRY_DELETE_BUTTON( 601 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_DELETE_BUTTON, 602 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_DELETE_BUTTON, 603 ), 604 EXERCISE_SESSION_ENTRY_BUTTON( 605 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON, 606 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON, 607 ), 608 EXERCISE_SESSION_MAP_VIEW( 609 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_SESSION_MAP_VIEW, 610 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_SESSION_MAP_VIEW, 611 ), 612 SLEEP_SESSION_ENTRY_BUTTON( 613 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON, 614 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON, 615 ), 616 NEXT_DAY_BUTTON( 617 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NEXT_DAY_BUTTON, 618 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NEXT_DAY_BUTTON, 619 ), 620 PREVIOUS_DAY_BUTTON( 621 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PREVIOUS_DAY_BUTTON, 622 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PREVIOUS_DAY_BUTTON, 623 ), 624 SELECT_DATE_BUTTON( 625 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_DATE_BUTTON, 626 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_DATE_BUTTON, 627 ), 628 PLANNED_EXERCISE_SESSION_ENTRY_BUTTON( 629 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_SESSION_ENTRY_BUTTON, 630 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_SESSION_ENTRY_BUTTON, 631 ), 632 } 633 634 /** Loggable elements in the Entry details page. */ 635 enum class EntryDetailsElement(override val impressionId: Int, override val interactionId: Int) : 636 ElementName { 637 SESSION_DETAIL_ENTRY_VIEW( 638 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW, 639 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW, 640 ), 641 SESSION_DETAIL_HEADER_VIEW( 642 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_HEADER_VIEW, 643 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_HEADER_VIEW, 644 ), 645 REVERSE_SESSION_DETAIL_ENTRY_VIEW( 646 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REVERSE_SESSION_DETAIL_ENTRY_VIEW, 647 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REVERSE_SESSION_DETAIL_ENTRY_VIEW, 648 ), 649 FORMATTED_SECTION_TITLE_VIEW( 650 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FORMATTED_SECTION_TITLE_VIEW, 651 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FORMATTED_SECTION_TITLE_VIEW, 652 ), 653 FORMATTED_SECTION_CONTENT_VIEW( 654 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FORMATTED_SECTION_CONTENT_VIEW, 655 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FORMATTED_SECTION_CONTENT_VIEW, 656 ), 657 PLANNED_EXERCISE_BLOCK_ENTRY_VIEW( 658 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_BLOCK_ENTRY_VIEW, 659 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_BLOCK_ENTRY_VIEW, 660 ), 661 PLANNED_EXERCISE_STEP_ENTRY_VIEW( 662 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_STEP_ENTRY_VIEW, 663 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_STEP_ENTRY_VIEW, 664 ), 665 EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW( 666 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW, 667 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW, 668 ), 669 } 670 671 /** Loggable elements in the Units page. */ 672 enum class UnitsElement(override val impressionId: Int, override val interactionId: Int) : 673 ElementName { 674 // Units 675 CHANGE_UNITS_HEIGHT_BUTTON( 676 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON, 677 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON, 678 ), 679 CHANGE_UNITS_WEIGHT_BUTTON( 680 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON, 681 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON, 682 ), 683 CHANGE_UNITS_DISTANCE_BUTTON( 684 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON, 685 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON, 686 ), 687 CHANGE_UNITS_ENERGY_BUTTON( 688 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON, 689 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON, 690 ), 691 CHANGE_UNITS_TEMPERATURE_BUTTON( 692 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON, 693 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON, 694 ), 695 CANCEL_BUTTON( 696 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BUTTON, 697 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BUTTON, 698 ), 699 // Height 700 CENTIMETERS_BUTTON( 701 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CENTIMETERS_BUTTON, 702 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CENTIMETERS_BUTTON, 703 ), 704 FEET_AND_INCHES_BUTTON( 705 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FEET_AND_INCHES_BUTTON, 706 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FEET_AND_INCHES_BUTTON, 707 ), 708 // Weight 709 KILOGRAMS_BUTTON( 710 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOGRAMS_BUTTON, 711 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOGRAMS_BUTTON, 712 ), 713 POUNDS_BUTTON( 714 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POUNDS_BUTTON, 715 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POUNDS_BUTTON, 716 ), 717 STONES_BUTTON( 718 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__STONES_BUTTON, 719 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__STONES_BUTTON, 720 ), 721 // Distance 722 KILOMETERS_BUTTON( 723 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOMETERS_BUTTON, 724 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOMETERS_BUTTON, 725 ), 726 MILES_BUTTON( 727 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MILES_BUTTON, 728 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MILES_BUTTON, 729 ), 730 // Energy 731 CALORIES_BUTTON( 732 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CALORIES_BUTTON, 733 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CALORIES_BUTTON, 734 ), 735 KILOJOULES_BUTTON( 736 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOJOULES_BUTTON, 737 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOJOULES_BUTTON, 738 ), 739 // Temperature 740 CELSIUS_BUTTON( 741 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CELSIUS_BUTTON, 742 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CELSIUS_BUTTON, 743 ), 744 FAHRENHEIT_BUTTON( 745 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FAHRENHEIT_BUTTON, 746 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FAHRENHEIT_BUTTON, 747 ), 748 KELVIN_BUTTON( 749 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KELVIN_BUTTON, 750 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KELVIN_BUTTON, 751 ), 752 } 753 754 /** Loggable elements in the Auto delete page. */ 755 enum class AutoDeleteElement(override val impressionId: Int, override val interactionId: Int) : 756 ElementName { 757 AUTO_DELETE_3_MONTHS_BUTTON( 758 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON, 759 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON, 760 ), 761 AUTO_DELETE_18_MONTHS_BUTTON( 762 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON, 763 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON, 764 ), 765 AUTO_DELETE_NEVER_BUTTON( 766 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_NEVER_BUTTON, 767 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_NEVER_BUTTON, 768 ), 769 770 // Auto-delete dialog 771 AUTO_DELETE_DIALOG_CONTAINER( 772 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER, 773 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER, 774 ), 775 AUTO_DELETE_DIALOG_CANCEL_BUTTON( 776 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON, 777 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON, 778 ), 779 AUTO_DELETE_DIALOG_CONFIRM_BUTTON( 780 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON, 781 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON, 782 ), 783 AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER( 784 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, 785 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, 786 ), 787 AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON( 788 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON, 789 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON, 790 ), 791 } 792 793 /** Loggable elements in the Disconnect app dialog. */ 794 enum class DisconnectAppDialogElement( 795 override val impressionId: Int, 796 override val interactionId: Int, 797 ) : ElementName { 798 DISCONNECT_APP_DIALOG_CONTAINER( 799 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER, 800 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER, 801 ), 802 DISCONNECT_APP_DIALOG_CANCEL_BUTTON( 803 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON, 804 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON, 805 ), 806 DISCONNECT_APP_DIALOG_CONFIRM_BUTTON( 807 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON, 808 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON, 809 ), 810 DISCONNECT_APP_DIALOG_DELETE_CHECKBOX( 811 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX, 812 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX, 813 ), 814 } 815 816 /** Loggable elements in the Disconnect all apps dialog. */ 817 enum class DisconnectAllAppsDialogElement( 818 override val impressionId: Int, 819 override val interactionId: Int, 820 ) : ElementName { 821 DISCONNECT_ALL_APPS_DIALOG_CONTAINER( 822 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER, 823 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER, 824 ), 825 DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON( 826 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON, 827 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON, 828 ), 829 DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON( 830 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON, 831 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON, 832 ), 833 DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX( 834 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX, 835 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX, 836 ), 837 } 838 839 /** Loggable elements in the Deletion dialog time range picker dialog. */ 840 enum class DeletionDialogTimeRangeElement( 841 override val impressionId: Int, 842 override val interactionId: Int, 843 ) : ElementName { 844 // Deletion time range dialog 845 DELETION_DIALOG_TIME_RANGE_CONTAINER( 846 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, 847 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, 848 ), 849 DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON( 850 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, 851 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, 852 ), 853 DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON( 854 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, 855 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, 856 ), 857 DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON( 858 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, 859 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, 860 ), 861 DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON( 862 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, 863 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, 864 ), 865 DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON( 866 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, 867 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, 868 ), 869 DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON( 870 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 871 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 872 ), 873 } 874 875 /** Loggable elements in the Deletion dialog confirmation dialog. */ 876 enum class DeletionDialogConfirmationElement( 877 override val impressionId: Int, 878 override val interactionId: Int, 879 ) : ElementName { 880 DELETION_DIALOG_CONFIRMATION_CONTAINER( 881 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, 882 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, 883 ), 884 DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON( 885 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, 886 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, 887 ), 888 DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON( 889 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, 890 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, 891 ), 892 DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON( 893 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, 894 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, 895 ), 896 DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON( 897 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, 898 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, 899 ), 900 } 901 902 /** Loggable elements in the Progress dialog. */ 903 enum class ProgressDialogElement(override val impressionId: Int, override val interactionId: Int) : 904 ElementName { 905 DELETION_DIALOG_IN_PROGRESS_CONTAINER( 906 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, 907 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, 908 ) 909 } 910 911 /** Loggable elements in the Success dialog. */ 912 enum class SuccessDialogElement(override val impressionId: Int, override val interactionId: Int) : 913 ElementName { 914 DELETION_DIALOG_SUCCESS_CONTAINER( 915 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, 916 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, 917 ), 918 DELETION_DIALOG_SUCCESS_DONE_BUTTON( 919 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, 920 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, 921 ), 922 DELETION_DIALOG_SUCCESS_SEE_CONNECTED_APPS_BUTTON( 923 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, 924 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, 925 ), 926 } 927 928 /** Loggable elements in the Failed dialog. */ 929 enum class FailedDialogElement(override val impressionId: Int, override val interactionId: Int) : 930 ElementName { 931 DELETION_DIALOG_ERROR_CONTAINER( 932 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, 933 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, 934 ), 935 DELETION_DIALOG_ERROR_CLOSE_BUTTON( 936 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, 937 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, 938 ), 939 DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON( 940 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, 941 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, 942 ), 943 } 944 945 /** Loggable elements in the Request and Manage permissions pages. */ 946 enum class PermissionsElement(override val impressionId: Int, override val interactionId: Int) : 947 ElementName { 948 ALLOW_PERMISSIONS_BUTTON( 949 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, 950 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, 951 ), 952 CANCEL_PERMISSIONS_BUTTON( 953 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, 954 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, 955 ), 956 ALLOW_ALL_SWITCH( 957 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_SWITCH, 958 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_SWITCH, 959 ), 960 PERMISSION_SWITCH( 961 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH, 962 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH, 963 ), 964 APP_RATIONALE_LINK( 965 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_RATIONALE_LINK, 966 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_RATIONALE_LINK, 967 ), 968 } 969 970 /** Loggable elements in the Request Combined Additional Permissions page. */ 971 enum class RequestCombinedAdditionalPermissionsElement( 972 override val impressionId: Int, 973 override val interactionId: Int, 974 ) : ElementName { 975 ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( 976 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 977 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 978 ), 979 CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( 980 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 981 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 982 ), 983 BACKGROUND_READ_BUTTON( 984 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, 985 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, 986 ), 987 HISTORY_READ_BUTTON( 988 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HISTORY_READ_BUTTON, 989 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HISTORY_READ_BUTTON, 990 ), 991 } 992 993 /** Loggable elements in the Request Background Read permission page. */ 994 enum class RequestBackgroundReadPermissionElement( 995 override val impressionId: Int, 996 override val interactionId: Int, 997 ) : ElementName { 998 ALLOW_BACKGROUND_READ_BUTTON( 999 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, 1000 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, 1001 ), 1002 CANCEL_BACKGROUND_READ_BUTTON( 1003 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, 1004 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, 1005 ), 1006 } 1007 1008 /** Loggable elements in the Request History Read permission page. */ 1009 enum class RequestHistoryReadPermissionElement( 1010 override val impressionId: Int, 1011 override val interactionId: Int, 1012 ) : ElementName { 1013 ALLOW_HISTORY_READ_BUTTON( 1014 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1015 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1016 ), 1017 CANCEL_HISTORY_READ_BUTTON( 1018 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, 1019 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, 1020 ), 1021 } 1022 1023 enum class AdditionalAccessElement( 1024 override val impressionId: Int, 1025 override val interactionId: Int, 1026 ) : ElementName { 1027 EXERCISE_ROUTES_BUTTON( 1028 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_BUTTON, 1029 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_BUTTON, 1030 ), 1031 HISTORY_READ_BUTTON( 1032 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1033 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1034 ), 1035 BACKGROUND_READ_BUTTON( 1036 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, 1037 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, 1038 ), 1039 EXERCISE_ROUTES_DIALOG_CONTAINER( 1040 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, 1041 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, 1042 ), 1043 EXERCISE_ROUTES_ALLOW_ALL_BUTTON( 1044 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, 1045 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, 1046 ), 1047 EXERCISE_ROUTES_ASK_BUTTON( 1048 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, 1049 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, 1050 ), 1051 EXERCISE_ROUTES_DIALOG_DENY_BUTTON( 1052 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, 1053 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, 1054 ), 1055 ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( 1056 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1057 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1058 ), 1059 ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( 1060 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1061 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1062 ), 1063 ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( 1064 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1065 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1066 ), 1067 DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( 1068 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1069 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1070 ), 1071 DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( 1072 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1073 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1074 ), 1075 DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( 1076 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1077 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1078 ), 1079 } 1080 1081 /** Loggable elements in the toolbar. */ 1082 enum class ToolbarElement(override val impressionId: Int, override val interactionId: Int) : 1083 ElementName { 1084 // Represents main menu 1085 TOOLBAR_SETTINGS_BUTTON( 1086 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, 1087 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, 1088 ), 1089 TOOLBAR_HELP_BUTTON( 1090 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_HELP_BUTTON, 1091 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_HELP_BUTTON, 1092 ), 1093 // TODO update 1094 TOOLBAR_UNITS_BUTTON( 1095 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, 1096 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, 1097 ), 1098 // TODO not sure if this will be needed 1099 TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON( 1100 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, 1101 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, 1102 ), 1103 TOOLBAR_DATA_SOURCES_BUTTON( 1104 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_MENU_BUTTON, 1105 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_MENU_BUTTON, 1106 ), 1107 TOOLBAR_ENTER_DELETION_STATE_BUTTON( 1108 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, 1109 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, 1110 ), 1111 TOOLBAR_EXIT_DELETION_STATE_BUTTON( 1112 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, 1113 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, 1114 ), 1115 TOOLBAR_DELETE_BUTTON( 1116 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_MENU_BUTTON, 1117 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_MENU_BUTTON, 1118 ), 1119 } 1120 1121 /** Loggable elements in the Entry details page. */ 1122 enum class MigrationElement(override val impressionId: Int, override val interactionId: Int) : 1123 ElementName { 1124 MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON( 1125 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, 1126 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, 1127 ), 1128 MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON( 1129 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, 1130 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, 1131 ), 1132 MIGRATION_PAUSED_CONTINUE_BUTTON( 1133 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, 1134 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, 1135 ), 1136 MIGRATION_DONE_DIALOG_CONTAINER( 1137 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, 1138 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, 1139 ), 1140 MIGRATION_DONE_DIALOG_BUTTON( 1141 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, 1142 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, 1143 ), 1144 MIGRATION_IN_PROGRESS_DIALOG_CONTAINER( 1145 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, 1146 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, 1147 ), 1148 MIGRATION_IN_PROGRESS_DIALOG_BUTTON( 1149 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, 1150 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, 1151 ), 1152 MIGRATION_PENDING_DIALOG_CONTAINER( 1153 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, 1154 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, 1155 ), 1156 MIGRATION_PENDING_DIALOG_CANCEL_BUTTON( 1157 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, 1158 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, 1159 ), 1160 MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON( 1161 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, 1162 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, 1163 ), 1164 MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER( 1165 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, 1166 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, 1167 ), 1168 MIGRATION_NOT_COMPLETE_DIALOG_BUTTON( 1169 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, 1170 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, 1171 ), 1172 MIGRATION_RESUME_BANNER( 1173 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER, 1174 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER, 1175 ), 1176 MIGRATION_RESUME_BANNER_BUTTON( 1177 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, 1178 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, 1179 ), 1180 MIGRATION_APP_UPDATE_BANNER( 1181 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, 1182 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, 1183 ), 1184 MIGRATION_APP_UPDATE_BUTTON( 1185 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, 1186 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, 1187 ), 1188 MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON( 1189 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, 1190 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, 1191 ), 1192 MIGRATION_APP_UPDATE_BANNER_DISMISS_BUTTON( 1193 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, 1194 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, 1195 ), 1196 } 1197 1198 enum class DataRestoreElement(override val impressionId: Int, override val interactionId: Int) : 1199 ElementName { 1200 RESTORE_IN_PROGRESS_DIALOG_CONTAINER( 1201 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, 1202 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, 1203 ), 1204 RESTORE_IN_PROGRESS_DIALOG_BUTTON( 1205 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, 1206 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, 1207 ), 1208 RESTORE_PENDING_BANNER( 1209 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, 1210 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, 1211 ), 1212 RESTORE_PENDING_BANNER_UPDATE_BUTTON( 1213 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, 1214 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, 1215 ), 1216 } 1217 1218 /** Loggable elements in the Data sources page. */ 1219 enum class DataSourcesElement(override val impressionId: Int, override val interactionId: Int) : 1220 ElementName { 1221 DATA_TYPE_SPINNER( 1222 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, 1223 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, 1224 ), 1225 DATA_TOTALS_CARD( 1226 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TOTALS_CARD, 1227 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TOTALS_CARD, 1228 ), 1229 APP_SOURCE_BUTTON( 1230 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_SOURCE_BUTTON, 1231 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_SOURCE_BUTTON, 1232 ), 1233 ADD_AN_APP_BUTTON( 1234 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ADD_AN_APP_BUTTON, 1235 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ADD_AN_APP_BUTTON, 1236 ), 1237 OPEN_APP_SOURCE_MENU_BUTTON( 1238 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__OPEN_APP_SOURCE_MENU_BUTTON, 1239 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__OPEN_APP_SOURCE_MENU_BUTTON, 1240 ), 1241 MOVE_APP_SOURCE_DOWN_MENU_BUTTON( 1242 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MOVE_APP_SOURCE_DOWN_MENU_BUTTON, 1243 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MOVE_APP_SOURCE_DOWN_MENU_BUTTON, 1244 ), 1245 MOVE_APP_SOURCE_UP_MENU_BUTTON( 1246 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MOVE_APP_SOURCE_UP_MENU_BUTTON, 1247 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MOVE_APP_SOURCE_UP_MENU_BUTTON, 1248 ), 1249 REMOVE_APP_SOURCE_MENU_BUTTON( 1250 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_APP_SOURCE_MENU_BUTTON, 1251 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_APP_SOURCE_MENU_BUTTON, 1252 ), 1253 } 1254 1255 /** Loggable elements in the Add an app page. */ 1256 enum class AddAnAppElement(override val impressionId: Int, override val interactionId: Int) : 1257 ElementName { 1258 POTENTIAL_PRIORITY_APP_BUTTON( 1259 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, 1260 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, 1261 ) 1262 } 1263 1264 enum class RouteRequestElement(override val impressionId: Int, override val interactionId: Int) : 1265 ElementName { 1266 EXERCISE_ROUTE_REQUEST_DIALOG_CONTAINER( 1267 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, 1268 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, 1269 ), 1270 EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON( 1271 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, 1272 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, 1273 ), 1274 EXERCISE_ROUTE_DIALOG_ROUTE_VIEW( 1275 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, 1276 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, 1277 ), 1278 EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON( 1279 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, 1280 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, 1281 ), 1282 EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON( 1283 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, 1284 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, 1285 ), 1286 EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON( 1287 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, 1288 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, 1289 ), 1290 EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER( 1291 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, 1292 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, 1293 ), 1294 EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON( 1295 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, 1296 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, 1297 ), 1298 } 1299 1300 /** Loggable elements in the Backup and restore page */ 1301 enum class BackupAndRestoreElement( 1302 override val impressionId: Int, 1303 override val interactionId: Int, 1304 ) : ElementName { 1305 SCHEDULED_EXPORT_BUTTON( 1306 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SCHEDULED_EXPORT_BUTTON, 1307 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SCHEDULED_EXPORT_BUTTON, 1308 ), 1309 RESTORE_DATA_BUTTON( 1310 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RESTORE_DATA_BUTTON, 1311 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RESTORE_DATA_BUTTON, 1312 ), 1313 IMPORT_GENERAL_ERROR_BANNER( 1314 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, 1315 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, 1316 ), 1317 IMPORT_GENERAL_ERROR_BANNER_BUTTON( 1318 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, 1319 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, 1320 ), 1321 IMPORT_VERSION_MISMATCH_ERROR_BANNER( 1322 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, 1323 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, 1324 ), 1325 IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON( 1326 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, 1327 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, 1328 ), 1329 IMPORT_WRONG_FILE_ERROR_BANNER( 1330 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, 1331 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, 1332 ), 1333 IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON( 1334 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, 1335 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, 1336 ), 1337 } 1338 1339 /** Loggable elements in the Export frequency page */ 1340 enum class ExportFrequencyElement(override val impressionId: Int, override val interactionId: Int) : 1341 ElementName { 1342 EXPORT_FREQUENCY_DAILY_BUTTON( 1343 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, 1344 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, 1345 ), 1346 EXPORT_FREQUENCY_WEEKLY_BUTTON( 1347 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, 1348 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, 1349 ), 1350 EXPORT_FREQUENCY_MONTHLY_BUTTON( 1351 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, 1352 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, 1353 ), 1354 EXPORT_FREQUENCY_BACK_BUTTON( 1355 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, 1356 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, 1357 ), 1358 EXPORT_FREQUENCY_NEXT_BUTTON( 1359 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1360 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1361 ), 1362 } 1363 1364 /** Loggable elements in the Export destination page */ 1365 enum class ExportDestinationElement( 1366 override val impressionId: Int, 1367 override val interactionId: Int, 1368 ) : ElementName { 1369 EXPORT_DESTINATION_BACK_BUTTON( 1370 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, 1371 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, 1372 ), 1373 EXPORT_DESTINATION_NEXT_BUTTON( 1374 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1375 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1376 ), 1377 } 1378 1379 /** Loggable elements in the Scheduled export fragment page */ 1380 enum class ScheduledExportElement(override val impressionId: Int, override val interactionId: Int) : 1381 ElementName { 1382 EXPORT_CONTROL_SWITCH_ON( 1383 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, 1384 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, 1385 ), 1386 EXPORT_CONTROL_SWITCH_OFF( 1387 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, 1388 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, 1389 ), 1390 EXPORT_SETTINGS_FREQUENCY_DAILY( 1391 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, 1392 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, 1393 ), 1394 EXPORT_SETTINGS_FREQUENCY_WEEKLY( 1395 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, 1396 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, 1397 ), 1398 EXPORT_SETTINGS_FREQUENCY_MONTHLY( 1399 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, 1400 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, 1401 ), 1402 } 1403 1404 /** Loggable elements in the Import source location page */ 1405 enum class ImportSourceLocationElement( 1406 override val impressionId: Int, 1407 override val interactionId: Int, 1408 ) : ElementName { 1409 IMPORT_SOURCE_LOCATION_CANCEL_BUTTON( 1410 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, 1411 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, 1412 ), 1413 IMPORT_SOURCE_LOCATION_NEXT_BUTTON( 1414 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, 1415 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, 1416 ), 1417 } 1418 1419 /** Loggable elements in the Import confirmation dialog page */ 1420 enum class ImportConfirmationDialogElement( 1421 override val impressionId: Int, 1422 override val interactionId: Int, 1423 ) : ElementName { 1424 IMPORT_CONFIRMATION_CANCEL_BUTTON( 1425 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, 1426 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, 1427 ), 1428 IMPORT_CONFIRMATION_DONE_BUTTON( 1429 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, 1430 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, 1431 ), 1432 IMPORT_CONFIRMATION_CONTAINER( 1433 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, 1434 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, 1435 ), 1436 } 1437 1438 /** Loggable elements in the AllData page */ 1439 enum class AllDataElement(override val impressionId: Int, override val interactionId: Int) : 1440 ElementName { 1441 PERMISSION_TYPE_BUTTON_WITH_CHECKBOX( 1442 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1443 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1444 ), 1445 PERMISSION_TYPE_BUTTON_NO_CHECKBOX( 1446 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1447 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1448 ), 1449 SELECT_ALL_BUTTON( 1450 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, 1451 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, 1452 ), 1453 } 1454 1455 /** Loggable elements in the AllEntries and AppEntries page */ 1456 enum class EntriesElement(override val impressionId: Int, override val interactionId: Int) : 1457 ElementName { 1458 ENTRY_BUTTON_WITH_CHECKBOX( 1459 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, 1460 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, 1461 ), 1462 ENTRY_BUTTON_NO_CHECKBOX( 1463 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, 1464 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, 1465 ), 1466 DATE_VIEW_SPINNER_DAY( 1467 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_DAY, 1468 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_DAY, 1469 ), 1470 DATE_VIEW_SPINNER_WEEK( 1471 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_WEEK, 1472 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_WEEK, 1473 ), 1474 DATE_VIEW_SPINNER_MONTH( 1475 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_YEAR, 1476 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_YEAR, 1477 ), 1478 SELECT_ALL_BUTTON( 1479 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, 1480 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, 1481 ), 1482 } 1483 1484 /** Loggable elements in the AppData page */ 1485 enum class AppDataElement(override val impressionId: Int, override val interactionId: Int) : 1486 ElementName { 1487 PERMISSION_TYPE_BUTTON_WITH_CHECKBOX( 1488 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1489 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1490 ), 1491 PERMISSION_TYPE_BUTTON_NO_CHECKBOX( 1492 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1493 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1494 ), 1495 SELECT_ALL_BUTTON( 1496 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, 1497 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, 1498 ), 1499 } 1500 1501 enum class CombinedAppAccessElement( 1502 override val impressionId: Int, 1503 override val interactionId: Int, 1504 ) : ElementName { 1505 FITNESS_PERMISSIONS_BUTTON( 1506 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, 1507 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, 1508 ), 1509 MEDICAL_PERMISSIONS_BUTTON( 1510 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, 1511 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, 1512 ), 1513 REMOVE_ALL_PERMISSIONS_BUTTON( 1514 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, 1515 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, 1516 ), 1517 } 1518 1519 /** Loggable elements belonging to the RawFhirPage. */ 1520 enum class RawFhirPageElement(override val impressionId: Int, override val interactionId: Int) : 1521 ElementName { 1522 RAW_FHIR_RESOURCE( 1523 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RAW_FHIR_RESOURCE, 1524 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RAW_FHIR_RESOURCE, 1525 ) 1526 } 1527 1528 /** Loggable elements belonging to MedicalWritePermissionFragment elements. */ 1529 enum class MedicalWritePermissionPageElement( 1530 override val impressionId: Int, 1531 override val interactionId: Int, 1532 ) : ElementName { 1533 ALLOW_WRITE_HEALTH_RECORDS_BUTTON( 1534 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, 1535 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, 1536 ), 1537 CANCEL_WRITE_HEALTH_RECORDS_BUTTON( 1538 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, 1539 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, 1540 ), 1541 } 1542 1543 /** Loggable elements belonging to the error page, and the unknown element. */ 1544 enum class ErrorPageElement(override val impressionId: Int, override val interactionId: Int) : 1545 ElementName { 1546 UNKNOWN_ELEMENT( 1547 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 1548 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN, 1549 ) 1550 } 1551 1552 /** Loggable elements belonging to any page with unknown elements. */ 1553 enum class UnknownGenericElement(override val impressionId: Int, override val interactionId: Int) : 1554 ElementName { 1555 UNKNOWN_BANNER( 1556 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER, 1557 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER, 1558 ), 1559 UNKNOWN_BANNER_BUTTON( 1560 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER_BUTTON, 1561 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER_BUTTON, 1562 ), 1563 UNKNOWN_HEALTH_PREFERENCE( 1564 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, 1565 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, 1566 ), 1567 UNKNOWN_DIALOG( 1568 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG, 1569 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG, 1570 ), 1571 UNKNOWN_DIALOG_POSITIVE_BUTTON( 1572 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, 1573 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, 1574 ), 1575 UNKNOWN_DIALOG_NEGATIVE_BUTTON( 1576 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, 1577 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, 1578 ), 1579 UNKNOWN_DIALOG_NEUTRAL_BUTTON( 1580 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, 1581 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, 1582 ), 1583 UNKNOWN_SWITCH_ACTIVE_PREFERENCE( 1584 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, 1585 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, 1586 ), 1587 UNKNOWN_SWITCH_INACTIVE_PREFERENCE( 1588 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, 1589 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, 1590 ), 1591 UNKNOWN_BUTTON( 1592 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, 1593 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, 1594 ), 1595 } 1596 1597 @EntryPoint 1598 @InstallIn(SingletonComponent::class) 1599 interface HealthConnectLoggerEntryPoint { loggernull1600 fun logger(): HealthConnectLogger 1601 } 1602