/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.healthconnect.controller.utils.logging import androidx.annotation.VisibleForTesting import com.android.healthconnect.controller.HealthFitnessUiStatsLog.* import dagger.hilt.EntryPoint import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Inject import javax.inject.Singleton /** Helper class for logging UI Impressions and Interactions. */ @Singleton class HealthConnectLogger @Inject constructor() { private var pageName = PageName.UNKNOWN_PAGE /** * Sets the page ID which will be used for all impressions and interaction logging on this page. */ fun setPageId(pageName: PageName) { this.pageName = pageName } @VisibleForTesting fun getPageId(): PageName = pageName /** Logs the impression of a page. */ fun logPageImpression() { write(HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId) } /** Logs the impression of an element. */ fun logImpression(element: ElementName) { write(HEALTH_CONNECT_UI_IMPRESSION, pageName.impressionId, element.impressionId) } /** Logs the interaction with an element. */ fun logInteraction(element: ElementName, action: UIAction = UIAction.ACTION_CLICK) { write( HEALTH_CONNECT_UI_INTERACTION, pageName.interactionId, element.interactionId, action.id, ) } } /** Enum class for UI Actions, used to specify whether we wish to log a click or a toggle. */ enum class UIAction(val id: Int) { ACTION_CLICK(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_CLICK), ACTION_TOGGLE_ON(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_ON), ACTION_TOGGLE_OFF(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_TOGGLE_OFF), ACTION_UNKNOWN(HEALTH_CONNECT_UI_INTERACTION__ACTION__ACTION_UNKNOWN), } /** Enum class for PageName. Each loggable fragment in the application should define a page name. */ enum class PageName(val impressionId: Int, val interactionId: Int) { HOME_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__HOME_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__HOME_PAGE, ), ONBOARDING_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ONBOARDING_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ONBOARDING_PAGE, ), RECENT_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__RECENT_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__RECENT_ACCESS_PAGE, ), APP_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_PAGE, ), // TODO (b/270965648) not needed APP_PERMISSIONS_EMPTY_STATE_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_PERMISSIONS_EMPTY_STATE_PAGE, ), HELP_AND_FEEDBACK_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__HELP_AND_FEEDBACK_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__HELP_AND_FEEDBACK_PAGE, ), CATEGORIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__CATEGORIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__CATEGORIES_PAGE, ), AUTO_DELETE_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__AUTO_DELETE_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__AUTO_DELETE_PAGE, ), PERMISSION_TYPES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__PERMISSION_TYPES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__PERMISSION_TYPES_PAGE, ), DATA_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ACCESS_PAGE, ), DATA_ENTRIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_ENTRIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_ENTRIES_PAGE, ), ENTRY_DETAILS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ENTRY_DETAILS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ENTRY_DETAILS_PAGE, ), APP_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_ACCESS_PAGE, ), UNITS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__UNITS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__UNITS_PAGE, ), ALL_CATEGORIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_CATEGORIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_CATEGORIES_PAGE, ), REQUEST_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_PERMISSIONS_PAGE, ), REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_COMBINED_ADDITIONAL_PERMISSIONS_PAGE, ), REQUEST_BACKGROUND_READ_PERMISSION_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_BACKGROUND_READ_PERMISSION_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_BACKGROUND_READ_PERMISSION_PAGE, ), REQUEST_HISTORY_READ_PERMISSION_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_HISTORY_READ_PERMISSION_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_HISTORY_READ_PERMISSION_PAGE, ), MANAGE_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MANAGE_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MANAGE_PERMISSIONS_PAGE, ), SETTINGS_MANAGE_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_PERMISSIONS_PAGE, ), MIGRATION_IN_PROGRESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_IN_PROGRESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_IN_PROGRESS_PAGE, ), MIGRATION_APP_UPDATE_NEEDED_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_APP_UPDATE_NEEDED_PAGE, ), MIGRATION_MODULE_UPDATE_NEEDED_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_MODULE_UPDATE_NEEDED_PAGE, ), MIGRATION_PAUSED_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MIGRATION_PAUSED_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MIGRATION_PAUSED_PAGE, ), MANAGE_DATA_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MANAGE_DATA_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MANAGE_DATA_PAGE, ), DATA_SOURCES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_SOURCES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_SOURCES_PAGE, ), ADD_AN_APP_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ADD_AN_APP_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ADD_AN_APP_PAGE, ), ADDITIONAL_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ADDITIONAL_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ADDITIONAL_ACCESS_PAGE, ), DATA_RESTORE_IN_PROGRESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__DATA_RESTORE_IN_PROGRESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__DATA_RESTORE_IN_PROGRESS_PAGE, ), SEARCH_APPS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__SEARCH_APPS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__SEARCH_APPS_PAGE, ), BACKUP_AND_RESTORE_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__BACKUP_AND_RESTORE_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__BACKUP_AND_RESTORE_PAGE, ), EXPORT_FREQUENCY_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_FREQUENCY_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_FREQUENCY_PAGE, ), EXPORT_DESTINATION_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_DESTINATION_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_DESTINATION_PAGE, ), IMPORT_SOURCE_LOCATION_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__IMPORT_SOURCE_LOCATION_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__IMPORT_SOURCE_LOCATION_PAGE, ), EXPORT_SETTINGS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__EXPORT_SETTINGS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__EXPORT_SETTINGS_PAGE, ), ALL_DATA_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_DATA_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_DATA_PAGE, ), TAB_ENTRIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_ENTRIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_ENTRIES_PAGE, ), TAB_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_ACCESS_PAGE, ), APP_DATA_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_DATA_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_DATA_PAGE, ), APP_ENTRIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__APP_ENTRIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__APP_ENTRIES_PAGE, ), ALL_MEDICAL_DATA_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALL_MEDICAL_DATA_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ALL_MEDICAL_DATA_PAGE, ), TAB_MEDICAL_ENTRIES_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_MEDICAL_ENTRIES_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_MEDICAL_ENTRIES_PAGE, ), TAB_MEDICAL_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__TAB_MEDICAL_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__TAB_MEDICAL_ACCESS_PAGE, ), RAW_FHIR_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__RAW_FHIR_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__RAW_FHIR_PAGE, ), PRETTY_FHIR_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__PRETTY_FHIR_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__PRETTY_FHIR_PAGE, ), REQUEST_MEDICAL_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_MEDICAL_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_MEDICAL_PERMISSIONS_PAGE, ), COMBINED_APP_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__COMBINED_APP_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__COMBINED_APP_ACCESS_PAGE, ), MEDICAL_APP_ACCESS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__MEDICAL_APP_ACCESS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__MEDICAL_APP_ACCESS_PAGE, ), SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_COMBINED_APP_PERMISSIONS_PAGE, ), SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__SETTINGS_MANAGE_MEDICAL_APP_PERMISSIONS_PAGE, ), REQUEST_WRITE_MEDICAL_PERMISSION_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__REQUEST_WRITE_MEDICAL_PERMISSION_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__REQUEST_WRITE_MEDICAL_PERMISSION_PAGE, ), // New Onboarding CONNECT_TWO_APPS_ONBOARDING_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__CONNECT_TWO_APPS_ONBOARDING_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__CONNECT_TWO_APPS_ONBOARDING_PAGE, ), CONNECT_ONE_APP_ONBOARDING_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__CONNECT_ONE_APP_ONBOARDING_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__CONNECT_ONE_APP_ONBOARDING_PAGE, ), ALMOST_DONE_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__ALMOST_DONE_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__ALMOST_DONE_PAGE, ), FITNESS_APP_ONBOARDING_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__FITNESS_APP_ONBOARDING_PAGE, HEALTH_CONNECT_UI_INTERACTION__PAGE__FITNESS_APP_ONBOARDING_PAGE, ), UNKNOWN_PAGE( HEALTH_CONNECT_UI_IMPRESSION__PAGE__PAGE_UNKNOWN, HEALTH_CONNECT_UI_INTERACTION__PAGE__PAGE_UNKNOWN, ), } /** Common interface for loggable elements. */ interface ElementName { val impressionId: Int val interactionId: Int } /** Loggable elements in the Home page. */ enum class HomePageElement(override val impressionId: Int, override val interactionId: Int) : ElementName { APP_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_PERMISSIONS_BUTTON, ), DATA_AND_ACCESS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_AND_ACCESS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_AND_ACCESS_BUTTON, ), SEE_ALL_RECENT_ACCESS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_RECENT_ACCESS_BUTTON, ), MANAGE_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MANAGE_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MANAGE_DATA_BUTTON, ), EXPORT_ERROR_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_ERROR_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_ERROR_BANNER, ), EXPORT_ERROR_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_ERROR_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_ERROR_BANNER_BUTTON, ), BROWSE_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BROWSE_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BROWSE_DATA_BUTTON, ), BROWSE_HEALTH_RECORDS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BROWSE_HEALTH_RECORDS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BROWSE_HEALTH_RECORDS_BUTTON, ), LOCK_SCREEN_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER, ), LOCK_SCREEN_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER_BUTTON, ), LOCK_SCREEN_BANNER_DISMISS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__LOCK_SCREEN_BANNER_DISMISS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__LOCK_SCREEN_BANNER_DISMISS_BUTTON, ), NATIVE_STEPS_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NATIVE_STEPS_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NATIVE_STEPS_BANNER, ), NATIVE_STEPS_BANNER_DISMISS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NATIVE_STEPS_BANNER_DISMISS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NATIVE_STEPS_BANNER_DISMISS_BUTTON, ), NATIVE_STEPS_BANNER_REVIEW_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NATIVE_STEPS_BANNER_REVIEW_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NATIVE_STEPS_BANNER_REVIEW_BUTTON, ), ZERO_APPS_CONNECTED_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ZERO_APPS_CONNECTED_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ZERO_APPS_CONNECTED_BANNER, ), ZERO_APPS_CONNECTED_BANNER_DISMISS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ZERO_APPS_CONNECTED_BANNER_DISMISS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ZERO_APPS_CONNECTED_BANNER_DISMISS_BUTTON, ), ZERO_APPS_CONNECTED_BANNER_SET_UP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ZERO_APPS_CONNECTED_BANNER_SET_UP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ZERO_APPS_CONNECTED_BANNER_SET_UP_BUTTON, ), ONE_APP_CONNECTED_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONE_APP_CONNECTED_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONE_APP_CONNECTED_BANNER, ), ONE_APP_CONNECTED_BANNER_DISMISS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONE_APP_CONNECTED_BANNER_DISMISS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONE_APP_CONNECTED_BANNER_DISMISS_BUTTON, ), ONE_APP_CONNECTED_BANNER_SET_UP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONE_APP_CONNECTED_BANNER_SET_UP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONE_APP_CONNECTED_BANNER_SET_UP_BUTTON, ), } /** Loggable elements in the Onboarding page. */ enum class OnboardingElement(override val impressionId: Int, override val interactionId: Int) : ElementName { ONBOARDING_COMPLETED_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_COMPLETED_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_COMPLETED_BUTTON, ), ONBOARDING_GO_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_GO_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_GO_BACK_BUTTON, ), ONBOARDING_MESSAGE_WITH_PHR( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_MESSAGE_WITH_PHR, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_MESSAGE_WITH_PHR, ), } /** Loggable elements in the Recent Access page. */ enum class RecentAccessElement(override val impressionId: Int, override val interactionId: Int) : ElementName { RECENT_ACCESS_ENTRY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RECENT_ACCESS_ENTRY, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RECENT_ACCESS_ENTRY, ), MANAGE_PERMISSIONS_FAB( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MANAGE_PERMISSIONS_FLOATING_BUTTON, ), } /** Loggable elements in the Manage Data page. */ enum class ManageDataElement(override val impressionId: Int, override val interactionId: Int) : ElementName { AUTO_DELETE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_BUTTON, ), BACKUP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKUP_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKUP_DATA_BUTTON, ), DATA_SOURCES_AND_PRIORITY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, ), SET_UNITS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SET_UNITS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SET_UNITS_BUTTON, ), BACKUP_AND_RESTORE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKUP_AND_RESTORE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKUP_AND_RESTORE_BUTTON, ), } /** Loggable elements in the Category and All categories pages. */ enum class CategoriesElement(override val impressionId: Int, override val interactionId: Int) : ElementName { CATEGORY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CATEGORY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CATEGORY_BUTTON, ), SEE_ALL_CATEGORIES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_CATEGORIES_BUTTON, ), DELETE_ALL_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_ALL_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_ALL_DATA_BUTTON, ), } /** Loggable elements in the App Permissions and Settings App Permission pages. */ enum class AppPermissionsElement(override val impressionId: Int, override val interactionId: Int) : ElementName { SEARCH_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEARCH_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEARCH_BUTTON, ), CONNECTED_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECTED_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECTED_APP_BUTTON, ), NOT_CONNECTED_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NOT_CONNECTED_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NOT_CONNECTED_APP_BUTTON, ), INACTIVE_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__INACTIVE_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__INACTIVE_APP_BUTTON, ), INACTIVE_APP_DELETE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__INACTIVE_APP_DELETE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__INACTIVE_APP_DELETE_BUTTON, ), NEEDS_UPDATE_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_APP_BUTTON, HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_APP_BUTTON, ), REMOVE_ALL_APPS_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_APPS_PERMISSIONS_BUTTON, ), HELP_AND_FEEDBACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HELP_AND_FEEDBACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HELP_AND_FEEDBACK_BUTTON, ), CHECK_FOR_UPDATES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHECK_FOR_UPDATES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHECK_FOR_UPDATES_BUTTON, ), SEE_ALL_COMPATIBLE_APPS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_COMPATIBLE_APPS_BUTTON, ), SEND_FEEDBACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEND_FEEDBACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEND_FEEDBACK_BUTTON, ), } /** Loggable elements in the App Access page. */ enum class AppAccessElement(override val impressionId: Int, override val interactionId: Int) : ElementName { ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_ACTIVE, ), ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_PERMISSIONS_SWITCH_INACTIVE, ), PERMISSION_SWITCH_ACTIVE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_ACTIVE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_ACTIVE, ), PERMISSION_SWITCH_INACTIVE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH_INACTIVE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH_INACTIVE, ), DELETE_APP_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_APP_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_APP_DATA_BUTTON, ), PRIVACY_POLICY_LINK( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRIVACY_POLICY_LINK, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRIVACY_POLICY_LINK, ), ADDITIONAL_ACCESS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ADDITIONAL_ACCESS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ADDITIONAL_ACCESS_BUTTON, ), SEE_APP_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_APP_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_APP_DATA_BUTTON, ), } /** Loggable elements in the Permission types page. */ enum class PermissionTypesElement(override val impressionId: Int, override val interactionId: Int) : ElementName { APP_FILTER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_FILTER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_FILTER_BUTTON, ), PERMISSION_TYPE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON, ), DELETE_CATEGORY_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_CATEGORY_DATA_BUTTON, ), DATA_SOURCES_AND_PRIORITY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_AND_PRIORITY_BUTTON, ), } /** Loggable elements in the Data access page. */ enum class DataAccessElement(override val impressionId: Int, override val interactionId: Int) : ElementName { DATA_ACCESS_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_APP_BUTTON, ), DATA_ACCESS_INACTIVE_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ACCESS_INACTIVE_APP_BUTTON, ), SEE_ALL_ENTRIES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SEE_ALL_ENTRIES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SEE_ALL_ENTRIES_BUTTON, ), DELETE_THIS_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_THIS_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_THIS_DATA_BUTTON, ), } /** Loggable elements in the Data entries page. */ enum class DataEntriesElement(override val impressionId: Int, override val interactionId: Int) : ElementName { AGGREGATION_DATA_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AGGREGATION_DATA_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AGGREGATION_DATA_VIEW, ), DATA_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_VIEW, ), DATA_ENTRY_DELETE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_ENTRY_DELETE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_ENTRY_DELETE_BUTTON, ), EXERCISE_SESSION_ENTRY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_SESSION_ENTRY_BUTTON, ), EXERCISE_SESSION_MAP_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_SESSION_MAP_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_SESSION_MAP_VIEW, ), SLEEP_SESSION_ENTRY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SLEEP_SESSION_ENTRY_BUTTON, ), NEXT_DAY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__NEXT_DAY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__NEXT_DAY_BUTTON, ), PREVIOUS_DAY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PREVIOUS_DAY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PREVIOUS_DAY_BUTTON, ), SELECT_DATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_DATE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_DATE_BUTTON, ), PLANNED_EXERCISE_SESSION_ENTRY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_SESSION_ENTRY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_SESSION_ENTRY_BUTTON, ), } /** Loggable elements in the Entry details page. */ enum class EntryDetailsElement(override val impressionId: Int, override val interactionId: Int) : ElementName { SESSION_DETAIL_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_ENTRY_VIEW, ), SESSION_DETAIL_HEADER_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SESSION_DETAIL_HEADER_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SESSION_DETAIL_HEADER_VIEW, ), REVERSE_SESSION_DETAIL_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REVERSE_SESSION_DETAIL_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REVERSE_SESSION_DETAIL_ENTRY_VIEW, ), FORMATTED_SECTION_TITLE_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FORMATTED_SECTION_TITLE_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FORMATTED_SECTION_TITLE_VIEW, ), FORMATTED_SECTION_CONTENT_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FORMATTED_SECTION_CONTENT_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FORMATTED_SECTION_CONTENT_VIEW, ), PLANNED_EXERCISE_BLOCK_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_BLOCK_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_BLOCK_ENTRY_VIEW, ), PLANNED_EXERCISE_STEP_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PLANNED_EXERCISE_STEP_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PLANNED_EXERCISE_STEP_ENTRY_VIEW, ), EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_PERFORMANCE_GOAL_ENTRY_VIEW, ), } /** Loggable elements in the Units page. */ enum class UnitsElement(override val impressionId: Int, override val interactionId: Int) : ElementName { // Units CHANGE_UNITS_HEIGHT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_HEIGHT_BUTTON, ), CHANGE_UNITS_WEIGHT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_WEIGHT_BUTTON, ), CHANGE_UNITS_DISTANCE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_DISTANCE_BUTTON, ), CHANGE_UNITS_ENERGY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_ENERGY_BUTTON, ), CHANGE_UNITS_TEMPERATURE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CHANGE_UNITS_TEMPERATURE_BUTTON, ), CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BUTTON, ), // Height CENTIMETERS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CENTIMETERS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CENTIMETERS_BUTTON, ), FEET_AND_INCHES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FEET_AND_INCHES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FEET_AND_INCHES_BUTTON, ), // Weight KILOGRAMS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOGRAMS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOGRAMS_BUTTON, ), POUNDS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POUNDS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POUNDS_BUTTON, ), STONES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__STONES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__STONES_BUTTON, ), // Distance KILOMETERS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOMETERS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOMETERS_BUTTON, ), MILES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MILES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MILES_BUTTON, ), // Energy CALORIES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CALORIES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CALORIES_BUTTON, ), KILOJOULES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KILOJOULES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KILOJOULES_BUTTON, ), // Temperature CELSIUS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CELSIUS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CELSIUS_BUTTON, ), FAHRENHEIT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FAHRENHEIT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FAHRENHEIT_BUTTON, ), KELVIN_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__KELVIN_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__KELVIN_BUTTON, ), } /** Loggable elements in the Auto delete page. */ enum class AutoDeleteElement(override val impressionId: Int, override val interactionId: Int) : ElementName { AUTO_DELETE_3_MONTHS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_THREE_MONTHS_BUTTON, ), AUTO_DELETE_18_MONTHS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_EIGHTEEN_MONTHS_BUTTON, ), AUTO_DELETE_NEVER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_NEVER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_NEVER_BUTTON, ), // Auto-delete dialog AUTO_DELETE_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONTAINER, ), AUTO_DELETE_DIALOG_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CANCEL_BUTTON, ), AUTO_DELETE_DIALOG_CONFIRM_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_DIALOG_CONFIRM_BUTTON, ), AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_CONTAINER, ), AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__AUTO_DELETE_CONFIRMATION_DIALOG_DONE_BUTTON, ), } /** Loggable elements in the Disconnect app dialog. */ enum class DisconnectAppDialogElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { DISCONNECT_APP_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONTAINER, ), DISCONNECT_APP_DIALOG_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CANCEL_BUTTON, ), DISCONNECT_APP_DIALOG_CONFIRM_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_CONFIRM_BUTTON, ), DISCONNECT_APP_DIALOG_DELETE_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_APP_DIALOG_DELETE_CHECKBOX, ), } /** Loggable elements in the Disconnect all apps dialog. */ enum class DisconnectAllAppsDialogElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { DISCONNECT_ALL_APPS_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CONTAINER, ), DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_CANCEL_BUTTON, ), DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_REMOVE_ALL_BUTTON, ), DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISCONNECT_ALL_APPS_DIALOG_DELETE_CHECKBOX, ), } /** Loggable elements in the Deletion dialog time range picker dialog. */ enum class DeletionDialogTimeRangeElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { // Deletion time range dialog DELETION_DIALOG_TIME_RANGE_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CONTAINER, ), DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_24_HOURS_BUTTON, ), DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_7_DAYS_BUTTON, ), DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_LAST_30_DAYS_BUTTON, ), DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_ALL_DATA_BUTTON, ), DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_CANCEL_BUTTON, ), DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_TIME_RANGE_NEXT_BUTTON, ), } /** Loggable elements in the Deletion dialog confirmation dialog. */ enum class DeletionDialogConfirmationElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { DELETION_DIALOG_CONFIRMATION_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CONTAINER, ), DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_GO_BACK_BUTTON, ), DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_CANCEL_BUTTON, ), DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_DELETE_BUTTON, ), DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_CONFIRMATION_REMOVE_APP_PERMISSIONS_BUTTON, ), } /** Loggable elements in the Progress dialog. */ enum class ProgressDialogElement(override val impressionId: Int, override val interactionId: Int) : ElementName { DELETION_DIALOG_IN_PROGRESS_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_IN_PROGRESS_CONTAINER, ) } /** Loggable elements in the Success dialog. */ enum class SuccessDialogElement(override val impressionId: Int, override val interactionId: Int) : ElementName { DELETION_DIALOG_SUCCESS_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_CONTAINER, ), DELETION_DIALOG_SUCCESS_DONE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_SUCCESS_DONE_BUTTON, ), DELETION_DIALOG_SUCCESS_SEE_CONNECTED_APPS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SUCCESS_DELETION_DIALOG_SEE_CONNECTED_APPS_BUTTON, ), } /** Loggable elements in the Failed dialog. */ enum class FailedDialogElement(override val impressionId: Int, override val interactionId: Int) : ElementName { DELETION_DIALOG_ERROR_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CONTAINER, ), DELETION_DIALOG_ERROR_CLOSE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_CLOSE_BUTTON, ), DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETION_DIALOG_ERROR_TRY_AGAIN_BUTTON, ), } /** Loggable elements in the Request and Manage permissions pages. */ enum class PermissionsElement(override val impressionId: Int, override val interactionId: Int) : ElementName { ALLOW_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_PERMISSIONS_BUTTON, ), CANCEL_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_PERMISSIONS_BUTTON, ), ALLOW_ALL_SWITCH( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_ALL_SWITCH, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_ALL_SWITCH, ), PERMISSION_SWITCH( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_SWITCH, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_SWITCH, ), APP_RATIONALE_LINK( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_RATIONALE_LINK, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_RATIONALE_LINK, ), } /** Loggable elements in the Request Combined Additional Permissions page. */ enum class RequestCombinedAdditionalPermissionsElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, ), CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_COMBINED_ADDITIONAL_PERMISSIONS_BUTTON, ), BACKGROUND_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, ), HISTORY_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__HISTORY_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__HISTORY_READ_BUTTON, ), } /** Loggable elements in the Request Background Read permission page. */ enum class RequestBackgroundReadPermissionElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { ALLOW_BACKGROUND_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_BACKGROUND_READ_BUTTON, ), CANCEL_BACKGROUND_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_BACKGROUND_READ_BUTTON, ), } /** Loggable elements in the Request History Read permission page. */ enum class RequestHistoryReadPermissionElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { ALLOW_HISTORY_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, ), CANCEL_HISTORY_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_HISTORY_READ_BUTTON, ), } enum class AdditionalAccessElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { EXERCISE_ROUTES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_BUTTON, ), HISTORY_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_HISTORY_READ_BUTTON, ), BACKGROUND_READ_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__BACKGROUND_READ_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__BACKGROUND_READ_BUTTON, ), EXERCISE_ROUTES_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_CONTAINER, ), EXERCISE_ROUTES_ALLOW_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ALLOW_ALL_BUTTON, ), EXERCISE_ROUTES_ASK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_ASK_BUTTON, ), EXERCISE_ROUTES_DIALOG_DENY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTES_DIALOG_DENY_BUTTON, ), ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, ), ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, ), ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, ), DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_CONTAINER, ), DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_POSITIVE_BUTTON, ), DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DISABLE_EXERCISE_PERMISSION_DIALOG_NEGATIVE_BUTTON, ), } /** Loggable elements in the toolbar. */ enum class ToolbarElement(override val impressionId: Int, override val interactionId: Int) : ElementName { // Represents main menu TOOLBAR_SETTINGS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_SETTINGS_BUTTON, ), TOOLBAR_HELP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_HELP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_HELP_BUTTON, ), // TODO update TOOLBAR_UNITS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, ), // TODO not sure if this will be needed TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__TOOLBAR_OPEN_SOURCE_LICENSE_BUTTON, ), TOOLBAR_DATA_SOURCES_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_SOURCES_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_SOURCES_MENU_BUTTON, ), TOOLBAR_ENTER_DELETION_STATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_DELETION_STATE_MENU_BUTTON, ), TOOLBAR_EXIT_DELETION_STATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXIT_DELETION_STATE_MENU_BUTTON, ), TOOLBAR_DELETE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DELETE_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DELETE_MENU_BUTTON, ), TOOLBAR_ENTER_EMPTY_STATE_SHOW_SYSTEM_MENU( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_EMPTY_STATE_SHOW_SYSTEM_MENU, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_EMPTY_STATE_SHOW_SYSTEM_MENU, ), TOOLBAR_ENTER_EMPTY_STATE_HIDE_SYSTEM_MENU( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_EMPTY_STATE_HIDE_SYSTEM_MENU, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_EMPTY_STATE_HIDE_SYSTEM_MENU, ), TOOLBAR_ENTER_EXISTING_APPS_STATE_SHOW_SYSTEM_MENU( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_EXISTING_APPS_STATE_SHOW_SYSTEM_MENU, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_EXISTING_APPS_STATE_SHOW_SYSTEM_MENU, ), TOOLBAR_ENTER_EXISTING_APPS_STATE_HIDE_SYSTEM_MENU( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTER_EXISTING_APPS_STATE_HIDE_SYSTEM_MENU, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTER_EXISTING_APPS_STATE_HIDE_SYSTEM_MENU, ), } /** Loggable elements in the Entry details page. */ enum class MigrationElement(override val impressionId: Int, override val interactionId: Int) : ElementName { MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_UPDATE_BUTTON, ), MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_UPDATE_NEEDED_CANCEL_BUTTON, ), MIGRATION_PAUSED_CONTINUE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PAUSED_CONTINUE_BUTTON, ), MIGRATION_DONE_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_CONTAINER, ), MIGRATION_DONE_DIALOG_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_DONE_DIALOG_BUTTON, ), MIGRATION_IN_PROGRESS_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_CONTAINER, ), MIGRATION_IN_PROGRESS_DIALOG_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_IN_PROGRESS_DIALOG_BUTTON, ), MIGRATION_PENDING_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTAINER, ), MIGRATION_PENDING_DIALOG_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CANCEL_BUTTON, ), MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_PENDING_DIALOG_CONTINUE_BUTTON, ), MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_CONTAINER, ), MIGRATION_NOT_COMPLETE_DIALOG_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_NOT_COMPLETE_DIALOG_BUTTON, ), MIGRATION_RESUME_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER, ), MIGRATION_RESUME_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_RESUME_BANNER_BUTTON, ), MIGRATION_APP_UPDATE_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BANNER, ), MIGRATION_APP_UPDATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_BUTTON, ), MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON, ), MIGRATION_APP_UPDATE_BANNER_DISMISS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MIGRATION_APP_UPDATE_DISMISS_BUTTON, ), } enum class DataRestoreElement(override val impressionId: Int, override val interactionId: Int) : ElementName { RESTORE_IN_PROGRESS_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_CONTAINER, ), RESTORE_IN_PROGRESS_DIALOG_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_IN_PROGRESS_DIALOG_BUTTON, ), RESTORE_PENDING_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER, ), RESTORE_PENDING_BANNER_UPDATE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON, ), } /** Loggable elements in the Data sources page. */ enum class DataSourcesElement(override val impressionId: Int, override val interactionId: Int) : ElementName { DATA_TYPE_SPINNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TYPE_SPINNER_BUTTON, ), DATA_TOTALS_CARD( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATA_TOTALS_CARD, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATA_TOTALS_CARD, ), APP_SOURCE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_SOURCE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_SOURCE_BUTTON, ), ADD_AN_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ADD_AN_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ADD_AN_APP_BUTTON, ), OPEN_APP_SOURCE_MENU_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__OPEN_APP_SOURCE_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__OPEN_APP_SOURCE_MENU_BUTTON, ), MOVE_APP_SOURCE_DOWN_MENU_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MOVE_APP_SOURCE_DOWN_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MOVE_APP_SOURCE_DOWN_MENU_BUTTON, ), MOVE_APP_SOURCE_UP_MENU_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MOVE_APP_SOURCE_UP_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MOVE_APP_SOURCE_UP_MENU_BUTTON, ), REMOVE_APP_SOURCE_MENU_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_APP_SOURCE_MENU_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_APP_SOURCE_MENU_BUTTON, ), } /** Loggable elements in the Add an app page. */ enum class AddAnAppElement(override val impressionId: Int, override val interactionId: Int) : ElementName { POTENTIAL_PRIORITY_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__POTENTIAL_PRIORITY_APP_BUTTON, ) } enum class RouteRequestElement(override val impressionId: Int, override val interactionId: Int) : ElementName { EXERCISE_ROUTE_REQUEST_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_CONTAINER, ), EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_INFORMATION_BUTTON, ), EXERCISE_ROUTE_DIALOG_ROUTE_VIEW( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ROUTE_VIEW, ), EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALLOW_BUTTON, ), EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_ALWAYS_ALLOW_BUTTON, ), EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_DIALOG_DONT_ALLOW_BUTTON, ), EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_CONTAINER, ), EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXERCISE_ROUTE_EDUCATION_DIALOG_BACK_BUTTON, ), } /** Loggable elements in the Backup and restore page */ enum class BackupAndRestoreElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { SCHEDULED_EXPORT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SCHEDULED_EXPORT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SCHEDULED_EXPORT_BUTTON, ), RESTORE_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RESTORE_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RESTORE_DATA_BUTTON, ), IMPORT_GENERAL_ERROR_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER, ), IMPORT_GENERAL_ERROR_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_GENERAL_ERROR_BANNER_BUTTON, ), IMPORT_VERSION_MISMATCH_ERROR_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER, ), IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_VERSION_MISMATCH_ERROR_BANNER_BUTTON, ), IMPORT_WRONG_FILE_ERROR_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER, ), IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_WRONG_FILE_ERROR_BANNER_BUTTON, ), } /** Loggable elements in the Export frequency page */ enum class ExportFrequencyElement(override val impressionId: Int, override val interactionId: Int) : ElementName { EXPORT_FREQUENCY_DAILY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_DAILY_BUTTON, ), EXPORT_FREQUENCY_WEEKLY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_WEEKLY_BUTTON, ), EXPORT_FREQUENCY_MONTHLY_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_MONTHLY_BUTTON, ), EXPORT_FREQUENCY_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_BACK_BUTTON, ), EXPORT_FREQUENCY_NEXT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, ), } /** Loggable elements in the Export destination page */ enum class ExportDestinationElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { EXPORT_DESTINATION_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_DESTINATION_BACK_BUTTON, ), EXPORT_DESTINATION_NEXT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_FREQUENCY_NEXT_BUTTON, ), } /** Loggable elements in the Scheduled export fragment page */ enum class ScheduledExportElement(override val impressionId: Int, override val interactionId: Int) : ElementName { EXPORT_CONTROL_SWITCH_ON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_ON, ), EXPORT_CONTROL_SWITCH_OFF( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_CONTROL_SWITCH_OFF, ), EXPORT_SETTINGS_FREQUENCY_DAILY( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_DAILY, ), EXPORT_SETTINGS_FREQUENCY_WEEKLY( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_WEEKLY, ), EXPORT_SETTINGS_FREQUENCY_MONTHLY( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__EXPORT_SETTINGS_FREQUENCY_MONTHLY, ), } /** Loggable elements in the Import source location page */ enum class ImportSourceLocationElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { IMPORT_SOURCE_LOCATION_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_CANCEL_BUTTON, ), IMPORT_SOURCE_LOCATION_NEXT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_SOURCE_LOCATION_NEXT_BUTTON, ), } /** Loggable elements in the Import confirmation dialog page */ enum class ImportConfirmationDialogElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { IMPORT_CONFIRMATION_CANCEL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CANCEL_BUTTON, ), IMPORT_CONFIRMATION_DONE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_DONE_BUTTON, ), IMPORT_CONFIRMATION_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__IMPORT_CONFIRMATION_CONTAINER, ), } /** Loggable elements in the AllData page */ enum class AllDataElement(override val impressionId: Int, override val interactionId: Int) : ElementName { PERMISSION_TYPE_BUTTON_WITH_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, ), PERMISSION_TYPE_BUTTON_NO_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, ), SELECT_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, ), } /** Loggable elements in the AllEntries and AppEntries page */ enum class EntriesElement(override val impressionId: Int, override val interactionId: Int) : ElementName { ENTRY_BUTTON_WITH_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_WITH_CHECKBOX, ), ENTRY_BUTTON_NO_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ENTRY_BUTTON_NO_CHECKBOX, ), DATE_VIEW_SPINNER_DAY( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_DAY, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_DAY, ), DATE_VIEW_SPINNER_WEEK( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_WEEK, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_WEEK, ), DATE_VIEW_SPINNER_MONTH( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__DATE_VIEW_SPINNER_YEAR, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__DATE_VIEW_SPINNER_YEAR, ), SELECT_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, ), } /** Loggable elements in the AppData page */ enum class AppDataElement(override val impressionId: Int, override val interactionId: Int) : ElementName { PERMISSION_TYPE_BUTTON_WITH_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_WITH_CHECKBOX, ), PERMISSION_TYPE_BUTTON_NO_CHECKBOX( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PERMISSION_TYPE_BUTTON_NO_CHECKBOX, ), SELECT_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__SELECT_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__SELECT_ALL_BUTTON, ), } enum class CombinedAppAccessElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { FITNESS_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_PERMISSIONS_BUTTON, ), MEDICAL_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MEDICAL_PERMISSIONS_BUTTON, ), REMOVE_ALL_PERMISSIONS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__REMOVE_ALL_PERMISSIONS_BUTTON, ), } /** Loggable elements belonging to the RawFhirPage. */ enum class RawFhirPageElement(override val impressionId: Int, override val interactionId: Int) : ElementName { RAW_FHIR_RESOURCE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__RAW_FHIR_RESOURCE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__RAW_FHIR_RESOURCE, ) } /** Loggable elements belonging to the PrettyFhirPage. */ enum class PrettyFhirPageElement(override val impressionId: Int, override val interactionId: Int) : ElementName { PRETTY_FHIR_VIEW_SOURCE_DATA_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRETTY_FHIR_VIEW_SOURCE_DATA_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRETTY_FHIR_VIEW_SOURCE_DATA_BUTTON, ), PRETTY_FHIR_HEADER_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRETTY_FHIR_HEADER_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRETTY_FHIR_HEADER_CONTAINER, ), PRETTY_FHIR_GROUP_CONTAINER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__PRETTY_FHIR_GROUP_CONTAINER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__PRETTY_FHIR_GROUP_CONTAINER, ), } /** Loggable elements belonging to MedicalWritePermissionFragment elements. */ enum class MedicalWritePermissionPageElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { ALLOW_WRITE_HEALTH_RECORDS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ALLOW_WRITE_HEALTH_RECORDS_BUTTON, ), CANCEL_WRITE_HEALTH_RECORDS_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CANCEL_WRITE_HEALTH_RECORDS_BUTTON, ), } enum class CommonOnboardingPageElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { MORE_ABOUT_HEALTH_CONNECT_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__MORE_ABOUT_HEALTH_CONNECT_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__MORE_ABOUT_HEALTH_CONNECT_BUTTON, ), APP_WITH_ONBOARDING_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_WITH_ONBOARDING_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_WITH_ONBOARDING_BUTTON, ), APP_WITHOUT_ONBOARDING_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__APP_WITHOUT_ONBOARDING_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__APP_WITHOUT_ONBOARDING_BUTTON, ), } enum class ConnectTwoAppsOnboardingPageElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { CONNECT_FIRST_TWO_APPS_ONBOARDING_SET_UP_LATER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECT_FIRST_TWO_APPS_ONBOARDING_SET_UP_LATER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECT_FIRST_TWO_APPS_ONBOARDING_SET_UP_LATER_BUTTON, ) } enum class ConnectSecondAddOnboardingPageElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { // TODO (b/417206188) update when new atom merged CONNECTED_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECT_SECOND_APP_ONBOARDING_SET_UP_LATER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECT_SECOND_APP_ONBOARDING_SET_UP_LATER_BUTTON, ), CONNECT_SECOND_APP_ONBOARDING_SET_UP_LATER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__CONNECT_SECOND_APP_ONBOARDING_SET_UP_LATER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__CONNECT_SECOND_APP_ONBOARDING_SET_UP_LATER_BUTTON, ), } enum class AlmostDonePageElement(override val impressionId: Int, override val interactionId: Int) : ElementName { ONBOARDING_APP_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_APP_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_APP_BUTTON, ), ONBOARDING_DONE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ONBOARDING_DONE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ONBOARDING_DONE_BUTTON, ), } enum class FitnessAppOnboardingPageElement( override val impressionId: Int, override val interactionId: Int, ) : ElementName { FITNESS_APP_ONBOARDING_BACK_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_BACK_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_BACK_BUTTON, ), FITNESS_APP_ONBOARDING_DONE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_DONE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_DONE_BUTTON, ), FITNESS_APP_ONBOARDING_ALLOW_ALL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_ALLOW_ALL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_ALLOW_ALL_BUTTON, ), FITNESS_APP_ONBOARDING_PERMISSION_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_PERMISSION_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_PERMISSION_BUTTON, ), FITNESS_APP_ONBOARDING_LEARN_MORE_LINK( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_LEARN_MORE_LINK, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_LEARN_MORE_LINK, ), FITNESS_APP_ONBOARDING_PRIVACY_POLICY_LINK( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__FITNESS_APP_ONBOARDING_PRIVACY_POLICY_LINK, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__FITNESS_APP_ONBOARDING_PRIVACY_POLICY_LINK, ), } /** Loggable elements belonging to the error page, and the unknown element. */ enum class ErrorPageElement(override val impressionId: Int, override val interactionId: Int) : ElementName { UNKNOWN_ELEMENT( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__ELEMENT_UNKNOWN, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__ELEMENT_UNKNOWN, ) } /** Loggable elements belonging to any page with unknown elements. */ enum class UnknownGenericElement(override val impressionId: Int, override val interactionId: Int) : ElementName { UNKNOWN_BANNER( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER, ), UNKNOWN_BANNER_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BANNER_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BANNER_BUTTON, ), UNKNOWN_HEALTH_PREFERENCE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_HEALTH_PREFERENCE, ), UNKNOWN_DIALOG( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG, ), UNKNOWN_DIALOG_POSITIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_POSITIVE_BUTTON, ), UNKNOWN_DIALOG_NEGATIVE_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEGATIVE_BUTTON, ), UNKNOWN_DIALOG_NEUTRAL_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_DIALOG_NEUTRAL_BUTTON, ), UNKNOWN_SWITCH_ACTIVE_PREFERENCE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_ACTIVE_PREFERENCE, ), UNKNOWN_SWITCH_INACTIVE_PREFERENCE( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_SWITCH_INACTIVE_PREFERENCE, ), UNKNOWN_BUTTON( HEALTH_CONNECT_UI_IMPRESSION__ELEMENT__UNKNOWN_BUTTON, HEALTH_CONNECT_UI_INTERACTION__ELEMENT__UNKNOWN_BUTTON, ), } @EntryPoint @InstallIn(SingletonComponent::class) interface HealthConnectLoggerEntryPoint { fun logger(): HealthConnectLogger }