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 } 834 835 /** Loggable elements in the Deletion dialog time range picker dialog. */ 836 enum class DeletionDialogTimeRangeElement( 837 override val impressionId: Int, 838 override val interactionId: Int, 839 ) : ElementName { 840 // Deletion time range dialog 841 DELETION_DIALOG_TIME_RANGE_CONTAINER( 842 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, 843 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, 844 ), 845 DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON( 846 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, 847 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, 848 ), 849 DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON( 850 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, 851 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, 852 ), 853 DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON( 854 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, 855 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, 856 ), 857 DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON( 858 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, 859 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, 860 ), 861 DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON( 862 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, 863 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, 864 ), 865 DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON( 866 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 867 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, 868 ), 869 } 870 871 /** Loggable elements in the Deletion dialog confirmation dialog. */ 872 enum class DeletionDialogConfirmationElement( 873 override val impressionId: Int, 874 override val interactionId: Int, 875 ) : ElementName { 876 DELETION_DIALOG_CONFIRMATION_CONTAINER( 877 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, 878 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, 879 ), 880 DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON( 881 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, 882 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, 883 ), 884 DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON( 885 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, 886 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, 887 ), 888 DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON( 889 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, 890 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, 891 ), 892 DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON( 893 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, 894 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, 895 ), 896 } 897 898 /** Loggable elements in the Progress dialog. */ 899 enum class ProgressDialogElement(override val impressionId: Int, override val interactionId: Int) : 900 ElementName { 901 DELETION_DIALOG_IN_PROGRESS_CONTAINER( 902 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, 903 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, 904 ) 905 } 906 907 /** Loggable elements in the Success dialog. */ 908 enum class SuccessDialogElement(override val impressionId: Int, override val interactionId: Int) : 909 ElementName { 910 DELETION_DIALOG_SUCCESS_CONTAINER( 911 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, 912 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, 913 ), 914 DELETION_DIALOG_SUCCESS_DONE_BUTTON( 915 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, 916 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, 917 ), 918 DELETION_DIALOG_SUCCESS_SEE_CONNECTED_APPS_BUTTON( 919 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, 920 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, 921 ), 922 } 923 924 /** Loggable elements in the Failed dialog. */ 925 enum class FailedDialogElement(override val impressionId: Int, override val interactionId: Int) : 926 ElementName { 927 DELETION_DIALOG_ERROR_CONTAINER( 928 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, 929 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, 930 ), 931 DELETION_DIALOG_ERROR_CLOSE_BUTTON( 932 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, 933 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, 934 ), 935 DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON( 936 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, 937 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, 938 ), 939 } 940 941 /** Loggable elements in the Request and Manage permissions pages. */ 942 enum class PermissionsElement(override val impressionId: Int, override val interactionId: Int) : 943 ElementName { 944 ALLOW_PERMISSIONS_BUTTON( 945 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, 946 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, 947 ), 948 CANCEL_PERMISSIONS_BUTTON( 949 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, 950 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, 951 ), 952 ALLOW_ALL_SWITCH( 953 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_SWITCH, 954 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_SWITCH, 955 ), 956 PERMISSION_SWITCH( 957 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH, 958 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH, 959 ), 960 APP_RATIONALE_LINK( 961 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_RATIONALE_LINK, 962 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_RATIONALE_LINK, 963 ), 964 } 965 966 /** Loggable elements in the Request Combined Additional Permissions page. */ 967 enum class RequestCombinedAdditionalPermissionsElement( 968 override val impressionId: Int, 969 override val interactionId: Int, 970 ) : ElementName { 971 ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( 972 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 973 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 974 ), 975 CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( 976 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 977 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, 978 ), 979 BACKGROUND_READ_BUTTON( 980 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, 981 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, 982 ), 983 HISTORY_READ_BUTTON( 984 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HISTORY_READ_BUTTON, 985 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HISTORY_READ_BUTTON, 986 ), 987 } 988 989 /** Loggable elements in the Request Background Read permission page. */ 990 enum class RequestBackgroundReadPermissionElement( 991 override val impressionId: Int, 992 override val interactionId: Int, 993 ) : ElementName { 994 ALLOW_BACKGROUND_READ_BUTTON( 995 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, 996 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, 997 ), 998 CANCEL_BACKGROUND_READ_BUTTON( 999 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, 1000 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, 1001 ), 1002 } 1003 1004 /** Loggable elements in the Request History Read permission page. */ 1005 enum class RequestHistoryReadPermissionElement( 1006 override val impressionId: Int, 1007 override val interactionId: Int, 1008 ) : ElementName { 1009 ALLOW_HISTORY_READ_BUTTON( 1010 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1011 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1012 ), 1013 CANCEL_HISTORY_READ_BUTTON( 1014 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, 1015 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, 1016 ), 1017 } 1018 1019 enum class AdditionalAccessElement( 1020 override val impressionId: Int, 1021 override val interactionId: Int, 1022 ) : ElementName { 1023 EXERCISE_ROUTES_BUTTON( 1024 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_BUTTON, 1025 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_BUTTON, 1026 ), 1027 HISTORY_READ_BUTTON( 1028 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1029 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, 1030 ), 1031 BACKGROUND_READ_BUTTON( 1032 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, 1033 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, 1034 ), 1035 EXERCISE_ROUTES_DIALOG_CONTAINER( 1036 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, 1037 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, 1038 ), 1039 EXERCISE_ROUTES_ALLOW_ALL_BUTTON( 1040 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, 1041 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, 1042 ), 1043 EXERCISE_ROUTES_ASK_BUTTON( 1044 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, 1045 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, 1046 ), 1047 EXERCISE_ROUTES_DIALOG_DENY_BUTTON( 1048 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, 1049 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, 1050 ), 1051 ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( 1052 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1053 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1054 ), 1055 ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( 1056 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1057 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1058 ), 1059 ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( 1060 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1061 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1062 ), 1063 DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( 1064 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1065 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, 1066 ), 1067 DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( 1068 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1069 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, 1070 ), 1071 DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( 1072 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1073 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, 1074 ), 1075 } 1076 1077 /** Loggable elements in the toolbar. */ 1078 enum class ToolbarElement(override val impressionId: Int, override val interactionId: Int) : 1079 ElementName { 1080 // Represents main menu 1081 TOOLBAR_SETTINGS_BUTTON( 1082 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, 1083 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, 1084 ), 1085 TOOLBAR_HELP_BUTTON( 1086 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_HELP_BUTTON, 1087 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_HELP_BUTTON, 1088 ), 1089 // TODO update 1090 TOOLBAR_UNITS_BUTTON( 1091 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, 1092 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, 1093 ), 1094 // TODO not sure if this will be needed 1095 TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON( 1096 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, 1097 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, 1098 ), 1099 TOOLBAR_DATA_SOURCES_BUTTON( 1100 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_MENU_BUTTON, 1101 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_MENU_BUTTON, 1102 ), 1103 TOOLBAR_ENTER_DELETION_STATE_BUTTON( 1104 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, 1105 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, 1106 ), 1107 TOOLBAR_EXIT_DELETION_STATE_BUTTON( 1108 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, 1109 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, 1110 ), 1111 TOOLBAR_DELETE_BUTTON( 1112 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_MENU_BUTTON, 1113 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_MENU_BUTTON, 1114 ), 1115 } 1116 1117 /** Loggable elements in the Entry details page. */ 1118 enum class MigrationElement(override val impressionId: Int, override val interactionId: Int) : 1119 ElementName { 1120 MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON( 1121 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, 1122 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, 1123 ), 1124 MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON( 1125 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, 1126 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, 1127 ), 1128 MIGRATION_PAUSED_CONTINUE_BUTTON( 1129 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, 1130 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, 1131 ), 1132 MIGRATION_DONE_DIALOG_CONTAINER( 1133 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, 1134 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, 1135 ), 1136 MIGRATION_DONE_DIALOG_BUTTON( 1137 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, 1138 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, 1139 ), 1140 MIGRATION_IN_PROGRESS_DIALOG_CONTAINER( 1141 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, 1142 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, 1143 ), 1144 MIGRATION_IN_PROGRESS_DIALOG_BUTTON( 1145 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, 1146 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, 1147 ), 1148 MIGRATION_PENDING_DIALOG_CONTAINER( 1149 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, 1150 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, 1151 ), 1152 MIGRATION_PENDING_DIALOG_CANCEL_BUTTON( 1153 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, 1154 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, 1155 ), 1156 MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON( 1157 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, 1158 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, 1159 ), 1160 MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER( 1161 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, 1162 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, 1163 ), 1164 MIGRATION_NOT_COMPLETE_DIALOG_BUTTON( 1165 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, 1166 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, 1167 ), 1168 MIGRATION_RESUME_BANNER( 1169 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER, 1170 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER, 1171 ), 1172 MIGRATION_RESUME_BANNER_BUTTON( 1173 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, 1174 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, 1175 ), 1176 MIGRATION_APP_UPDATE_BANNER( 1177 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, 1178 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, 1179 ), 1180 MIGRATION_APP_UPDATE_BUTTON( 1181 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, 1182 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, 1183 ), 1184 MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON( 1185 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, 1186 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, 1187 ), 1188 MIGRATION_APP_UPDATE_BANNER_DISMISS_BUTTON( 1189 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, 1190 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, 1191 ), 1192 } 1193 1194 enum class DataRestoreElement(override val impressionId: Int, override val interactionId: Int) : 1195 ElementName { 1196 RESTORE_IN_PROGRESS_DIALOG_CONTAINER( 1197 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, 1198 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, 1199 ), 1200 RESTORE_IN_PROGRESS_DIALOG_BUTTON( 1201 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, 1202 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, 1203 ), 1204 RESTORE_PENDING_BANNER( 1205 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, 1206 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, 1207 ), 1208 RESTORE_PENDING_BANNER_UPDATE_BUTTON( 1209 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, 1210 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, 1211 ), 1212 } 1213 1214 /** Loggable elements in the Data sources page. */ 1215 enum class DataSourcesElement(override val impressionId: Int, override val interactionId: Int) : 1216 ElementName { 1217 DATA_TYPE_SPINNER( 1218 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, 1219 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, 1220 ), 1221 DATA_TOTALS_CARD( 1222 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TOTALS_CARD, 1223 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TOTALS_CARD, 1224 ), 1225 APP_SOURCE_BUTTON( 1226 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_SOURCE_BUTTON, 1227 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_SOURCE_BUTTON, 1228 ), 1229 ADD_AN_APP_BUTTON( 1230 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ADD_AN_APP_BUTTON, 1231 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ADD_AN_APP_BUTTON, 1232 ), 1233 EDIT_SOURCE_LIST_BUTTON( 1234 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EDIT_SOURCE_LIST_BUTTON, 1235 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EDIT_SOURCE_LIST_BUTTON, 1236 ), 1237 REORDER_APP_SOURCE_BUTTON( 1238 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REORDER_APP_SOURCE_BUTTON, 1239 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REORDER_APP_SOURCE_BUTTON, 1240 ), 1241 REMOVE_APP_SOURCE_BUTTON( 1242 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_APP_SOURCE_BUTTON, 1243 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_APP_SOURCE_BUTTON, 1244 ), 1245 } 1246 1247 /** Loggable elements in the Add an app page. */ 1248 enum class AddAnAppElement(override val impressionId: Int, override val interactionId: Int) : 1249 ElementName { 1250 POTENTIAL_PRIORITY_APP_BUTTON( 1251 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, 1252 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, 1253 ) 1254 } 1255 1256 enum class RouteRequestElement(override val impressionId: Int, override val interactionId: Int) : 1257 ElementName { 1258 EXERCISE_ROUTE_REQUEST_DIALOG_CONTAINER( 1259 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, 1260 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, 1261 ), 1262 EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON( 1263 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, 1264 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, 1265 ), 1266 EXERCISE_ROUTE_DIALOG_ROUTE_VIEW( 1267 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, 1268 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, 1269 ), 1270 EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON( 1271 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, 1272 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, 1273 ), 1274 EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON( 1275 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, 1276 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, 1277 ), 1278 EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON( 1279 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, 1280 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, 1281 ), 1282 EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER( 1283 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, 1284 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, 1285 ), 1286 EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON( 1287 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, 1288 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, 1289 ), 1290 } 1291 1292 /** Loggable elements in the Backup and restore page */ 1293 enum class BackupAndRestoreElement( 1294 override val impressionId: Int, 1295 override val interactionId: Int, 1296 ) : ElementName { 1297 SCHEDULED_EXPORT_BUTTON( 1298 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SCHEDULED_EXPORT_BUTTON, 1299 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SCHEDULED_EXPORT_BUTTON, 1300 ), 1301 RESTORE_DATA_BUTTON( 1302 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RESTORE_DATA_BUTTON, 1303 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RESTORE_DATA_BUTTON, 1304 ), 1305 IMPORT_GENERAL_ERROR_BANNER( 1306 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, 1307 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, 1308 ), 1309 IMPORT_GENERAL_ERROR_BANNER_BUTTON( 1310 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, 1311 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, 1312 ), 1313 IMPORT_VERSION_MISMATCH_ERROR_BANNER( 1314 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, 1315 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, 1316 ), 1317 IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON( 1318 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, 1319 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, 1320 ), 1321 IMPORT_WRONG_FILE_ERROR_BANNER( 1322 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, 1323 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, 1324 ), 1325 IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON( 1326 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, 1327 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, 1328 ), 1329 } 1330 1331 /** Loggable elements in the Export frequency page */ 1332 enum class ExportFrequencyElement(override val impressionId: Int, override val interactionId: Int) : 1333 ElementName { 1334 EXPORT_FREQUENCY_DAILY_BUTTON( 1335 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, 1336 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, 1337 ), 1338 EXPORT_FREQUENCY_WEEKLY_BUTTON( 1339 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, 1340 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, 1341 ), 1342 EXPORT_FREQUENCY_MONTHLY_BUTTON( 1343 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, 1344 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, 1345 ), 1346 EXPORT_FREQUENCY_BACK_BUTTON( 1347 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, 1348 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, 1349 ), 1350 EXPORT_FREQUENCY_NEXT_BUTTON( 1351 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1352 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1353 ), 1354 } 1355 1356 /** Loggable elements in the Export destination page */ 1357 enum class ExportDestinationElement( 1358 override val impressionId: Int, 1359 override val interactionId: Int, 1360 ) : ElementName { 1361 EXPORT_DESTINATION_BACK_BUTTON( 1362 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, 1363 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, 1364 ), 1365 EXPORT_DESTINATION_NEXT_BUTTON( 1366 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1367 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, 1368 ), 1369 } 1370 1371 /** Loggable elements in the Scheduled export fragment page */ 1372 enum class ScheduledExportElement(override val impressionId: Int, override val interactionId: Int) : 1373 ElementName { 1374 EXPORT_CONTROL_SWITCH_ON( 1375 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, 1376 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, 1377 ), 1378 EXPORT_CONTROL_SWITCH_OFF( 1379 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, 1380 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, 1381 ), 1382 EXPORT_SETTINGS_FREQUENCY_DAILY( 1383 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, 1384 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, 1385 ), 1386 EXPORT_SETTINGS_FREQUENCY_WEEKLY( 1387 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, 1388 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, 1389 ), 1390 EXPORT_SETTINGS_FREQUENCY_MONTHLY( 1391 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, 1392 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, 1393 ), 1394 } 1395 1396 /** Loggable elements in the Import source location page */ 1397 enum class ImportSourceLocationElement( 1398 override val impressionId: Int, 1399 override val interactionId: Int, 1400 ) : ElementName { 1401 IMPORT_SOURCE_LOCATION_CANCEL_BUTTON( 1402 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, 1403 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, 1404 ), 1405 IMPORT_SOURCE_LOCATION_NEXT_BUTTON( 1406 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, 1407 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, 1408 ), 1409 } 1410 1411 /** Loggable elements in the Import confirmation dialog page */ 1412 enum class ImportConfirmationDialogElement( 1413 override val impressionId: Int, 1414 override val interactionId: Int, 1415 ) : ElementName { 1416 IMPORT_CONFIRMATION_CANCEL_BUTTON( 1417 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, 1418 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, 1419 ), 1420 IMPORT_CONFIRMATION_DONE_BUTTON( 1421 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, 1422 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, 1423 ), 1424 IMPORT_CONFIRMATION_CONTAINER( 1425 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, 1426 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, 1427 ), 1428 } 1429 1430 enum class AllDataElement(override val impressionId: Int, override val interactionId: Int) : 1431 ElementName { 1432 PERMISSION_TYPE_BUTTON_WITH_CHECKBOX( 1433 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1434 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, 1435 ), 1436 PERMISSION_TYPE_BUTTON_NO_CHECKBOX( 1437 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1438 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, 1439 ), 1440 SELECT_ALL_BUTTON( 1441 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, 1442 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, 1443 ), 1444 } 1445 1446 enum class AllEntriesElement(override val impressionId: Int, override val interactionId: Int) : 1447 ElementName { 1448 ENTRY_BUTTON_WITH_CHECKBOX( 1449 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, 1450 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, 1451 ), 1452 ENTRY_BUTTON_NO_CHECKBOX( 1453 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, 1454 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, 1455 ), 1456 DATE_VIEW_SPINNER_DAY( 1457 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_DAY, 1458 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_DAY, 1459 ), 1460 DATE_VIEW_SPINNER_WEEK( 1461 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_WEEK, 1462 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_WEEK, 1463 ), 1464 DATE_VIEW_SPINNER_MONTH( 1465 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_YEAR, 1466 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_YEAR, 1467 ), 1468 } 1469 1470 enum class CombinedAppAccessElement( 1471 override val impressionId: Int, 1472 override val interactionId: Int, 1473 ) : ElementName { 1474 FITNESS_PERMISSIONS_BUTTON( 1475 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, 1476 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, 1477 ), 1478 MEDICAL_PERMISSIONS_BUTTON( 1479 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, 1480 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, 1481 ), 1482 REMOVE_ALL_PERMISSIONS_BUTTON( 1483 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, 1484 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, 1485 ), 1486 } 1487 1488 /** Loggable elements belonging to the RawFhirPage. */ 1489 enum class RawFhirPageElement(override val impressionId: Int, override val interactionId: Int) : 1490 ElementName { 1491 RAW_FHIR_RESOURCE( 1492 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RAW_FHIR_RESOURCE, 1493 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RAW_FHIR_RESOURCE, 1494 ) 1495 } 1496 1497 /** Loggable elements belonging to MedicalWritePermissionFragment elements. */ 1498 enum class MedicalWritePermissionPageElement( 1499 override val impressionId: Int, 1500 override val interactionId: Int, 1501 ) : ElementName { 1502 ALLOW_WRITE_HEALTH_RECORDS_BUTTON( 1503 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, 1504 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, 1505 ), 1506 CANCEL_WRITE_HEALTH_RECORDS_BUTTON( 1507 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, 1508 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, 1509 ), 1510 } 1511 1512 /** Loggable elements belonging to the error page, and the unknown element. */ 1513 enum class ErrorPageElement(override val impressionId: Int, override val interactionId: Int) : 1514 ElementName { 1515 UNKNOWN_ELEMENT( 1516 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, 1517 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN, 1518 ) 1519 } 1520 1521 /** Loggable elements belonging to any page with unknown elements. */ 1522 enum class UnknownGenericElement(override val impressionId: Int, override val interactionId: Int) : 1523 ElementName { 1524 UNKNOWN_BANNER( 1525 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER, 1526 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER, 1527 ), 1528 UNKNOWN_BANNER_BUTTON( 1529 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER_BUTTON, 1530 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER_BUTTON, 1531 ), 1532 UNKNOWN_HEALTH_PREFERENCE( 1533 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, 1534 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, 1535 ), 1536 UNKNOWN_DIALOG( 1537 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG, 1538 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG, 1539 ), 1540 UNKNOWN_DIALOG_POSITIVE_BUTTON( 1541 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, 1542 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, 1543 ), 1544 UNKNOWN_DIALOG_NEGATIVE_BUTTON( 1545 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, 1546 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, 1547 ), 1548 UNKNOWN_DIALOG_NEUTRAL_BUTTON( 1549 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, 1550 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, 1551 ), 1552 UNKNOWN_SWITCH_ACTIVE_PREFERENCE( 1553 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, 1554 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, 1555 ), 1556 UNKNOWN_SWITCH_INACTIVE_PREFERENCE( 1557 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, 1558 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, 1559 ), 1560 UNKNOWN_BUTTON( 1561 HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, 1562 HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, 1563 ), 1564 } 1565 1566 @EntryPoint 1567 @InstallIn(SingletonComponent::class) 1568 interface HealthConnectLoggerEntryPoint { loggernull1569 fun logger(): HealthConnectLogger 1570 } 1571