diff options
79 files changed, 4905 insertions, 311 deletions
@@ -12,4 +12,4 @@ yaochen@google.com per-file settings_enums.proto=edgarwang@google.com # Adservices -per-file adservices_enums.proto=binhnguyen@google.com
\ No newline at end of file +per-file adservices_enums.proto=binhnguyen@google.com,pdevpura@google.com diff --git a/stats/Android.bp b/stats/Android.bp index ebff2532..bf28866a 100644 --- a/stats/Android.bp +++ b/stats/Android.bp @@ -23,9 +23,11 @@ package { enum_protos = [ "enums/adservices/common/*.proto", + "enums/adservices/enrollment/*.proto", "enums/adservices/fledge/*.proto", - "enums/anr/*.proto", "enums/adservices/measurement/*.proto", + "enums/anr/*.proto", + "enums/apex/*.proto", "enums/app/**/*.proto", "enums/autofill/**/*.proto", "enums/contexthub/*.proto", @@ -33,6 +35,7 @@ enum_protos = [ "enums/debug/*.proto", "enums/display/*.proto", "enums/dnd/*.proto", + "enums/federatedcompute/*.proto", "enums/hardware/**/*.proto", "enums/healthfitness/**/*.proto", "enums/hotword/*.proto", @@ -73,9 +76,12 @@ enum_protos = [ "enums/telephony/*.proto", "enums/telephony/qns/*.proto", "enums/telephony/satellite/*.proto", + "enums/transparency/*.proto", "enums/uwb/*.proto", "enums/view/**/*.proto", + "enums/wear/connectivity/*.proto", "enums/wear/media/*.proto", + "enums/wear/modes/*.proto", "enums/wifi/*.proto", ":data_stall_event_proto", ":device_policy_proto", @@ -95,8 +101,10 @@ atom_protos = [ "attribution_node.proto", "atoms/adpf/*.proto", "atoms/agif/*.proto", + "atoms/apex/*.proto", "atoms/aiwallpapers/*.proto", "atoms/art/*.proto", + "atoms/appsearch/*.proto", "atoms/bluetooth/*.proto", "atoms/corenetworking/**/*.proto", "atoms/autofill/*.proto", @@ -110,6 +118,7 @@ atom_protos = [ "atoms/gps/*.proto", "atoms/grammaticalinflection/*.proto", "atoms/hardware/biometrics/*.proto", + "atoms/hdmi/*.proto", "atoms/healthfitness/**/*.proto", "atoms/hotword/*.proto", "atoms/ike/*.proto", @@ -120,6 +129,7 @@ atom_protos = [ "atoms/view/inputmethod/*.proto", "atoms/permissioncontroller/*.proto", "atoms/placeholder/*.proto", + "atoms/power/*.proto", "atoms/rkpd/*.proto", "atoms/settings/*.proto", "atoms/sysui/*.proto", @@ -130,8 +140,10 @@ atom_protos = [ "atoms/kernel/*.proto", "atoms/wearservices/*.proto", "atoms/wear/media/*.proto", + "atoms/wear/prototiles/*.proto", "atoms/media/*.proto", "atoms/adservices/*.proto", + "atoms/wear/modes/*.proto", "atoms/wearpas/*.proto", "atoms/statsd/*.proto", "atoms/telecomm/*.proto", @@ -142,8 +154,15 @@ atom_protos = [ "atoms/telephony/satellite/*.proto", "atoms/automotive/caruilib/*.proto", "atoms/uwb/*.proto", + "atoms/ondevicepersonalization/*.proto", + "atoms/federatedcompute/*.proto", + "atoms/wear/connectivity/*.proto", + "atoms/devicelock/*.proto", + "atoms/cpu/*.proto", "atoms/sdksandbox/*.proto", "atoms/threadnetwork/*.proto", + "atoms/automotive/carlauncher/*.proto", + "atoms/transparency/*.proto", ] cc_library_host_shared { diff --git a/stats/TEST_MAPPING b/stats/TEST_MAPPING new file mode 100644 index 00000000..468045c7 --- /dev/null +++ b/stats/TEST_MAPPING @@ -0,0 +1,15 @@ +{ + "presubmit": [ + { + "name": "stats-log-api-gen-test" + }, + { + "name": "VendorAtomCodeGenJavaTest", + "options": [ + { + "exclude-annotation": "org.junit.Ignore" + } + ] + } + ] +} diff --git a/stats/atoms.proto b/stats/atoms.proto index 02e748ae..4cd8d309 100644 --- a/stats/atoms.proto +++ b/stats/atoms.proto @@ -44,8 +44,8 @@ import "frameworks/proto_logging/stats/atoms/usb/usb_atoms.proto"; import "frameworks/proto_logging/stats/atoms/view/inputmethod/inputmethod_atoms.proto"; import "frameworks/proto_logging/stats/atom_field_options.proto"; import "frameworks/proto_logging/stats/enums/adservices/fledge/enums.proto"; -import "frameworks/proto_logging/stats/enums/anr/enums.proto"; import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto"; +import "frameworks/proto_logging/stats/enums/anr/enums.proto"; import "frameworks/proto_logging/stats/enums/app/enums.proto"; import "frameworks/proto_logging/stats/enums/app/job/enums.proto"; import "frameworks/proto_logging/stats/enums/app/remoteprovisioner_enums.proto"; @@ -109,6 +109,7 @@ import "frameworks/proto_logging/stats/enums/stats/wm/enums.proto"; import "frameworks/proto_logging/stats/enums/system/security/keystore2/enums.proto"; import "frameworks/proto_logging/stats/enums/telecomm/enums.proto"; import "frameworks/proto_logging/stats/enums/telephony/enums.proto"; +import "frameworks/proto_logging/stats/enums/transparency/enums.proto"; import "frameworks/proto_logging/stats/enums/uwb/enums.proto"; import "frameworks/proto_logging/stats/enums/view/enums.proto"; import "frameworks/proto_logging/stats/enums/wifi/enums.proto"; @@ -160,8 +161,9 @@ message Atom { 14 [(module) = "framework"]; MemoryFactorStateChanged memory_factor_state_changed = 15 [(module) = "framework"]; ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16 [(module) = "framework"]; - CachedKillReported cached_kill_reported = 17 [(module) = "framework"]; - ProcessMemoryStatReported process_memory_stat_reported = 18 [(module) = "framework"]; + CachedKillReported cached_kill_reported = 17 [(module) = "framework", deprecated = true]; + ProcessMemoryStatReported process_memory_stat_reported = + 18 [(module) = "framework", deprecated = true]; sysui.LauncherUIChanged launcher_event = 19 [(module) = "sysui"]; BatterySaverModeStateChanged battery_saver_mode_state_changed = 20 [(module) = "framework", (module) = "statsdtest"]; @@ -212,7 +214,6 @@ message Atom { AppStartMemoryStateCaptured app_start_memory_state_captured = 55 [(module) = "framework"]; ShutdownSequenceReported shutdown_sequence_reported = 56 [(module) = "framework"]; BootSequenceReported boot_sequence_reported = 57; - DaveyOccurred davey_occurred = 58 [deprecated = true]; OverlayStateChanged overlay_state_changed = 59 [(module) = "framework", (module) = "statsdtest"]; ForegroundServiceStateChanged foreground_service_state_changed @@ -658,7 +659,6 @@ message Atom { PrivacyToggleDialogInteraction privacy_toggle_dialog_interaction = 382 [(module) = "framework"]; AppSearchOptimizeStatsReported app_search_optimize_stats_reported = 383 [(module) = "appsearch"]; NonA11yToolServiceWarningReported non_a11y_tool_service_warning_report = 384 [(module) = "framework"]; - AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported = 385 [(module) = "appsearch"]; AppCompatStateChanged app_compat_state_changed = 386 [(module) = "framework"]; SizeCompatRestartButtonEventReported size_compat_restart_button_event_reported = 387 [(module) = "framework"]; SplitscreenUIChanged splitscreen_ui_changed = 388 [(module) = "framework"]; @@ -906,8 +906,6 @@ message Atom { hardware.biometrics.BiometricTouchReported biometric_touch_reported = 577 [(module) = "sysui"]; hotword.HotwordAudioEgressEventReported hotword_audio_egress_event_reported = 578 [(module) = "framework"]; - AppSearchSchemaMigrationStatsReported - app_search_schema_migration_stats_reported = 579 [(module) = "appsearch"]; location.LocationEnabledStateChanged location_enabled_state_changed = 580 [(module) = "framework"]; view.inputmethod.ImeRequestFinished ime_request_finished = 581 [(module) = "framework"]; usb.UsbComplianceWarningsReported usb_compliance_warnings_reported = 582 [(module) = "framework"]; @@ -932,19 +930,21 @@ message Atom { corenetworking.connectivity.NetworkValidationFailureStatsDailyReported network_validation_failure_stats_daily_reported = 601 [(module) = "connectivity"]; wearservices.WsComplicationTapped ws_complication_tapped = 602 [(module) = "wearservices"]; - wearservices.WsWearTimeSession ws_wear_time_session = 610 [(module) = "wearservices"]; + wearservices.WsNotificationBlocking ws_notification_blocking = 780 [(module) = "wearservices"]; } // Pushed atom extensions. // The atom definitions are under atoms/<feature>/<feature>_extension_atoms.proto extensions 332; // ArtDatumReported art_datum_reported extensions 366; // OdrefreshReported odrefresh_reported + extensions 385; // AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported extensions 467; // BackgroundDexoptJobEnded background_dexopt_job_ended extensions 488; // SandboxApiCalled sandbox_api_called extensions 528; // ExpressEventReported express_event_reported extensions 548; // OdsignReported odsign_reported extensions 550; // ArtDeviceDatumReported art_device_datum_reported extensions 565; // ArtDatumDeltaReported art_datum_delta_reported + extensions 579; // AppSearchSchemaMigrationStatsReported app_search_schema_migration_stats_reported extensions 585; // CredentialManagerApiCalled credential_manager_api_called extensions 593; // ExpressHistogramSampleReported express_histogram_sample_reported extensions 598; // AdServicesBackCompatGetTopicsReported ad_services_back_compat_get_topics_reported @@ -957,6 +957,7 @@ message Atom { extensions 607; // AutofillSessionCommitted autofill_session_committed extensions 608; // MediaActionReported media_action_reported extensions 609; // MediaControlsLaunched media_controls_launched + extensions 610; // WsWearTimeSession ws_wear_time_session extensions 611; // LockscreenShortcutSelected lockscreen_shortcut_selected extensions 612; // LockscreenShortcutTriggered lockscreen_shortcut_triggered extensions 613; // BluetoothHashedDeviceNameReported bluetooth_hashed_device_name_reported @@ -1041,8 +1042,13 @@ message Atom { extensions 692; // WifiLocalOnlyRequestReceived wifi_local_only_request_received extensions 693; // WifiLocalOnlyRequestScanTriggered wifi_local_only_request_scan_triggered extensions 694; // WifiThreadTaskExecuted wifi_thread_task_executed + extensions 695; // AdServicesMeasurementAdIdMatchForDebugKeys ad_services_ad_id_match_for_debug_keys extensions 696; // BluetoothProfileConnectionAttempted bluetooth_profile_connection_attempted + extensions 697; // AdServicesEnrollmentDataStored ad_services_enrollment_data_stored + extensions 698; // AdServicesEnrollmentFileDownloaded ad_services_enrollment_file_downloaded + extensions 699; // AdServicesEnrollmentMatched ad_services_enrollment_matched extensions 700; // WifiStateChanged wifi_state_changed + extensions 701; // HdmiEarcStatusReported hdmi_earc_status_reported extensions 702; // AdServicesConsentMigrated ad_services_consent_migrated extensions 703; // CronetEngineCreated cronet_engine_created extensions 704; // CronetTrafficReported cronet_traffic_reported @@ -1052,19 +1058,72 @@ message Atom { extensions 708; // AiWallpapersTermSelected ai_wallpapers_term_selected extensions 709; // AiWallpapersWallpaperSet ai_wallpapers_wallpaper_set extensions 710; // AiWallpapersSessionSummary ai_wallpapers_session_summary + extensions 711; // OnDevicePersonalizationApiCalled ondevicepersonalization_api_called + extensions 712; // FederatedComputeApiCalled federated_compute_api_called + extensions 713; // CellularRadioPowerStateChanged cellular_radio_power_state_changed + extensions 714; // AdServicesEnrollmentFailed ad_services_enrollment_failed + extensions 715; // WearModeStateChanged wear_mode_state_changed extensions 716; // LauncherImpressionEventV2 launcher_impression_event_v2 + extensions 717; // ExternalTvInputEvent external_tv_input_event extensions 718; // StylusPredictionMetricsReported stylus_prediction_metrics_reported + extensions 719; // PnoScanStarted pno_scan_started + extensions 720; // PnoScanStopped pno_scan_stopped + extensions 721; // MediatorUpdated mediator_updated + extensions 722; // WifiIsUnusableReported wifi_is_unusable_reported + extensions 723; // WifiApCapabilitiesReported wifi_ap_capabilities_reported + extensions 724; // HdmiSoundbarModeStatusReported hdmi_soundbar_mode_status_reported + extensions 725; // UserRiskEventReported user_risk_event_reported + extensions 726; // DeviceLockCheckInRequestReported device_lock_check_in_request_reported + extensions 727; // DeviceLockProvisioningCompleteReported device_lock_provisioning_complete_reported + extensions 728; // DeviceLockKioskAppRequestReported device_lock_kiosk_app_request_reported extensions 729; // MediaProjectionStateChanged media_projection_state_changed extensions 730; // MediaProjectionTargetChanged media_projection_target_changed + extensions 731; // WearPowerMenuOpened wear_power_menu_opened + extensions 732; // ApexInstallationRequested apex_installation_requested + extensions 733; // ApexInstallationStaged apex_installation_staged + extensions 734; // ApexInstallationEnded apex_installation_ended extensions 735; // SandboxActivityEventOccurred sandbox_activity_event_occurred + extensions 736; // RendererInitialized renderer_initialized + extensions 737; // SchemaVersionReceived schema_version_received extensions 738; // ThreadnetworkTelemetryDataReported threadnetwork_telemetry_data_reported extensions 739; // ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated extensions 740; // ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported + extensions 741; // LayoutInspected layout_inspected + extensions 742; // LayoutExpressionsInspected layout_expression_inspected + extensions 743; // LayoutAnimationsInspected layout_animations_inspected + extensions 744; // MaterialComponentsInspected material_components_inspected + extensions 745; // TileRequested tile_requested + extensions 746; // StateResponseReceived state_response_received + extensions 747; // TileResponseReceived tile_response_received + extensions 748; // InflationFinished inflation_finished + extensions 749; // InflationFailed inflation_failed + extensions 750; // IgnoredInflationFailuresReported ignored_inflation_failures_reported + extensions 751; // DrawableRendered drawable_rendered extensions 752; // StatsSocketLossReported stats_socket_loss_reported + extensions 753; // DisplaySwitchLatencyTracked display_switch_latency_tracked + extensions 754; // KernelOomKillOccurred kernel_oom_kill_occurred + extensions 755; // WearAssistantOpened wear_assistant_opened + extensions 756; // AdServicesMeasurementClickVerification ad_services_measurement_click_verification + extensions 757; // WearMediaOutputSwitcherDeviceScanApiLatency wear_media_output_switcher_device_scan_api_latency + extensions 758; // WearMediaOutputSwitcherSassDeviceUnavailable wear_media_output_switcher_sass_device_unavailable + extensions 759; // WearMediaOutputSwitcherFastPairApiTimeout wear_media_output_switcher_fastpair_api_timeout extensions 760; // IkeLivenessCheckSessionValidated ike_liveness_check_session_validated + extensions 761; // HotwordEventEgressSize hotword_egress_size_atom_reported extensions 762; // CronetEngineBuilderInitialized cronet_engine_builder_initialized extensions 763; // CronetHttpFlagsInitialized cronet_http_flags_initialized extensions 764; // CronetInitialized cronet_initialized + extensions 765; // AdServicesEncryptionKeyFetched ad_services_encryption_key_fetched + extensions 766; // AdServicesEncryptionKeyDbTransactionEnded ad_services_encryption_key_db_transaction_ended + extensions 767; // DestinationRegisteredBeacons destination_registered_beacons + extensions 768; // ReportInteractionApiCalled report_interaction_api_called + extensions 769; // InteractionReportingTableCleared interaction_reporting_table_cleared + extensions 770; // CarRecentsEventReported car_recents_event_reported + extensions 771; // FederatedComputeTrainingEventReported federated_compute_training_event_reported + extensions 772; // ThermalStatusCalled thermal_status_called + extensions 773; // ThermalHeadroomCalled thermal_headroom_called + extensions 774; // ThermalHeadroomThresholdsCalled thermal_headroom_thresholds_called + extensions 775; // BootIntegrityInfoReported boot_integrity_info_reported + extensions 776; // ScreenOffReported screen_off_reported extensions 777; // ApfSessionInfoReported apf_session_info_reported extensions 778; // IpClientRaInfoReported ip_client_ra_info_reported extensions 779; // NetworkRequestStateChanged network_request_state_changed @@ -1306,13 +1365,24 @@ message Atom { extensions 10191; // TouchpadUsage touchpad_usage extensions 10192; // DreamSettingSnapshot dream_setting_snapshot extensions 10193; // WifiModuleInfo wifi_module_info + extensions 10194; // WifiSettingInfo wifi_setting_info + extensions 10195; // WifiComplexSettingInfo wifi_complex_setting_info + extensions 10196; // SysproxyBluetoothBytesTransfer sysproxy_bluetooth_bytes_transfer + extensions 10197; // WsStandaloneModeSnapshot ws_standalone_mode_snapshot + extensions 10198; // WifiConfiguredNetworkInfo wifi_configured_network_info; + extensions 10199; // CpuPolicy cpu_policy + extensions 10200; // ProxyBytesTransferByFgBg proxy_bytes_transfer_by_fg_bg + extensions 10201; // ThermalHeadroomThresholds thermal_headroom_thresholds + extensions 10202; // Reserved for b/308823939. + extensions 10203; // Reserved for b/308823939. + extensions 10204; // Reserved for b/309512867. extensions 10205; // ArtDeviceStatus art_device_status extensions 99999; // Atom99999 atom_99999 // DO NOT USE field numbers above 100,000 in AOSP. // Field numbers 100,000 - 199,999 are reserved for non-AOSP (e.g. OEMs) to use. // Field numbers 200,000 and above are reserved for future use; do not use them at all. - reserved 83, 360 to 363, 492, 597, 10008, 10036, 10040, 10041, 21004, 21005; + reserved 58, 83, 360 to 363, 492, 597, 10008, 10036, 10040, 10041, 21004, 21005; } /* @@ -1331,9 +1401,8 @@ message Atom { * underscore_separated name as defined in Atom. * - If an atom represents work that can be attributed to an app, there can * be exactly one AttributionChain field. It must be field number 1. - * - A field that is a uid should be a string field, tagged with the [xxx] - * annotation. The generated code on android will be represented by UIDs, - * and those UIDs will be translated in xxx to those strings. + * - A field that is a uid should be an int32 field, tagged with the + * [(is_uid) = true] annotation. * * CONVENTIONS: * - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange. @@ -1517,7 +1586,7 @@ message ProcessState { optional int32 fgs_seconds = 7; optional int32 bound_top_seconds = 8; optional int32 bound_fgs_seconds = 9; - optional int32 important_foreground_seconds = 10; + optional int32 important_fg_bg_seconds = 10; optional int32 cached_seconds = 11; optional int32 frozen_seconds = 12; optional int32 other_seconds = 13; @@ -1656,6 +1725,14 @@ message WifiHealthStatReported { optional int32 tx_kbps = 6 [default = -1]; // estimated rx throughput in kbps optional int32 rx_kbps = 7 [default = -1]; + // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for + // AOSP scorer. + optional int32 scorer_uid = 8; + // Whether or not Wi-Fi is predicted as usable by the scorer + // Note: 'is_wifi_predicted_as_usable' is deprectaed by 'wifi_predicted_usability_state'. + optional bool is_wifi_predicted_as_usable = 9; + // Wi-Fi usability state as predicted by the scorer + optional android.net.wifi.WifiPredictedUsabilityState wifi_predicted_usability_state = 10; } /** @@ -1749,6 +1826,21 @@ message WifiConnectionResultReported { optional bool is_oob_pseudonym_enabled = 11; // The client mode role for the connection, can use to determine the connection type. optional android.net.wifi.ClientModeRole role = 12; + // The status code specific to each failure code. + // - For FAILURE_ASSOCIATION_REJECTION, the value should be one of + // SupplicantStaIfaceHal.StaIfaceStatusCode. + // - For FAILURE_NETWORK_DISCONNECTION, the value should be + // one of SupplicantStaIfaceHal.StaIfaceReasonCode. + // - For FAILURE_AUTHENTICATION_EAP, the value should be a EAP failure code. + // For all other failure codes, this should be 0. + optional int32 failure_specific_status_code = 13; + // Information only applicable for EAP networks. + optional android.net.wifi.EapType eap_type = 14; + optional android.net.wifi.EapInnerMethod eap_inner_method = 15; + optional android.net.wifi.RoamingType passpoint_roaming_type = 16; + // carrier ID of the network + optional int32 carrier_id = 17; + optional android.net.wifi.TofuConfiguration tofu_configuration = 18; } /** @@ -1832,6 +1924,40 @@ message WifiDisconnectReported { SUPPLICANT_DISCONNECTED = 10002; CONNECTING_WATCHDOG_TIMER = 10003; ROAM_WATCHDOG_TIMER = 10004; + + // New reasons tracking disconnections initiated by wifi framework + DISCONNECT_GENERAL = 10005; // Framework disconnect, generic reason + // Disconnecting due to unspecified IP reachability lost. + DISCONNECT_NUD_FAILURE_GENERIC = 10006; + // Disconnecting due to IP reachability lost from roaming + DISCONNECT_NUD_FAILURE_ROAM = 10007; + // Disconnecting due to IP reachability lost from the CONFIRM command + DISCONNECT_NUD_FAILURE_CONFIRM = 10008; + // Disconnecting due to IP reachability lost from kernel check + DISCONNECT_NUD_FAILURE_ORGANIC = 10009; + // Connectivity no longer wants this network + DISCONNECT_UNWANTED_BY_CONNECTIVITY = 10010; + // Timeout creating the IP client + DISCONNECT_CREATE_IP_CLIENT_TIMEOUT = 10011; + DISCONNECT_IP_PROVISIONING_FAILURE = 10012; // IP provisioning failure + DISCONNECT_P2P_REQUESTED_DISCONNECT = 10013; // Disconnect by P2P + // Network is removed from the WifiConfigManager + DISCONNECT_NETWORK_REMOVED = 10014; + DISCONNECT_NETWORK_UNTRUSTED = 10015; // Network is marked as untrusted + DISCONNECT_NETWORK_METERED = 10016; // Network is marked as metered + DISCONNECT_TEMP_DISABLED = 10017; // Network is temporarily disabled + DISCONNECT_PERM_DISABLED = 10018; // Network is permanently disabled + DISCONNECT_CARRIER_OFFLOAD_DISABLED = 10019; + // Disconnecting due to Passpoint terms and conditions page + DISCONNECT_PASSPOINT_TAC = 10020; + // Disconnecting due to issues with terms and conditions URL + DISCONNECT_VNC_REQUEST = 10021; + // Connected to a network that is already removed + DISCONNECT_UNKNOWN_NETWORK = 10022; + // User initiated a new connection + DISCONNECT_NEW_CONNECTION_USER = 10023; + // New connection triggered by non-user + DISCONNECT_NEW_CONNECTION_OTHERS = 10024; } // How long the session lasted from successful connection to disconnect. @@ -1851,6 +1977,26 @@ message WifiDisconnectReported { // Last seen link speed before the disconnect. optional int32 last_link_speed = 6; + + // Time since the last RSSI and link speed update. + // Useful for filtering out very old data + optional int32 time_since_last_rssi_poll_seconds = 7; + + // Time from the last NETWORK_CONNECTION_EVENT to the disconnect + optional int32 connected_time_since_last_roam_seconds = 8; + + // The purpose the of the connection + optional android.net.wifi.ClientModeRole role = 9; + + // The type of EAP authentication. Only applicable for EAP networks. + optional android.net.wifi.EapType eap_type = 10; + + optional android.net.wifi.EapInnerMethod eap_inner_method = 11; + + optional android.net.wifi.RoamingType passpoint_roaming_type = 12; + + // Carrier id of the network. + optional int32 carrier_id = 13; } /** @@ -2333,6 +2479,26 @@ message ScheduledJobStateChanged { // Hash of the namespace set via JobScheduler.forNamespace(String). optional string namespace_hash = 40; + + // System estimated/measured bytes that the job + // downloaded over its runtime. Only valid for FINISHED + // state. We measure here for the SOURCE UID + optional int64 system_measured_source_download_bytes = 41; + + // System estimated/measured uploaded bytes that the job + // uploaded over its runtime. Only valid for FINISHED + // state. We measure here for the SOURCE UID + optional int64 system_measured_source_upload_bytes = 42; + + // System estimated/measured bytes that the job + // downloaded over its runtime. Only valid for FINISHED + // state. We measure here for the CALLING UID + optional int64 system_measured_calling_download_bytes = 43; + + // System estimated/measured uploaded bytes that the job + // uploaded over its runtime. Only valid for FINISHED + // state. We measure here for the CALLING UID + optional int64 system_measured_calling_upload_bytes = 44; } /** @@ -4426,20 +4592,6 @@ message ThermalThrottlingSeverityStateChanged { } /** - * Logs the duration of a davey (jank of >=700ms) when it occurs - * - * Logged from: - * frameworks/base/libs/hwui/JankTracker.cpp - */ -message DaveyOccurred { - // The UID that logged this atom. - optional int32 uid = 1 [(is_uid) = true]; - - // Amount of time it took to render the frame. Should be >=700ms. - optional int64 jank_duration_millis = 2; -} - -/** * Logs phone signal strength changes. * * Logged from: @@ -4523,6 +4675,15 @@ message StyleUIChanged { optional int32 color_variant = 20; optional int64 time_elapsed_millis = 21; optional int32 effect_status_code = 22; + optional int32 app_session_id = 23; + optional android.stats.style.SetWallpaperEntryPoint set_wallpaper_entry_point = 24; + optional android.stats.style.WallpaperDestination wallpaper_destination = 25; + optional android.stats.style.ColorSource color_source = 26; + optional int32 seed_color = 27; + optional android.stats.style.ClockSize clock_size = 28; + optional bool toggle_on = 29; + optional string shortcut = 30; + optional string shortcut_slot_id = 31; } /** @@ -5129,6 +5290,9 @@ message AppStartOccurred { // The stopped state (if any) the package was in before the launch optional PackageStoppedState package_stopped_state = 25; + + // Reserved for b/281564325. + reserved 26; } message AppStartCanceled { @@ -7429,13 +7593,15 @@ message BlobOpened{ * Logged from: * frameworks/base/core/java/com/android/internal/jank/FrameTracker.java * - * Next Tag: 9 + * Next Tag: 10 */ message UIInteractionFrameInfoReported { optional android.jank.InteractionType interaction_type = 1; optional android.jank.DisplayResolution display_resolution = 8; + optional android.jank.DisplayRefreshRate display_refresh_rate = 9; + // Number of frames rendered during the interaction. optional int64 total_frames = 2; @@ -9260,8 +9426,24 @@ message BatteryUsageStatsAtomsProto { message UidBatteryConsumer { optional int32 uid = 1 [(is_uid) = true]; optional BatteryConsumerData battery_consumer_data = 2; - optional int64 time_in_foreground_millis = 3; - optional int64 time_in_background_millis = 4; + // DEPRECATED Use time_in_state instead. + optional int64 time_in_foreground_millis = 3 [deprecated = true]; + // DEPRECATED Use time_in_state instead. + optional int64 time_in_background_millis = 4 [deprecated = true]; + + message TimeInState { + enum ProcessState { + UNSPECIFIED = 0; + FOREGROUND = 1; + BACKGROUND = 2; + FOREGROUND_SERVICE = 3; + } + + optional ProcessState process_state = 1; + optional int64 time_in_state_millis = 2; + } + + repeated TimeInState time_in_state = 5; } repeated UidBatteryConsumer uid_battery_consumers = 5; @@ -10679,6 +10861,7 @@ message SplitscreenUIChanged { CHILD_TASK_ENTER_PIP = 9; RECREATE_SPLIT = 10; FULLSCREEN_SHORTCUT = 11; + ENTER_DESKTOP = 12; } // The event action @@ -10963,7 +11146,7 @@ message MediametricsCodecReported { * frameworks/av/media/libstagefright/MediaCodec.cpp * frameworks/av/services/mediaanalytics/statsd_codec.cpp * - * Next Tag: 80 + * Next Tag: 79 */ message MediaCodecReported { optional int64 timestamp_nanos = 1; @@ -13357,157 +13540,6 @@ message AppSearchOptimizeStatsReported { optional int64 native_time_since_last_optimize_millis = 13; } -/** - * Logs detailed stats for setting schema in AppSearch. - * - * stats pushed from: - * frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java - * - * Next tag: 26 - */ -message AppSearchSetSchemaStatsReported { - // The sampling interval for this specific type of stats - // For example, sampling_interval=10 means that one out of every 10 stats was logged. - optional int32 sampling_interval = 1; - - // # of previous skipped sample for this specific type of stats - // We can't push atoms too closely, so some samples might be skipped - // In order to extrapolate the counts, we need to save the number of skipped stats and add it back - // For example, the true count of an event could be estimated as: - // SUM(sampling_interval * (num_skipped_sample + 1)) as est_count - optional int32 num_skipped_sample = 2; - - // Package UID of the application. - optional int32 uid = 3 [(is_uid) = true]; - - // Hash of the database name within AppSearch - optional int32 database = 4; - - // Needs to be sync with AppSearchResult#ResultCode in - // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java - optional int32 status_code = 5; - - // Overall time used for setting schema including the binder latency - optional int32 total_latency_millis = 6; - - // Number of newly added schema types - optional int32 new_type_count = 7; - - // Number of deleted schema types - optional int32 deleted_type_count = 8; - - // Number of compatible schema type changes - optional int32 compatible_type_change_count = 9; - - // Number of index-incompatible schema type changes - optional int32 index_incompatible_type_change_count = 10; - - // Number of backwards-incompatible schema type changes - optional int32 backwards_incompatible_type_change_count = 11; - - // Time used for verifying the incoming call. - optional int32 verify_incoming_call_latency_millis = 12; - - // Time used for creating or waiting the user executor. - optional int32 executor_acquisition_latency_millis = 13; - - // Time used for rebuilding objects from bundles. - optional int32 rebuild_from_bundle_latency_millis = 14; - - // Time passed while waiting to acquire the lock during Java function calls. - optional int32 java_lock_acquisition_latency_millis = 15; - - // Time used for the rewrite schema to proto. - optional int32 rewrite_schema_latency_millis = 16; - - // Overall time used for the native function call. - optional int32 total_native_latency_millis = 17; - - // Time used for the apply visibility settings function call. - optional int32 visibility_setting_latency_millis = 18; - - // Time used for the dispatch change notification function call. - optional int32 dispatch_change_notifications_latency_millis = 19; - - // Time used for the optimization function call. - optional int32 mOptimize_latency_millis = 20; - - /** Whether this package is observed. */ - optional bool is_package_observed = 21; - - /** Time used for the get old schema. */ - optional int32 get_old_schema_latency_millis = 22; - - /** Time used for the get registered observer function call. */ - optional int32 get_observer_latency_millis = 23; - - /** Time used for the preparing change notification action. */ - optional int32 preparing_change_notification_latency_millis = 24; - - // Type of the SetSchema call relative to SchemaMigration case. - // This is in sync with - // packages/modules/AppSearch/service/java/com/android/server/appsearch/external/localstorage/stats/SetSchemaStats.java - optional int32 schema_migration_call_type = 25; -} - -/** - * Logs detailed stats for schema migration in AppSearch. - * - * stats pushed from: - * packages/modules/AppSearch/service/java/com/android/server/appsearch/AppSearchManagerService.java - * - * Next tag: 15 - */ -message AppSearchSchemaMigrationStatsReported { - // The sampling interval for this specific type of stats - // For example, sampling_interval=10 means that one out of every 10 stats was logged. - optional int32 sampling_interval = 1; - - // # of previous skipped sample for this specific type of stats - // We can't push atoms too closely, so some samples might be skipped - // In order to extrapolate the counts, we need to save the number of skipped stats and add it back - // For example, the true count of an event could be estimated as: - // SUM(sampling_interval * (num_skipped_sample + 1)) as est_count - optional int32 num_skipped_sample = 2; - - // Package UID of the application. - optional int32 uid = 3 [(is_uid) = true]; - - // Hash of the database name within AppSearch - optional int32 database = 4; - - // Needs to be sync with AppSearchResult#ResultCode in - // packages/modules/AppSearch/framework/java/external/android/app/appsearch/AppSearchResult.java - optional int32 status_code = 5; - - // Overall time used for setting schema including the binder latency - optional int32 total_latency_millis = 6; - - // Overall time used for getting schema during schema migration - optional int32 schema_migration_get_schema_latency_millis = 7; - - // Overall time used for querying and transforming documents during schema migration - optional int32 schema_migration_query_and_transform_latency_millis = 8; - - // Overall time used for first setSchema during schema migration - optional int32 schema_migration_first_set_schema_latency_millis = 9; - - // Overall time used for second setSchema during schema migration - optional int32 schema_migration_second_set_schema_latency_millis = 10; - - // Overall time used for saving documents during schema migration - optional int32 schema_migration_save_document_latency_millis = 11; - - // Number of document that need to be migrated to another version - optional int32 total_need_migrated_document_count = 12; - - // Number of successfully migrated and saved in Icing - optional int32 total_success_migrated_document_count = 13; - - // Number of migration failure during schema migration - optional int32 schema_migration_failure_count = 14; -} - // Reports information in external/icing/proto/icing/proto/storage.proto#DocumentStorageInfoProto // Next tag: 15 message AppSearchDocumentStorageInfo { @@ -13654,7 +13686,7 @@ message AppSearchStorageInfo { * Reported from: * packages/modules/AppSearch/service/java/com/android/server/appsearch/contactsindexer/ContactsIndexerManagerService.java * - * Next tag: 11 + * Next tag: 18 */ message ContactsIndexerUpdateStatsReported { enum UpdateType { @@ -13698,6 +13730,30 @@ message ContactsIndexerUpdateStatsReported { // Number of old contacts failed to be deleted optional int32 number_of_contacts_delete_failed = 10; + + // Number of old contacts to be deleted that were not found + optional int32 number_of_contacts_delete_not_found = 11; + + // Start timestamp of the update in millis + optional int64 update_start_timestamp_millis = 12; + + // Timestamp of the last full update in millis (not including this update) + optional int64 last_full_update_timestamp_millis = 13; + + // Timestamp of the last delta update in millis (not including this update) + optional int64 last_delta_update_timestamp_millis = 14; + + // Timestamp of the last contact to be updated from CP2 in millis + optional int64 last_contact_updated_timestamp_millis = 15; + + // Timestamp of the last contact to be deleted from CP2 in millis + optional int64 last_contact_deleted_timestamp_millis = 16; + + // The previous update's last_contact_updated_timestamp_millis + // This field is only set for a full update and expected to match + // last_contacted_update_timestamp_millis. If the fields do not match, then we + // were unexpectedly not synced up with CP2 at the time of the update. + optional int64 previous_last_contact_updated_timestamp_millis = 17; } /** @@ -14204,6 +14260,10 @@ message CameraActionEvent { // Whether advanced extensions session is being used optional bool ext_is_advanced = 25; // End: Extension Metrics + + optional bool used_ultrawide = 26; + + optional bool used_zoom_override = 27; } /** @@ -15255,6 +15315,18 @@ message VoiceCallSession { // Handover state of the device optional bool handover_in_progress = 37; + + // When the RAT is IWLAN, if it used cross-SIM calling when call started. + optional bool is_iwlan_cross_sim_at_start = 38; + + // When the RAT is IWLAN, if it used cross-SIM calling when call ended. + optional bool is_iwlan_cross_sim_at_end = 39; + + // When the RAT is IWLAN, if it used cross-SIM calling when call connected. + optional bool is_iwlan_cross_sim_at_connected = 40; + + // Whether Vonr is enabled + optional bool vonr_enabled = 41; } /** @@ -15341,6 +15413,10 @@ message CellularServiceState { // Whether mobile data is enable. optional bool isDataEnabled = 14; + + // When the voice RAT is NETWORK_TYPE_IWLAN, determines whether it is over + // cross-SIM calling (WiFi calling over other SIM's cellular data). + optional bool is_iwlan_cross_sim = 15; } /** @@ -15392,6 +15468,12 @@ message SimSlotState { // Number of active eSIM profiles. // This number is always equal to or less than the number of SIMs. optional int32 esim_count = 3; + + // Number of active eSIM slots in the device. + optional int32 active_esim_slot_count = 4; + + // Number of active slots using Multiple Enabled Profiles in the device. + optional int32 active_mep_slot_count = 5; } /** @@ -15424,6 +15506,8 @@ message DeviceTelephonyProperties { optional int32 auto_data_switch_toggle_count = 3; // True if work profile is enabled on the device optional bool has_managed_profile_dedicated_sub = 4; + // Number of SIM slots with support for Multiple Enabled Profiles on the device + optional int32 mep_supported_slot_count = 5; } /** @@ -15783,6 +15867,10 @@ message DataCallSession { // Whether the call is for internet on nonDDS due to auto data switch feature optional bool is_non_dds = 22; + + // When the 'rat_at_end' field is IWLAN, determines if the data call setup was + // over cross-SIM calling (Wifi calling over cellular data). + optional bool is_iwlan_cross_sim = 23; } /** @@ -15893,6 +15981,10 @@ message ImsRegistrationTermination { // Total number of instances of registration termination that matches the above conditions. optional int32 count = 8; + + // When the 'rat_at_end' field is IWLAN, indicates whether the ImsRegistrationTech is + // REGISTRATION_TECH_CROSS_SIM. + optional bool is_iwlan_cross_sim = 9; } /** @@ -15932,6 +16024,15 @@ message ImsRegistrationStats { optional int32 video_available_seconds = 10; optional int32 ut_capable_seconds = 11; optional int32 ut_available_seconds = 12; + + // Total time IMS was registering (connecting time), rounded to 5 minutes + optional int32 registering_seconds = 13; + // Total time IMS was unregistered (unconnected time), rounded to 5 minutes + optional int32 unregistered_seconds = 14; + + // When the 'rat' field is IWLAN, indicates whether the ImsRegistrationTech is + // REGISTRATION_TECH_CROSS_SIM. + optional bool is_iwlan_cross_sim = 15; } /* @@ -16380,6 +16481,7 @@ message UserLifecycleJourneyReported { PROFILE_MANAGED = 6; SYSTEM_HEADLESS = 7; PROFILE_CLONE = 8; + PROFILE_PRIVATE = 9; } optional UserType user_type = 5; // What are the flags attached to the target user @@ -17938,6 +18040,8 @@ message TlsHandshakeReported { optional int32 handshake_duration_millis = 4; optional android.stats.tls.Source source = 5; + + repeated int32 uid = 6 [(is_uid) = true]; } /** @@ -19153,6 +19257,10 @@ message MediametricsAAudioStreamReported { // Android U // The UID of the client. optional int32 uid = 22 [(is_uid) = true]; + + // Android U + // The sample rate used by the client. + optional int32 sample_rate_client = 23; } /** @@ -21197,6 +21305,10 @@ message PerSimStatus { // Indicates whether VoNR is enabled optional bool vonr_enabled = 18; + + // Indicates whether cross-SIM calling (WiFi calling over cellular data) is + // enabled. + optional bool cross_sim_calling_enabled = 19; } /* @@ -21422,16 +21534,8 @@ message ApexInfoGathered { // we are deprecating the use of this going forward optional string content_digest = 3; - enum DigestAlgorithmType { - UNKNOWN = 0; - CHUNKED_SHA256 = 1; - CHUNKED_SHA512 = 2; - VERITY_CHUNKED_SHA256 = 3; - SHA256 = 4; - } - // the algorithm that the content digest is computed - optional DigestAlgorithmType algo_type = 4; + optional com.android.os.transparency.DigestAlgorithmType algo_type = 4; // the SHA256 digest(s) of the APEX's signer certificate(s) repeated string signer_sha256_digest = 5; @@ -21456,17 +21560,10 @@ message MobileBundledAppInfoGathered { // the split name (empty if it's the base) optional string split_name = 11; - enum DigestAlgorithmType { - UNKNOWN = 0; - CHUNKED_SHA256 = 1; - CHUNKED_SHA512 = 2; - VERITY_CHUNKED_SHA256 = 3; - SHA256 = 4; - } // the hex encoded value of digest of the content of the MBA optional string content_digest = 3; // the algorithm that the content_digest is computed - optional DigestAlgorithmType algo_type = 4; + optional com.android.os.transparency.DigestAlgorithmType algo_type = 4; // the SHA256 digest(s) of the APEX's signer certificate(s) repeated string signer_sha256_digest = 5; @@ -21819,7 +21916,7 @@ message AdServicesEpochComputationClassifierReported { */ message AdServicesApiCalled { // The name of the api that was called. - // Can be classified as one of the three: + // Can be classified as one of the following: // // Targeting // * GetTopics() @@ -21838,6 +21935,7 @@ message AdServicesApiCalled { // * setAppInstallAdvertisers() // * reportInteraction() // * updateAdCounterHistogram() + // * fetchAndJoinCustomAudience() // // Measurement - client side // * register() : SOURCE @@ -21846,12 +21944,17 @@ message AdServicesApiCalled { // * registerWebSource() // * registerWebTrigger() // * getMeasurementApiStatus() + // * registerSource() : accepts a list of source registration URIs // // AdId // * GetAdId() // // AppsetId // * GetAppsetId() + // + // AdExtDataService + // * onGetAdServicesExtData() + // * onPutAdServicesExtData() enum AdServicesApiClassType { @@ -21861,6 +21964,7 @@ message AdServicesApiCalled { MEASUREMENT = 3; ADID = 4; APPSETID = 5; + ADEXT_DATA_SERVICE = 6; } enum AdServicesApiName { @@ -21889,6 +21993,10 @@ message AdServicesApiCalled { SET_APP_INSTALL_ADVERTISERS = 22; REPORT_INTERACTION = 23; UPDATE_AD_COUNTER_HISTOGRAM = 24; + FETCH_AND_JOIN_CUSTOM_AUDIENCE = 25; + REGISTER_SOURCES = 26; + GET_AD_SERVICES_EXT_DATA = 27; + PUT_AD_SERVICES_EXT_DATA = 28; } optional AdServicesApiClassType api_class = 1 [deprecated = true]; @@ -21896,7 +22004,7 @@ message AdServicesApiCalled { // The actual name of the api within the 3 classes described above. optional AdServicesApiName api_name = 2; - optional string app_package_name = 3; + optional string app_package_name = 3; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] optional string sdk_package_name = 4; optional int32 latency_millis = 5; @@ -21913,6 +22021,33 @@ message AdServicesMeasurementReportsUploaded { UNKNOWN_REPORT = 0; EVENT = 1; AGGREGATE = 2; + DEBUG_EVENT = 3; + DEBUG_AGGREGATE = 4; + VERBOSE_DEBUG_SOURCE_DESTINATION_LIMIT = 5; + VERBOSE_DEBUG_SOURCE_NOISED = 6; + VERBOSE_DEBUG_SOURCE_STORAGE_LIMIT = 7; + VERBOSE_DEBUG_SOURCE_SUCCESS = 8; + VERBOSE_DEBUG_SOURCE_UNKNOWN_ERROR = 9; + VERBOSE_DEBUG_SOURCE_FLEXIBLE_EVENT_REPORT_VALUE_ERROR = 10; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_DEDUPLICATED = 11; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_INSUFFICIENT_BUDGET = 12; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_NO_CONTRIBUTIONS = 13; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_REPORT_WINDOW_PASSED = 14; + VERBOSE_DEBUG_TRIGGER_ATTRIBUTIONS_PER_SOURCE_DESTINATION_LIMIT = 15; + VERBOSE_DEBUG_TRIGGER_EVENT_DEDUPLICATED = 16; + VERBOSE_DEBUG_TRIGGER_EVENT_EXCESSIVE_REPORTS = 17; + VERBOSE_DEBUG_TRIGGER_EVENT_LOW_PRIORITY = 18; + VERBOSE_DEBUG_TRIGGER_EVENT_NO_MATCHING_CONFIGURATIONS = 19; + VERBOSE_DEBUG_TRIGGER_EVENT_NOISE = 20; + VERBOSE_DEBUG_TRIGGER_EVENT_REPORT_WINDOW_PASSED = 21; + VERBOSE_DEBUG_TRIGGER_NO_MATCHING_FILTER_DATA = 22; + VERBOSE_DEBUG_TRIGGER_NO_MATCHING_SOURCE = 23; + VERBOSE_DEBUG_TRIGGER_REPORTING_ORIGIN_LIMIT = 24; + VERBOSE_DEBUG_TRIGGER_EVENT_STORAGE_LIMIT = 25; + VERBOSE_DEBUG_TRIGGER_UNKNOWN_ERROR = 26; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_STORAGE_LIMIT = 27; + VERBOSE_DEBUG_TRIGGER_AGGREGATE_EXCESSIVE_REPORTS = 28; + VERBOSE_DEBUG_UNKNOWN = 29; } optional ReportType type = 1; @@ -21928,6 +22063,10 @@ message AdServicesMeasurementReportsUploaded { optional android.adservices.service.measurement.ReportUploadMethod upload_method = 4; // delay (in milliseconds) between scheduled delivery time and actual delivery time. optional int64 reporting_delay_millis = 5; + optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] + optional int32 retry_count = 7; + optional int32 http_response_code = 8; + optional bool is_marked_for_deletion = 9; } /** @@ -21949,6 +22088,10 @@ message AdServicesMeasurementRegistrations { optional android.adservices.service.measurement.RegistrationFailureType failure_type = 7; // delay (in milliseconds) between registration queue request and the time it gets processed optional int64 registration_delay_millis = 8; + optional string app_package_name = 9; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] + optional int32 retry_count = 10; + optional int32 http_response_code = 11; + optional bool is_redirect = 12; } /** @@ -23468,6 +23611,10 @@ message AdServicesSettingsUsageReported { GA_UX_LANDING_PAGE_OPT_OUT = 65; // user clicked opt out on the landing page. LANDING_PAGE_OPT_OUT = 66; + // (enrolled) user clicked on the privacy sandbox entry point. + PRIVACY_SANDBOX_ENTRY_POINT_CLICKED = 67; + // daily maintenance job was run. + DAILY_MAINTENANCE_JOB_FINISHED = 68; } // UI action performed by user. optional AdServiceSettingsName action = 2; @@ -23508,7 +23655,7 @@ message AdServicesSettingsUsageReported { // Default ad id state when consent notification was first sent. optional AdServicesSettingsDefaultAdIdState default_ad_id_state = 4; - // Type of AdService feature running on device. + // (Deprecated) Type of AdService feature running on device. enum PrivacySandboxFeatureType { // fallback when getFeature failed. FEATURE_UNSPECIFIED = 0; @@ -23526,8 +23673,48 @@ message AdServicesSettingsUsageReported { PRIVACY_SANDBOX_RECONSENT_FF = 6; } - // Privacy sandbox feature currently running on the device. - optional PrivacySandboxFeatureType feature_type = 5; + // (Deprecated) Privacy sandbox feature currently running on the device. + optional PrivacySandboxFeatureType feature_type = 5 [deprecated = true]; + + // Type of privacy sandbox UX. + enum PrivacySandboxUx { + // fallback when no UX can be selected. + UNSUPPORTED_UX = 0; + // all UXs that are not unspecified. + UNSPECIFIED_UX = 1; + // GA UX. + GA_UX = 2; + // Beta UX. + BETA_UX = 3; + // UX for Android RVC. + RVC_UX = 4; + } + + // Type of privacy sandbox UX. + optional PrivacySandboxUx ux = 6; + + // Type of privacy sandbox enrollment channel. + enum PrivacySandboxUxEnrollmentChannel { + // fallback when no enrollment channel can be selected. + UNSUPPORTED_CHANNEL = 0; + // all enrollment channels that are unspecified. + UNSPECIFIED_CHANNEL = 1; + // already enrolled channel. + ALREADY_ENROLLED_CHANNEL = 2; + // consent notification debug channel. + CONSENT_NOTIFICATION_DEBUG_CHANNEL = 3; + // first consent notification. + FIRST_CONSENT_NOTIFICATION_CHANNEL = 4; + // reconsent notification. + RECONSENT_NOTIFICATION_CHANNEL = 5; + // consent notification reset channel. + CONSENT_NOTIFICATION_RESET_CHANNEL = 6; + // 2nd GA notification post R OTA. + RVC_POST_OTA_NOTIFICATION_CHANNEL = 7; + } + + // Type of privacy sandbox enrollment channel. + optional PrivacySandboxUxEnrollmentChannel enrollment_channel = 7; } // Logs daily ambient brightness stats. @@ -24452,6 +24639,10 @@ message WsActiveWatchFaceComplicationSetSnapshot { // Active watch face package uid. optional int32 watch_face_package_uid = 3 [(is_uid) = true]; + + /* Active watch face class name. This will be + null for Declarative WF packages, as these packages have only one WF. */ + optional string watch_face_class_name = 5; } message UnsafeIntentEventReported { diff --git a/stats/atoms/adpf/adpf_extension_atoms.proto b/stats/atoms/adpf/adpf_extension_atoms.proto new file mode 100644 index 00000000..9c8da675 --- /dev/null +++ b/stats/atoms/adpf/adpf_extension_atoms.proto @@ -0,0 +1,97 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.adpf; + +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/attribution_node.proto"; +import "frameworks/proto_logging/stats/enums/os/enums.proto"; + +option java_package = "com.android.os.adpf"; +option java_multiple_files = true; + +extend Atom { + optional ThermalStatusCalled thermal_status_called = 772 [(module) = "framework"]; + optional ThermalHeadroomCalled thermal_headroom_called = 773 [(module) = "framework"]; + optional ThermalHeadroomThresholdsCalled thermal_headroom_thresholds_called = 774 [(module) = "framework"]; + optional ThermalHeadroomThresholds thermal_headroom_thresholds = 10201 [(module) = "framework"]; +} + +enum ThermalApiStatus { + UNSPECIFIED_THERMAL_API_FAILURE = 0; + SUCCESS = 1; + HAL_NOT_READY = 2; + FEATURE_NOT_SUPPORTED = 3; + INVALID_ARGUMENT = 4; + // if the thermal HAL reports no temperature for SKIN type + NO_TEMPERATURE = 5; + // if the thermal HAL reports no matching threshold for the SKIN temperature + NO_TEMPERATURE_THRESHOLD = 6; +} + +/** + * Logs the PowerManager#getCurrentThermalStatus API usage. + * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java. + */ +message ThermalStatusCalled { + // UID of the package. + optional int32 uid = 1 [(is_uid) = true]; + + // API call status. + optional ThermalApiStatus api_status = 2; + + // Thermal throttling status. + optional android.os.ThrottlingSeverityEnum status = 3; +} + +/** + * Logs the PowerManager#getThermalHeadroom API usage. + * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java. + */ +message ThermalHeadroomCalled { + // UID of the package. + optional int32 uid = 1 [(is_uid) = true]; + + // API call status. + optional ThermalApiStatus api_status = 2; + + // Thermal headroom. + optional float headroom = 3; +} + +/** + * Logs the PowerManager#getThermalHeadroomThresholds API usage. + * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java. + */ +message ThermalHeadroomThresholdsCalled { + // UID of the package. + optional int32 uid = 1 [(is_uid) = true]; + + // API call status. + optional ThermalApiStatus api_status = 2; +} + +/** + * Logs the current thermal headroom thresholds of a device. + * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java. + */ +message ThermalHeadroomThresholds { + // Thermal headroom threshold for that status. + repeated float headroom = 1; +} diff --git a/stats/atoms/adservices/adservices_extension_atoms.proto b/stats/atoms/adservices/adservices_extension_atoms.proto index 19d5d286..c2e6c758 100644 --- a/stats/atoms/adservices/adservices_extension_atoms.proto +++ b/stats/atoms/adservices/adservices_extension_atoms.proto @@ -22,7 +22,9 @@ import "frameworks/proto_logging/stats/atoms.proto"; import "frameworks/proto_logging/stats/atom_field_options.proto"; import "frameworks/proto_logging/stats/enums/adservices/common/adservices_enums.proto"; import "frameworks/proto_logging/stats/enums/app/job/enums.proto"; +import "frameworks/proto_logging/stats/enums/adservices/enrollment/enums.proto"; import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto"; +import "frameworks/proto_logging/stats/enums/adservices/fledge/enums.proto"; option java_package = "com.android.os.adservices"; option java_multiple_files = true; @@ -57,9 +59,38 @@ extend Atom { optional AdServicesMeasurementWipeout ad_services_measurement_wipeout = 676 [(module) = "adservices", (truncate_timestamp) = true]; + optional AdServicesMeasurementAdIdMatchForDebugKeys + ad_services_measurement_ad_id_match_for_debug_keys = 695 + [(module) = "adservices", (truncate_timestamp) = true]; + + optional AdServicesEnrollmentDataStored ad_services_enrollment_data_stored = 697 + [(module) = "adservices", (truncate_timestamp) = true]; + optional AdServicesEnrollmentFileDownloaded + ad_services_enrollment_file_downloaded = 698 + [(module) = "adservices", (truncate_timestamp) = true]; + optional AdServicesEnrollmentMatched ad_services_enrollment_matched = 699 + [(module) = "adservices", (truncate_timestamp) = true]; optional AdServicesConsentMigrated ad_services_consent_migrated = 702 [(module) = "adservices", (truncate_timestamp) = true]; + + optional AdServicesEnrollmentFailed ad_services_enrollment_failed = 714 + [(module) = "adservices", (truncate_timestamp) = true]; + + optional AdServicesMeasurementClickVerification ad_services_measurement_click_verification = 756 + [(module) = "adservices", (truncate_timestamp) = true]; + + optional AdServicesEncryptionKeyFetched ad_services_encryption_key_fetched = 765 + [(module) = "adservices", (truncate_timestamp) = true]; + optional AdServicesEncryptionKeyDbTransactionEnded ad_services_encryption_key_db_transaction_ended = 766 + [(module) = "adservices", (truncate_timestamp) = true]; + + optional DestinationRegisteredBeacons destination_registered_beacons = 767 + [(module) = "adservices", (truncate_timestamp) = true]; + optional ReportInteractionApiCalled report_interaction_api_called = 768 + [(module) = "adservices", (truncate_timestamp) = true]; + optional InteractionReportingTableCleared interaction_reporting_table_cleared = 769 + [(module) = "adservices", (truncate_timestamp) = true]; } /** @@ -124,6 +155,7 @@ message AdServicesMeasurementDebugKeys { optional bool is_matched = 3; optional int64 join_key_hash = 4; optional int64 join_key_hash_limit = 5; + optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] } /** @@ -178,6 +210,7 @@ message AdServicesMeasurementDelayedSourceRegistration { optional android.adservices.service.measurement.DelayedSourceRegistrationStatus registration_status = 1; // delay (in milliseconds) between a source registration and a previously registered trigger with matching attribution destination optional int64 missed_source_delay_millis = 2; + optional string app_package_name = 3; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] } /** @@ -192,6 +225,12 @@ message AdServicesMeasurementAttribution { optional bool is_install_attribution = 6; // delay (in milliseconds) between trigger registration and a trigger becoming attributed. optional int64 trigger_to_attribution_delay_millis = 7; + optional string app_package_name = 8; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] + optional int32 aggregate_report_count = 9; + optional int32 aggregate_debug_report_count = 10; + optional int32 event_report_count = 11; + optional int32 event_debug_report_count = 12; + optional int32 retry_count = 13; } /** @@ -207,6 +246,55 @@ message AdServicesMeasurementJobs { */ message AdServicesMeasurementWipeout { optional android.adservices.service.measurement.WipeoutCause wipeout_cause = 1; + optional string app_package_name = 2; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] +} + +/** + * Logs Ad Id match state for debug keys when measurement reports are being generated. + */ +message AdServicesMeasurementAdIdMatchForDebugKeys { + optional string adtech_enrollment_id = 1; + optional android.adservices.AttributionType attribution_type = 2; + optional bool is_matched = 3; + optional int64 num_unique_ad_ids_used = 4; + optional int64 num_unique_ad_id_limit = 5; + optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] +} + +/** + * Logs when AdServices enrollment data is stored. + */ +message AdServicesEnrollmentDataStored { + optional android.stats.adservices.enrollment.TransactionType transaction_type = 1; + optional bool success = 2; + optional int32 build_id = 3; // id of the enrollment file downloaded via mdd +} + +/** + * Logs when AdServices enrollment file get downloaded. + */ +message AdServicesEnrollmentFileDownloaded { + optional bool success = 1; + optional int32 build_id = 2; // id of the enrollment file downloaded via mdd +} + +/** + * Logs when AdServices enrollment match occurs. + */ +message AdServicesEnrollmentMatched { + optional bool success = 1; + optional int32 build_id = 2; // id of the enrollment file downloaded via mdd +} + +/** + * Logs when AdServices enrollment fails. + */ +message AdServicesEnrollmentFailed { + optional int32 build_id = 1; // id of the enrollment file downloaded via mdd + optional android.stats.adservices.enrollment.DataFileGroupStatus data_file_group_status = 2; + optional int32 enrollment_record_count_in_table = 3; + optional string query_parameter = 4; + optional android.stats.adservices.enrollment.ErrorCause error_cause = 5; } /** @@ -239,6 +327,12 @@ message AdServicesConsentMigrated { // Migrating consent from App Search to system service APPSEARCH_TO_SYSTEM_SERVICE = 2; + + // Migrating consent from AdServicesExtDataStorageService to system service + ADEXT_SERVICE_TO_SYSTEM_SERVICE = 3; + + // Migrating consent from AdServicesExtDataStorageService to App Search + ADEXT_SERVICE_TO_APPSEARCH = 4; } // Logs the opt-in/ opt-out value of measurement app @@ -261,6 +355,169 @@ message AdServicesConsentMigrated { // Logs the Migration status optional MigrationStatus migration_status = 7; +} + +/** + * Logs for AdServices click verification for measurement API calls. + */ + message AdServicesMeasurementClickVerification { + // The final source type of the source. + optional android.adservices.service.measurement.SourceType source_type = 1; + + // If an input event was included with the registration. + // The calling app wanted a click event if an input event is present. + optional bool input_event_present = 2; + + // If the system click verification passed. + optional bool system_click_verification_passed = 3; + + // If the flag is set to enable the system click verification check. + optional bool system_click_verification_enabled = 4; + + // The delay (in millis) from when the input event was created to when the API was called. + optional int64 input_event_delay_millis = 5; + // The max difference (in millis) between input event creation and API call for the source to not get downgraded. + optional int64 valid_delay_window_millis = 6; + + // The package calling the API. + optional string app_package_name = 7; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false] +} + +/** + * Logs for AdServices encryption key background job status. + */ +message AdServicesEncryptionKeyFetched { + + // Encryption key fetch job type. + enum FetchJobType { + UNKNOWN_JOB = 0; + ENCRYPTION_KEY_DAILY_FETCH_JOB = 1; + MDD_DOWNLOAD_JOB = 2; + } + + // Encryption key fetch status. + enum FetchStatus { + UNKNOWN = 0; + NULL_ENDPOINT = 1; + INVALID_ENDPOINT = 2; + IO_EXCEPTION = 3; + BAD_REQUEST_EXCEPTION = 4; + KEY_NOT_MODIFIED = 5; + SUCCESS = 6; + } + + // Encryption key fetch job type. + optional FetchJobType fetch_job_type = 1; + // Encryption key fetch status. + optional FetchStatus fetch_status = 2; + // Whether the key is fetched for the first time. + optional bool is_first_time_fetch = 3; + // Enrollment id for the adtech corresponding to the encryption key. + // Example: "XYZABC" + optional string adtech_enrollment_id = 4; + // Company id for the adtech corresponding to this encryption key. + // Example: "XYZCompany" + optional string company_id = 5; + // Encryption key url. + optional string encryption_key_url = 6; +} + +/** + * Logs for AdServices encryption key datastore transaction status. + */ +message AdServicesEncryptionKeyDbTransactionEnded { + + // Encryption key datastore transaction type. + enum DbTransactionType { + UNKNOWN = 0; + READ_TRANSACTION_TYPE = 1; + WRITE_TRANSACTION_TYPE = 2; + } + + // Encryption key datastore transaction status. + enum DbTransactionStatus { + UNKNOWN_EXCEPTION = 0; + INVALID_KEY= 1; + INSERT_EXCEPTION = 2; + DELETE_EXCEPTION = 3; + SEARCH_EXCEPTION = 4; + SUCCESS = 5; + } + + // Encryption key dao method names. + enum MethodName { + UNKNOWN_METHOD = 0; + GET_KEY_FROM_ENROLLMENT_ID = 1; + GET_KEY_FROM_ENROLLMENT_ID_AND_KEY_TYPE = 2; + GET_KEY_FROM_ENROLLMENT_ID_AND_KEY_ID = 3; + GET_KEY_FROM_REPORTING_ORIGIN = 4; + GET_ALL_KEYS = 5; + INSERT_KEY = 6; + INSERT_KEYS = 7; + DELETE_KEY = 8; + } + + // Encryption key datastore transaction type. + optional DbTransactionType db_transaction_type = 1; + // Encryption key datastore transaction status. + optional DbTransactionStatus db_transaction_status = 2; + // Encryption key DAO method name. + optional MethodName method_name = 3; +} + +/** + * Logs for beacon level reporting for destination registered beacons. + */ +message DestinationRegisteredBeacons { + + // Logs the range of key size for interaction key. + enum InteractionKeySizeRangeType { + UNSET_TYPE = 0; + // The key size is smaller than 50% maximum key size. + MUCH_SMALLER_THAN_MAXIMUM_KEY_SIZE = 1; + // The key size is equal or greater than 50% maximum key size but smaller than maximum key size. + SMALLER_THAN_MAXIMUM_KEY_SIZE = 2; + // The key size is equal to maximum key size. + EQUAL_TO_MAXIMUM_KEY_SIZE = 3; + // The key size is greater than maximum key size. + LARGER_THAN_MAXIMUM_KEY_SIZE = 4; + } + + // The entity who registered the beacons. + optional android.adservices.service.BeaconReportingDestinationType destination = 1; + + // Number of beacons ad-tech tries to register during reportImpression. + optional int32 attempted_registered_beacons = 2; + + // Key size range for interactionKey in every registerAdBeacon call. + repeated InteractionKeySizeRangeType attempted_key_sizes = 3; + + // Size of registered_ad_interactions database after each update to it. + optional int32 table_num_rows = 4; + + // The status response code in AdServices. + optional int32 status_code = 5; +} + +/** + * Logs for beacon level reporting for ReportInteraction API. + */ +message ReportInteractionApiCalled { + // The entity who registered the beacons. + optional android.adservices.service.BeaconReportingDestinationType destination = 1; + + // Number of matching uris for the reportInteraction request is found. + optional int32 num_matching_uris = 2; +} + +/** + * Logs for beacon level reporting for clearing interaction reporting table. + */ +message InteractionReportingTableCleared { + // Number of registered URIs cleared every 24 hours. + optional int32 num_uris_cleared = 1; + // Number of unreported URIs before clearing. + optional int32 num_unreported_uris = 2; }
\ No newline at end of file diff --git a/stats/atoms/apex/apex_extension_atoms.proto b/stats/atoms/apex/apex_extension_atoms.proto new file mode 100644 index 00000000..2f8ac15b --- /dev/null +++ b/stats/atoms/apex/apex_extension_atoms.proto @@ -0,0 +1,72 @@ +/* + * 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. + */ + +// This file contains extension atoms for apex and vendor apex installation events. + +syntax = "proto2"; + +package android.os.statsd.apex; + +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/enums/apex/enums.proto"; + +option java_package = "com.android.os.apex"; + +extend Atom { + optional ApexInstallationRequested apex_installation_requested = 732 [(module) = "apex"]; + optional ApexInstallationStaged apex_installation_staged = 733 [(module) = "apex"]; + optional ApexInstallationEnded apex_installation_ended = 734 [(module) = "apex"]; +} + +/** + * APEXs can installed by either Google or OEMs. These atoms capture basic + * metadata of APEXs being installed on a device. + * + * Logs when an apex installation is started, staged, and ended. + * Pushed from: + * system/apex/apexd/apexd.cpp + */ + +message ApexInstallationRequested { + // Module in the APEX + optional string module_name = 1; + // The version code of the APEX + optional int64 version_code = 2; + // Byte size of the APEX file + optional int64 package_size_bytes = 3; + // The hex encoded SHA256 digest of the APEX file + optional string file_hash = 4; + // Lets us determine if apex is a vendor apex + optional android.apex.PreinstallPartition apex_preinstall_partition = 5; + // Was a Staged or a Rebootless install requested + optional android.apex.InstallationType installation_type = 6; + // Is this request a rollback? + optional bool request_is_rollback = 7; + // Apex's FileInfo's Manifest provides these data points + optional bool provides_shared_apex_libs = 8; + // HAL's provided by this apex + repeated string provided_hals = 9; +} + +message ApexInstallationStaged { + optional string file_hash = 1; +} + +message ApexInstallationEnded { + optional string file_hash = 1; + optional android.apex.InstallResultType installation_result = 2; +} diff --git a/stats/atoms/appsearch/appsearch_extension_atoms.proto b/stats/atoms/appsearch/appsearch_extension_atoms.proto new file mode 100644 index 00000000..1249b185 --- /dev/null +++ b/stats/atoms/appsearch/appsearch_extension_atoms.proto @@ -0,0 +1,165 @@ +package android.os.statsd.appsearch; + +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/atoms.proto"; + +option java_package = "com.android.os.appsearch"; +option java_multiple_files = true; + +extend Atom { + // Pushed atoms + optional AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported = 385 [(module) = "appsearch"]; + optional AppSearchSchemaMigrationStatsReported + app_search_schema_migration_stats_reported = 579 [(module) = "appsearch"]; +} + +/** + * Logs detailed stats for setting schema in AppSearch. + * + * stats pushed from: + * frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java + * + * Next tag: 26 + */ +message AppSearchSetSchemaStatsReported { + // The sampling interval for this specific type of stats + // For example, sampling_interval=10 means that one out of every 10 stats was logged. + optional int32 sampling_interval = 1; + + // # of previous skipped sample for this specific type of stats + // We can't push atoms too closely, so some samples might be skipped + // In order to extrapolate the counts, we need to save the number of skipped stats and add it back + // For example, the true count of an event could be estimated as: + // SUM(sampling_interval * (num_skipped_sample + 1)) as est_count + optional int32 num_skipped_sample = 2; + + // Package UID of the application. + optional int32 uid = 3 [(is_uid) = true]; + + // Hash of the database name within AppSearch + optional int32 database = 4; + + // Needs to be sync with AppSearchResult#ResultCode in + // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java + optional int32 status_code = 5; + + // Overall time used for setting schema including the binder latency + optional int32 total_latency_millis = 6; + + // Number of newly added schema types + optional int32 new_type_count = 7; + + // Number of deleted schema types + optional int32 deleted_type_count = 8; + + // Number of compatible schema type changes + optional int32 compatible_type_change_count = 9; + + // Number of index-incompatible schema type changes + optional int32 index_incompatible_type_change_count = 10; + + // Number of backwards-incompatible schema type changes + optional int32 backwards_incompatible_type_change_count = 11; + + // Time used for verifying the incoming call. + optional int32 verify_incoming_call_latency_millis = 12; + + // Time used for creating or waiting the user executor. + optional int32 executor_acquisition_latency_millis = 13; + + // Time used for rebuilding objects from bundles. + optional int32 rebuild_from_bundle_latency_millis = 14; + + // Time passed while waiting to acquire the lock during Java function calls. + optional int32 java_lock_acquisition_latency_millis = 15; + + // Time used for the rewrite schema to proto. + optional int32 rewrite_schema_latency_millis = 16; + + // Overall time used for the native function call. + optional int32 total_native_latency_millis = 17; + + // Time used for the apply visibility settings function call. + optional int32 visibility_setting_latency_millis = 18; + + // Time used for the dispatch change notification function call. + optional int32 dispatch_change_notifications_latency_millis = 19; + + // Time used for the optimization function call. + optional int32 optimize_latency_millis = 20; + + /** Whether this package is observed. */ + optional bool is_package_observed = 21; + + /** Time used for the get old schema. */ + optional int32 get_old_schema_latency_millis = 22; + + /** Time used for the get registered observer function call. */ + optional int32 get_observer_latency_millis = 23; + + /** Time used for the preparing change notification action. */ + optional int32 preparing_change_notification_latency_millis = 24; + + // Type of the SetSchema call relative to SchemaMigration case. + // This is in sync with + // packages/modules/AppSearch/service/java/com/android/server/appsearch/external/localstorage/stats/SetSchemaStats.java + optional int32 schema_migration_call_type = 25; +} + +/** + * Logs detailed stats for schema migration in AppSearch. + * + * stats pushed from: + * packages/modules/AppSearch/service/java/com/android/server/appsearch/AppSearchManagerService.java + * + * Next tag: 15 + */ +message AppSearchSchemaMigrationStatsReported { + // The sampling interval for this specific type of stats + // For example, sampling_interval=10 means that one out of every 10 stats was logged. + optional int32 sampling_interval = 1; + + // # of previous skipped sample for this specific type of stats + // We can't push atoms too closely, so some samples might be skipped + // In order to extrapolate the counts, we need to save the number of skipped stats and add it back + // For example, the true count of an event could be estimated as: + // SUM(sampling_interval * (num_skipped_sample + 1)) as est_count + optional int32 num_skipped_sample = 2; + + // Package UID of the application. + optional int32 uid = 3 [(is_uid) = true]; + + // Hash of the database name within AppSearch + optional int32 database = 4; + + // Needs to be sync with AppSearchResult#ResultCode in + // packages/modules/AppSearch/framework/java/external/android/app/appsearch/AppSearchResult.java + optional int32 status_code = 5; + + // Overall time used for setting schema including the binder latency + optional int32 total_latency_millis = 6; + + // Overall time used for getting schema during schema migration + optional int32 schema_migration_get_schema_latency_millis = 7; + + // Overall time used for querying and transforming documents during schema migration + optional int32 schema_migration_query_and_transform_latency_millis = 8; + + // Overall time used for first setSchema during schema migration + optional int32 schema_migration_first_set_schema_latency_millis = 9; + + // Overall time used for second setSchema during schema migration + optional int32 schema_migration_second_set_schema_latency_millis = 10; + + // Overall time used for saving documents during schema migration + optional int32 schema_migration_save_document_latency_millis = 11; + + // Number of document that need to be migrated to another version + optional int32 total_need_migrated_document_count = 12; + + // Number of successfully migrated and saved in Icing + optional int32 total_success_migrated_document_count = 13; + + // Number of migration failure during schema migration + optional int32 schema_migration_failure_count = 14; +}
\ No newline at end of file diff --git a/stats/atoms/art/art_extension_atoms.proto b/stats/atoms/art/art_extension_atoms.proto index 8815b2fc..127b1186 100644 --- a/stats/atoms/art/art_extension_atoms.proto +++ b/stats/atoms/art/art_extension_atoms.proto @@ -9,7 +9,7 @@ option java_package = "com.android.os.art"; option java_multiple_files = true; extend Atom { - // Pushed atomes + // Pushed atoms optional ArtDatumReported art_datum_reported = 332 [(module) = "art"]; // Deprecated in favour of the ArtDeviceStatus pulled atom optional ArtDeviceDatumReported art_device_datum_reported = 550 [(module) = "art", deprecated = true]; @@ -350,4 +350,3 @@ message ArtDeviceStatus { } optional BootImageStatus boot_image_status = 1; } - diff --git a/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto b/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto new file mode 100644 index 00000000..ae5375ba --- /dev/null +++ b/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto @@ -0,0 +1,51 @@ +/* + * 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. + */ +syntax = "proto2"; + +package android.os.statsd.automotive.carlauncher; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +option java_package = "com.android.os.automotive.carlauncher"; +option java_multiple_files = true; + +extend Atom { + optional CarRecentsEventReported car_recents_event_reported = 770 [(module) = "carlauncher"]; +} + +/** + * Logs when an recents event occurs in carlauncher. + * + * Logged from package: packages/apps/Car/Launcher + */ +message CarRecentsEventReported { + enum RECENTS_EVENT_TYPE { + UNSPECIFIED = 0; + SESSION_STARTED = 1; + SESSION_FINISHED = 2; + APP_LAUNCHED = 3; + APP_DISMISSED = 4; + CLEAR_ALL = 5; + } + optional int64 session_id = 1; + optional int64 event_id = 2; + optional RECENTS_EVENT_TYPE event_type = 3; + optional int32 total_task_count = 4; + optional int32 event_task_index = 5; + optional int64 time_to_event_millis = 6; + optional int32 package_uid = 7 [(is_uid) = true]; +} diff --git a/stats/atoms/cpu/cpu_atoms.proto b/stats/atoms/cpu/cpu_atoms.proto new file mode 100644 index 00000000..808aece4 --- /dev/null +++ b/stats/atoms/cpu/cpu_atoms.proto @@ -0,0 +1,43 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.cpu; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +option java_package = "com.android.os.cpu"; +option java_multiple_files = true; + +extend Atom { + optional CpuPolicy cpu_policy = 10199 [(module) = "framework"]; +} + +/** + * Logs information related to CPU policies such as frequency limits. + */ +message CpuPolicy { + // The cpufreq policy ID. + optional int32 policy = 1; + + // The current maximum frequency. + optional int32 scaling_max_freq_khz = 2; + + // The normal maximum frequency. + optional int32 cpuinfo_max_freq_khz = 3; +}
\ No newline at end of file diff --git a/stats/atoms/devicelock/devicelock_extension_atoms.proto b/stats/atoms/devicelock/devicelock_extension_atoms.proto new file mode 100644 index 00000000..5af5df67 --- /dev/null +++ b/stats/atoms/devicelock/devicelock_extension_atoms.proto @@ -0,0 +1,62 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.devicelock; + +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/atoms.proto"; + +option java_package = "com.android.os.devicelock"; +option java_multiple_files = true; + +extend Atom { + optional DeviceLockCheckInRequestReported device_lock_check_in_request_reported = 726 + [(module) = "devicelock"]; + optional DeviceLockProvisioningCompleteReported device_lock_provisioning_complete_reported = 727 + [(module) = "devicelock"]; + optional DeviceLockKioskAppRequestReported device_lock_kiosk_app_request_reported = 728 + [(module) = "devicelock"]; +} + +message DeviceLockCheckInRequestReported { + enum RequestType { + // Default value for the request type + UNKNOWN = 0; + // The Check-in request is getDeviceCheckInStatus + GET_DEVICE_CHECK_IN_STATUS = 1; + // The Check-in request is pauseDeviceProvisioning + PAUSE_DEVICE_PROVISIONING = 2; + // The Check-in request is reportDeviceProvisioningComplete + // DEPRECATED, because the gRPC call for this log type is removed + REPORT_DEVICE_PROVISIONING_COMPLETE = 3 [deprecated = true]; + // The Check-in request is reportDeviceProvisionState + REPORT_DEVICE_PROVISION_STATE = 4; + // The Check-in request is isDeviceInApprovedCountry + IS_DEVICE_IN_APPROVED_COUNTRY = 5; + } + + optional RequestType type= 1; +} + +message DeviceLockProvisioningCompleteReported { + optional int64 time_spent_on_provisioning_seconds = 1; +} + +message DeviceLockKioskAppRequestReported { + optional int32 kiosk_app_uid = 1 [(is_uid) = true]; +} diff --git a/stats/atoms/dnd/dnd_atoms.proto b/stats/atoms/dnd/dnd_atoms.proto index e6863ba0..e22709ee 100644 --- a/stats/atoms/dnd/dnd_atoms.proto +++ b/stats/atoms/dnd/dnd_atoms.proto @@ -66,4 +66,6 @@ message DNDPolicyProto { optional android.stats.dnd.PeopleType allow_messages_from = 18; optional android.stats.dnd.ConversationType allow_conversations_from = 19; + + optional android.stats.dnd.ChannelType allow_channels = 20; } diff --git a/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto b/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto new file mode 100644 index 00000000..c9dbccbf --- /dev/null +++ b/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto @@ -0,0 +1,94 @@ + +/* + * 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. + */ + +syntax = "proto2"; +package android.os.statsd.federatedcompute; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/federatedcompute/enums.proto"; + +option java_package = "com.android.os.federatedcompute"; +option java_multiple_files = true; + +extend Atom { + optional FederatedComputeApiCalled federated_compute_api_called = + 712 [(module) = "ondevicepersonalization", (truncate_timestamp) = true]; + optional FederatedComputeTrainingEventReported federated_compute_training_event_reported = + 771 [(module) = "ondevicepersonalization", (truncate_timestamp) = true]; +} + +/** + * Logs when an FederatedCompute api is called. + */ +message FederatedComputeApiCalled { + enum FederatedComputeApiClassType { + API_CLASS_UNKNOWN = 0; + } + + enum FederatedComputeApiName { + API_NAME_UNKNOWN = 0; + SCHEDULE = 1; + CANCEL = 2; + } + + optional FederatedComputeApiClassType api_class = 1; + + optional FederatedComputeApiName api_name = 2; + + optional int32 latency_millis = 3; + + // response_code is the error/failure code for the given api. + optional int32 response_code = 4; +} + +/** + * Logs when an federated computation training event occurs. + */ +message FederatedComputeTrainingEventReported { + optional int64 client_version = 1; // [(datapol.semantic_type) = ST_SOFTWARE_ID] + + // The kind of train event. + optional android.federatedcompute.TrainingEventKind + kind = 2; + + // The task id of this run. + optional int64 task_id = 3; + + // For TRAIN_INTERRUPTED and TRAIN_COMPLETED: + // the wall time of the duration, in milliseconds, since the matching + // STARTED event. (Note: This is a time duration, not a timestamp, so + // annotating it with ST_TIMESTAMP is not necessary and would be inaccurate.) + optional int64 duration_millis = 4; + + // For TRAIN_INTERRUPTED and TRAIN_COMPLETED: + // the number of bytes (of serialized example protos) which had been fed + // since the matching started event. + optional int64 example_size = 5; + + ///////////////////////////////////////////////////////// + // Information about data transfer for TRAIN_DOWNLOADED/TRAIN_UPLOADED events + + // How long it took client to transfer the data + optional int64 data_transfer_duration_millis = 6; + + // Number of bytes sent from the client to the server. + optional int64 bytes_uploaded = 7; + + // Number of bytes sent from the server to the client. + optional int64 bytes_downloaded = 8; +} diff --git a/stats/atoms/framework/framework_extension_atoms.proto b/stats/atoms/framework/framework_extension_atoms.proto index 74578863..a7d9df4d 100644 --- a/stats/atoms/framework/framework_extension_atoms.proto +++ b/stats/atoms/framework/framework_extension_atoms.proto @@ -29,8 +29,10 @@ extend Atom { optional InTaskActivityStarted in_task_activity_started = 685 [(module) = "framework"]; optional CachedAppsHighWaterMark cached_apps_high_watermark = 10189 [(module) = "framework"]; optional StylusPredictionMetricsReported stylus_prediction_metrics_reported = 718 [(module) = "libinput"]; + optional UserRiskEventReported user_risk_event_reported = 725 [(module) = "framework"]; optional MediaProjectionStateChanged media_projection_state_changed = 729 [(module) = "framework"]; optional MediaProjectionTargetChanged media_projection_target_changed = 730 [(module) = "framework"]; + optional ProxyBytesTransferByFgBg proxy_bytes_transfer_by_fg_bg = 10200 [(module) = "framework"]; } /** @@ -174,6 +176,70 @@ message StylusPredictionMetricsReported { } /** + * Logs user risk events sent to UserRiskManager + */ +message UserRiskEventReported { + optional EventType event_type = 1; + + // Call Details + + // time that an active call was connected (picked up), -1 if a call is not active + optional int64 call_connected_timestamp_millis = 2; + optional CallDirection call_direction = 3; + optional NumberVerificationStatus call_number_verification_status = 4; + // time of the last update to the contact associated with the call, -1 if there is no contact + optional int64 call_contact_last_updated_timestamp_millis = 5; + optional int32 call_log_previous_incoming_count = 6; + optional int32 call_log_previous_outgoing_count = 7; + + // Media Projection Details + + // time of MP start, -1 if MP is not active + optional int64 mp_start_timestamp_millis = 8; + optional int32 mp_app_uid = 9 [(is_uid) = true]; + optional int32 mp_installing_app_uid = 10 [(is_uid) = true]; + // time that the MP app was installed + optional int64 mp_app_first_install_timestamp_millis = 11; + + // A11y details + + // time of A11y grant, -1 if not granted + optional int64 a11y_capability_granted_timestamp_millis = 12; + optional int32 a11y_app_uid = 13 [(is_uid) = true]; + optional int32 a11y_installing_app_uid = 14 [(is_uid) = true]; + // time that the A11y app was installed + optional int64 a11y_app_first_install_timestamp_mills = 15; + + enum EventType { + UNKNOWN = 0; + A11Y_CONSENT_DIALOG_SHOWN = 1; + A11Y_GRANTED = 2; + A11Y_DENIED = 3; + A11Y_APP_UNINSTALLED = 4; + MEDIA_PROJECTION_CONSENT_DIALOG_SHOWN = 5; + MEDIA_PROJECTION_GRANTED = 6; + MEDIA_PROJECTION_DENIED = 7; + MEDIA_PROJECTION_STARTED = 8; + ACTIVE_CALL_STARTED = 9; + ACTIVE_CALL_CHANGED = 10; + ACTIVE_CALL_ENDED = 11; + } + + enum CallDirection { + UNKNOWN_DIRECTION = 0; + INCOMING = 1; + OUTGOING = 2; + } + + enum NumberVerificationStatus { + UNKNOWN_STATUS = 0; + NOT_VERIFIED = 1; + PASSED = 2; + FAILED = 3; + } +} + +/** * Logs when MediaProjection goes through state changes. * * MediaProjection API allows apps to capture the contents of a display @@ -310,3 +376,23 @@ message MediaProjectionTargetChanged { WINDOWING_MODE_FREEFORM = 4; } } + +/** + * Pulls bytes transferred via network with TYPE_PROXY from NetworkStats. Each pull produces atoms + * that record stats of all processes that used sysproxy since device boot. + * Network with TYPE_PROXY is used on Wear OS to enable internet access via Bluetooth when the + * companion phone is connected to the watch. + */ +message ProxyBytesTransferByFgBg { + optional int32 uid = 1 [(is_uid) = true]; + + optional bool is_foreground = 2; + + optional int64 rx_bytes = 3; + + optional int64 rx_packets = 4; + + optional int64 tx_bytes = 5; + + optional int64 tx_packets = 6; +} diff --git a/stats/atoms/hdmi/hdmi_extension_atoms.proto b/stats/atoms/hdmi/hdmi_extension_atoms.proto new file mode 100644 index 00000000..e1ba773d --- /dev/null +++ b/stats/atoms/hdmi/hdmi_extension_atoms.proto @@ -0,0 +1,69 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.hdmi; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/stats/hdmi/enums.proto"; + +option java_package = "com.android.os.hdmi"; +option java_multiple_files = true; + +extend Atom { + optional HdmiEarcStatusReported hdmi_earc_status_reported = 701 [(module) = "framework"]; + optional HdmiSoundbarModeStatusReported hdmi_soundbar_mode_status_reported + = 724 [(module) = "framework"]; +} +/** +* Push atom that logs the status of the eARC feature in 3 dimensions: whether the +* hardware supports it, whether the setting is enabled and whether a connection is +* established. +* +* Logged whenever the device wakes up and when the HAL reports an update in the +* connection state. +**/ +message HdmiEarcStatusReported { + // whether the hardware supports eARC + optional bool is_supported = 1; + // whether eARC is enabled + optional bool is_enabled = 2; + // If log_reason == LOG_REASON_EARC_STATUS_CHANGED, the state just before the change. + // Otherwise, the current state. + optional android.stats.hdmi.ConnectionState old_connected_state = 3; + // If log_reason == LOG_REASON_EARC_STATUS_CHANGED, the state just after the change. + // Otherwise, the current state. + optional android.stats.hdmi.ConnectionState new_connected_state = 4; + // The event that triggered the log. + optional android.stats.hdmi.LogReason log_reason = 5; +} + +/** +* Push atom that logs the status of the Dynamic Soundbar mode feature in 2 dimensions: whether the +* hardware supports it and whether the setting is enabled. +* +* Logged whenever the device wakes up or the Dynamic Soundbar mode setting is toggled. +**/ +message HdmiSoundbarModeStatusReported { + // whether the hardware supports Dynamic soundbar mode + optional bool is_supported = 1; + // whether the Dynamic soundbar mode setting is enabled + optional bool is_enabled = 2; + // the event that triggered the log. + optional android.stats.hdmi.DynamicSoundbarModeLogReason log_reason = 3; +} diff --git a/stats/atoms/healthfitness/api/api_extension_atoms.proto b/stats/atoms/healthfitness/api/api_extension_atoms.proto index e4e48d51..15626874 100644 --- a/stats/atoms/healthfitness/api/api_extension_atoms.proto +++ b/stats/atoms/healthfitness/api/api_extension_atoms.proto @@ -57,6 +57,9 @@ message HealthConnectApiCalled { // Type of rate limiting being used (If any) optional android.healthfitness.api.RateLimit rate_limit = 6; + + // The API caller's foreground status + optional android.healthfitness.api.ForegroundState caller_foreground_state = 7; } // Track if users are connecting apps with Health Connect @@ -68,6 +71,8 @@ message HealthConnectUsageStats { // Number of apps on device that can be connected to Health Connect. optional int32 available_apps_count = 2; + // Set true is the user has one app reading or writing in past 30 days + optional bool isMonthlyActiveUser = 3; } // Monitor Health Connect database @@ -141,4 +146,4 @@ message HealthConnectApiInvoked { optional android.healthfitness.api.DataType data_type_six = 11 [(field_restriction_option).health_connect = true]; -}
\ No newline at end of file +} diff --git a/stats/atoms/hotword/hotword_atoms.proto b/stats/atoms/hotword/hotword_atoms.proto index f24d96d5..5ea02edd 100644 --- a/stats/atoms/hotword/hotword_atoms.proto +++ b/stats/atoms/hotword/hotword_atoms.proto @@ -87,8 +87,8 @@ message HotwordDetectionServiceRestarted { // Indicates that the service was restarted regularly. SCHEDULE = 2; - // Indicates that the service was restarted due to service crashed. - CRASH = 3; + // Deprecated. Indicates that the service was restarted due to service crashed. + CRASH = 3 [deprecated = true]; } optional Reason reason = 2; @@ -108,8 +108,8 @@ message HotwordDetectorKeyphraseTriggered { // Indicates that the system got the keyphrase from DSP. KEYPHRASE_TRIGGER = 0; - // Indicates that the system can not inform the service to verify the keyphrase. - FAILED_TO_INFORM_SERVICE = 1; + // Deprecated. Indicates that the system can not inform the service to verify the keyphrase. + FAILED_TO_INFORM_SERVICE = 1 [deprecated = true]; // Indicates that the callback was not invoked within timeout after informing // the service. @@ -139,6 +139,18 @@ message HotwordDetectorKeyphraseTriggered { // Indicates that the system called rejected callback when the trusted process was // restarted. REJECTED_FROM_RESTART = 10; + + // Indicates keyphrase was classified as training data. + TRAINING_DATA = 11; + + // Indicates training data egress limit was reached. + TRAINING_DATA_EGRESS_LIMIT_REACHED = 12; + + // Indicates that system got security exception when handling training data callback. + TRAINING_DATA_SECURITY_EXCEPTION = 13; + + // Indicates that system got remote exception when handling training data callback. + TRAINING_DATA_REMOTE_EXCEPTION = 14; } // What result after detecting. optional Result result = 2; @@ -218,44 +230,56 @@ message HotwordDetectorEvents { // Indicates that the updateState was not invoked successfully. CALL_UPDATE_STATE_EXCEPTION = 19; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress starts. - AUDIO_EGRESS_START = 20; + AUDIO_EGRESS_START = 20 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress ends. - AUDIO_EGRESS_END = 21; + AUDIO_EGRESS_END = 21 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress got interrupted exception. - AUDIO_EGRESS_INTERRUPTED_EXCEPTION = 22; + AUDIO_EGRESS_INTERRUPTED_EXCEPTION = 22 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the client is not granted permission to access audio egress. - AUDIO_EGRESS_NO_PERMISSION = 23; + AUDIO_EGRESS_NO_PERMISSION = 23 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the client is inactive over a period of time. - AUDIO_EGRESS_INACTIVE_CLIENT = 24; + AUDIO_EGRESS_INACTIVE_CLIENT = 24 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the HotwordDetectionService is inactive over a period // of time. - AUDIO_EGRESS_INACTIVE_HOTWORD_DETECTION_SERVICE = 25; + AUDIO_EGRESS_INACTIVE_HOTWORD_DETECTION_SERVICE = 25 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the list of audio stream is empty. - AUDIO_EGRESS_EMPTY_AUDIO_STREAM_LIST = 26; + AUDIO_EGRESS_EMPTY_AUDIO_STREAM_LIST = 26 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that there is no data from the system audio stream. - AUDIO_EGRESS_SOURCE_IS_EMPTY = 27; + AUDIO_EGRESS_SOURCE_IS_EMPTY = 27 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the copy buffer size the client sets is illegal. - AUDIO_EGRESS_ILLEGAL_COPY_BUFFER_SIZE = 28; + AUDIO_EGRESS_ILLEGAL_COPY_BUFFER_SIZE = 28 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the system. - AUDIO_EGRESS_CLOSE_ERROR_FROM_SYSTEM = 29; + AUDIO_EGRESS_CLOSE_ERROR_FROM_SYSTEM = 29 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the client // side. - AUDIO_EGRESS_CLOSE_ERROR_FROM_CLIENT = 30; + AUDIO_EGRESS_CLOSE_ERROR_FROM_CLIENT = 30 [deprecated = true]; + // Deprecated. Use HotwordAudioEgressEventReported instead. // Indicates that the audio egress is closed with error from the // HotwordDetectionService. - AUDIO_EGRESS_CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 31; + AUDIO_EGRESS_CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 31 [deprecated = true]; } optional Event event = 2; diff --git a/stats/atoms/hotword/hotword_extension_atoms.proto b/stats/atoms/hotword/hotword_extension_atoms.proto new file mode 100644 index 00000000..efde4f23 --- /dev/null +++ b/stats/atoms/hotword/hotword_extension_atoms.proto @@ -0,0 +1,62 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.hotword; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/hotword/enums.proto"; + +option java_package = "com.android.os.hotword"; +option java_multiple_files = true; + +extend Atom { + optional HotwordEventEgressSize hotword_egress_size_atom_reported = 761 [(module) = "framework"]; +} + +/** + * Logs data size for events egressed from hotword detection service to default assistant. + */ +message HotwordEventEgressSize { + // Type of event being egressed. + enum HotwordEventType { + // Represents an unspecified event. + HOTWORD_EVENT_UNSPECIFIED = 0; + + // Represents a hotword detection event. + HOTWORD_DETECTION = 1; + + // Represents a hotword rejection event. + HOTWORD_REJECTION = 2; + + // Represents a hotword training data event. + HOTWORD_TRAINING_DATA = 3; + } + + // Event that was egressed. + optional HotwordEventType event_type = 1; + + // Size of the event that was egressed in bytes. + optional int64 event_size_bytes = 2; + + // The type of detector. + optional android.hotword.HotwordDetectorType detector_type = 3; + + // The UID for which the assistant application is active. + optional int32 uid = 4 [(is_uid) = true]; +} diff --git a/stats/atoms/input/input_extension_atoms.proto b/stats/atoms/input/input_extension_atoms.proto index 123eedbc..cb226f21 100644 --- a/stats/atoms/input/input_extension_atoms.proto +++ b/stats/atoms/input/input_extension_atoms.proto @@ -74,6 +74,8 @@ message KeyboardConfigured { optional int32 product_id = 3; // Keyboard configuration details optional RepeatedKeyboardLayoutConfig repeated_keyboard_layout_config = 4 [(log_mode) = MODE_BYTES]; + // The Input Device Bus ID + optional android.input.InputDeviceBus device_bus = 5; } /** @@ -95,7 +97,10 @@ message KeyboardSystemsEventReported { // Key pressed to trigger the keyboard event repeated int32 key_code = 4; // Flag based modifier state when keyboard event was triggered + // This field represents the decimal version of the flag in binary optional int32 modifier_state = 5; + // The Input Device Bus ID + optional android.input.InputDeviceBus device_bus = 6; } /** @@ -121,19 +126,21 @@ message InputDeviceUsageReported { // The Input Device Bus ID optional android.input.InputDeviceBus device_bus = 4; - // The duration of the aggregated usage session for this Input Device. + // The duration of the aggregated usage session for this Input Device, in + // milliseconds. // (The int32_t will overflow at ~25 days) optional int32 usage_duration_millis = 5; // The breakdown of this usage session by source. repeated android.input.InputDeviceUsageType usage_sources = 6; // The breakdown of usage duration for each of the {@link usage_sources} - // reported above. + // reported above, in milliseconds. repeated int32 usage_durations_per_source = 7; // The breakdown of this usage session by uid. repeated int32 uids = 8 [(is_uid) = true]; - // The breakdown of usage duration for each of the {@link uids} reported above. + // The breakdown of usage duration for each of the {@link uids} reported + // above, in milliseconds. repeated int32 usage_durations_per_uid = 9; } diff --git a/stats/atoms/kernel/kernel_extension_atoms.proto b/stats/atoms/kernel/kernel_extension_atoms.proto new file mode 100644 index 00000000..8b6ae308 --- /dev/null +++ b/stats/atoms/kernel/kernel_extension_atoms.proto @@ -0,0 +1,52 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.kernel; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +option java_package = "com.android.os.kernel"; +option java_multiple_files = true; + +extend Atom { + optional KernelOomKillOccurred kernel_oom_kill_occurred = 754 + [(module) = "framework"]; +} + +/** + * Logs each time the kernel's out-of-memory (OOM) killer claims a victim. + * Logged from: + * frameworks/base/services/core/java/com/android/server/am/OomStatsReporter.java + */ +message KernelOomKillOccurred { + // The uid if available. -1 means not available. + optional int32 uid = 1 [(is_uid) = true]; + + // The pid if available. -1 means not available. + optional int32 pid = 2; + + // Recorded oom score when getting killed. + optional int32 oom_score_adj = 3; + + // Millisecond timestamp of when the kill was detected by the memhealth driver. + optional int64 timestamp_millis = 4; + + // Name of the killed process. + optional string process_name = 5; +} diff --git a/stats/atoms/location/location_atoms.proto b/stats/atoms/location/location_atoms.proto index 69402dbf..24de049c 100644 --- a/stats/atoms/location/location_atoms.proto +++ b/stats/atoms/location/location_atoms.proto @@ -30,6 +30,8 @@ option java_multiple_files = true; * frameworks/base/services/core/java/com/android/server/location/LocationManagerService.java */ message LocationEnabledStateChanged { - optional bool location_enabled = 1 - [(state_field_option).exclusive_state = true]; + optional bool location_enabled = 1 [ + (state_field_option).exclusive_state = true, + (state_field_option).nested = false + ]; } diff --git a/stats/atoms/location/location_extension_atoms.proto b/stats/atoms/location/location_extension_atoms.proto index d322e678..ea1d3c5c 100644 --- a/stats/atoms/location/location_extension_atoms.proto +++ b/stats/atoms/location/location_extension_atoms.proto @@ -36,6 +36,8 @@ extend Atom { * frameworks/base/services/core/java/com/android/server/location/LocationManagerService.java */ message EmergencyStateChanged { - optional bool is_in_emergency = 1 - [(state_field_option).exclusive_state = true]; + optional bool is_in_emergency = 1 [ + (state_field_option).exclusive_state = true, + (state_field_option).nested = false + ]; } diff --git a/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto b/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto new file mode 100644 index 00000000..d3c570e0 --- /dev/null +++ b/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto @@ -0,0 +1,56 @@ + +/* + * 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. + */ +syntax = "proto2"; +package android.os.statsd.ondevicepersonalization; +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +option java_package = "com.android.os.ondevicepersonalization"; +option java_multiple_files = true; +extend Atom { + optional OnDevicePersonalizationApiCalled ondevicepersonalization_api_called = + 711 [(module) = "ondevicepersonalization", (truncate_timestamp) = true]; +} +/** + * Logs when an OnDevicePersonalization api is called. + */ +message OnDevicePersonalizationApiCalled { + enum OnDevicePersonalizationApiClassType { + UNKNOWN = 0; + DOWNLOADING = 1; + SERVING = 2; + OPTIMIZATION = 3; + REPORTING = 4; + } + enum OnDevicePersonalizationApiName { + API_NAME_UNKNOWN = 0; + EXECUTE = 1; + REQUEST_SURFACE_PACKAGE = 2; + SERVICE_ON_EXECUTE = 3; + SERVICE_ON_DOWNLOAD_COMPLETED = 4; + SERVICE_ON_RENDER = 5; + SERVICE_ON_EVENT = 6; + SERVICE_ON_TRAINING_EXAMPLE = 7; + } + optional OnDevicePersonalizationApiClassType api_class = 1; + optional OnDevicePersonalizationApiName api_name = 2; + // end to end latency of the operation + optional int32 latency_millis = 3; + // response_code is the error/failure code for the given api. + optional int32 response_code = 4; + // latency excluding time spent in user code + optional int32 overhead_latency_millis = 5; +} diff --git a/stats/atoms/power/power_extension_atoms.proto b/stats/atoms/power/power_extension_atoms.proto new file mode 100644 index 00000000..a0e0eb30 --- /dev/null +++ b/stats/atoms/power/power_extension_atoms.proto @@ -0,0 +1,49 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.power; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +extend Atom { + optional ScreenOffReported screen_off_reported = 776 [(module) = "framework"]; +} + +/** + * Logs when the screen is turned off. + * + * Logged from: + * frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java + */ +message ScreenOffReported { + enum Reason { + UNKNOWN = 0; + POWER_BUTTON = 1; + TIMEOUT = 2; + } + enum TimeoutReason { + UNKNOWN_REASON = 0; + DEFAULT = 1; + FACE_DOWN = 2; + ENCLOSED = 3; + } + optional Reason screen_off_reason = 1; + optional TimeoutReason timeout_reason = 2; + optional int64 millis_until_normal_timeout = 3; +} diff --git a/stats/atoms/sysui/sysui_atoms.proto b/stats/atoms/sysui/sysui_atoms.proto index 67d88f20..fb31d6d3 100644 --- a/stats/atoms/sysui/sysui_atoms.proto +++ b/stats/atoms/sysui/sysui_atoms.proto @@ -189,7 +189,8 @@ message LauncherUIChanged { // e.g., SEARCHBOX_ALLAPPS, FOLDER_WORKSPACE optional int32 hierarchy = 18; - optional bool is_work_profile = 19; + // deprecated, use user_type field instead + optional bool is_work_profile = 19 [deprecated = true]; // Used to store the predicted rank of the target optional int32 rank = 20 [default = -1]; @@ -221,6 +222,16 @@ message LauncherUIChanged { TRACKPAD = 2; } optional InputType input_type = 28; + + // Specifies the type of the user the event connected with + enum UserType { + TYPE_UNKNOWN = 0; + TYPE_MAIN = 1; + TYPE_WORK = 2; + TYPE_CLONED = 3; + TYPE_PRIVATE = 4; + } + optional UserType user_type = 29; } message LauncherAttributes { diff --git a/stats/atoms/sysui/sysui_extension_atoms.proto b/stats/atoms/sysui/sysui_extension_atoms.proto index c58ba336..c7da6d51 100644 --- a/stats/atoms/sysui/sysui_extension_atoms.proto +++ b/stats/atoms/sysui/sysui_extension_atoms.proto @@ -20,11 +20,14 @@ package android.os.statsd.sysui; import "frameworks/proto_logging/stats/atoms.proto"; import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/telephony/enums.proto"; +import "frameworks/proto_logging/stats/enums/os/enums.proto"; extend Atom { optional LockscreenShortcutSelected lockscreen_shortcut_selected = 611 [(module) = "sysui"]; optional LockscreenShortcutTriggered lockscreen_shortcut_triggered = 612 [(module) = "sysui"]; optional LauncherImpressionEventV2 launcher_impression_event_v2 = 716 [(module) = "sysui"]; + optional DisplaySwitchLatencyTracked display_switch_latency_tracked = 753 [(module) = "sysui"]; } /** @@ -87,3 +90,88 @@ message LauncherImpressionEventV2 { // The result source of the search result as defined in vendor/unbundled_google/libraries/searchuilib/src/com/android/app/search/SearchTargetExtras.java optional int32 result_source = 8; } + +/** + * Logs for Display Switch Latency Tracking. + * + * Next Tag: 22 +*/ +message DisplaySwitchLatencyTracked { + + // Latency tracked between device state change is received in SysUI and the switched display + // being unblocked and turned on (onScreenTurnedOn received in sysui from power manager) + optional int32 latency_ms = 1; + + // The state of device before the Display Switch event. + // This field defines the fold-state of the device. + optional android.telephony.FoldState from_foldable_device_state = 2; + // This field provides additional information about device state + optional StateEnum from_state = 3; + // This field will store the uid of the top running task(app only). + optional int32 from_focused_app_uid = 4 [(is_uid) = true]; + // This field will have the uid of the app being used in picture-in-picture mode. The value + // will be -1 if no picture-in-picture is ongoing*/ + optional int32 from_pip_app_uid = 5 [(is_uid) = true]; + // At the moment of Display Switch if screen_state is equal to + // SPLIT_SCREEN_APPS/ OVERVIEW/ FREEFORM_APPS or pip_app_uid is not -1, then this field will + // store the uids of apps present in split-screen mode. + repeated int32 from_visible_apps_uid = 6 [(is_uid) = true]; + // Density of the display for the device being tracked in dpi. + optional int32 from_density_dpi = 7; + + // The state of the device after the Display Switch event. + optional StateEnum to_state = 8; + optional android.telephony.FoldState to_foldable_device_state = 9; + optional int32 to_focused_app_uid = 10 [(is_uid) = true]; + optional int32 to_pip_app_uid = 11 [(is_uid) = true]; + repeated int32 to_visible_apps_uid = 12 [(is_uid) = true]; + optional int32 to_density_dpi = 13; + + // Additional data useful for analyzing latency issues + // Total number of notifications present in Notification panel during Display Switch event. + optional int32 notification_count = 14; + // Number of TYPE_EXTERNAL displays at the moment of Display Switch. + optional int32 external_display_count = 15; + // Throttling level at the moment of Display Switch provided by thermal api. + optional android.os.ThrottlingSeverityEnum throttling_level = 16; + // Virtual-skin temperature in Celsius of the device at the moment of Display Switch. + optional int32 vskin_temperature_c = 17; + + // Fields tracking time elapsed between relevant events in milliseconds. Default values of + // below fields will be -1 in case they are not tracked. + // The time elapsed between the hall sensor unfold event and the first hinge angle event. + optional int32 hall_sensor_to_first_hinge_angle_change_ms = 18; + // The time elapsed between the hall sensor unfold/fold event and the device state change + // event. + optional int32 hall_sensor_to_device_state_change_ms = 19; + // The time elapsed between the onScreenTurningOn call and the onDrawn callback in SystemUI. + optional int32 onscreenturningon_to_ondrawn_ms = 20; + // The time elapsed between the onDrawn callback and the onScreenTurnedOn call in SystemUI. + optional int32 ondrawn_to_onscreenturnedon_ms = 21; + + enum StateEnum { + // The device is in none of the above mentioned states. + UNKNOWN = 0; + // When the device is sleeping with AOD enabled (Always on display). + AOD = 1; + // Device folded/unfolded when on lockscreen. + LOCKSCREEN = 2; + // Notification shade is open currently. + NOTIFICATION_SHADE = 3; + // When an app is being used in full-screen mode. + FULL_SCREEN_APP = 4; + // When 2 apps are being used in split-screen mode. + SPLIT_SCREEN_APPS = 5; + // Launcher app is being displayed currently. + LAUNCHER = 6; + // Overview/Recent apps screen is being displayed on the screen + // currently + OVERVIEW = 7; + // Freeform apps are currently being used, i.e. single or multiple apps are being + // displayed on screen in which the window size of each app is resizable. + FREEFORM_APPS = 8; + // Screen is off currently. + SCREEN_OFF = 9; + } + +} diff --git a/stats/atoms/telephony/satellite/satellite_extension_atoms.proto b/stats/atoms/telephony/satellite/satellite_extension_atoms.proto index 669cd5ab..f584ffd3 100644 --- a/stats/atoms/telephony/satellite/satellite_extension_atoms.proto +++ b/stats/atoms/telephony/satellite/satellite_extension_atoms.proto @@ -150,4 +150,10 @@ message SatelliteSosMessageRecommender { optional android.telephony.ServiceStateEnum cellular_service_state = 4; // Total count of times this event has occurred. optional int32 count = 5; + // Whether the device supports multiple SIMs. + optional bool is_multi_sim = 6; + // Handover type from emergency call to satellite messaging + optional android.telephony.RecommendingHandoverType recommending_handover_type = 7; + // Whether satellite communication is allowed in current location. + optional bool is_satellite_allowed_in_current_location = 8; }
\ No newline at end of file diff --git a/stats/atoms/telephony/telephony_extension_atoms.proto b/stats/atoms/telephony/telephony_extension_atoms.proto index 75ad1801..5c247f08 100644 --- a/stats/atoms/telephony/telephony_extension_atoms.proto +++ b/stats/atoms/telephony/telephony_extension_atoms.proto @@ -26,9 +26,15 @@ option java_package = "com.android.os.telephony"; option java_multiple_files = true; extend Atom { + optional CellularRadioPowerStateChanged cellular_radio_power_state_changed = 713 [(module) = "telephony"]; optional EmergencyNumbersInfo emergency_numbers_info = 10180 [(module) = "telephony"]; } +message CellularRadioPowerStateChanged { + optional android.telephony.CellularRadioPowerStateEnum state = 1 + [(state_field_option).exclusive_state = true, (state_field_option).nested = false]; +} + /** * pulled atom to capture all emergency numbers information stored. */ diff --git a/stats/atoms/transparency/boot_integrity_extension_atoms.proto b/stats/atoms/transparency/boot_integrity_extension_atoms.proto new file mode 100644 index 00000000..b7ce3eb7 --- /dev/null +++ b/stats/atoms/transparency/boot_integrity_extension_atoms.proto @@ -0,0 +1,30 @@ +syntax = "proto2"; + +package android.os.statsd.transparency; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +option java_package = "com.android.os.transparency"; +option java_multiple_files = true; + +extend Atom { + optional BootIntegrityInfoReported boot_integrity_info_reported = 775 [(module) = "framework"]; +} + +/** + * Boot integrity related information. + * + * * Sepolicy hash is calculated from /sys/fs/selinux/policy. + * + * Logs when boot is complete. + * Pushed from: + * frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java + */ +message BootIntegrityInfoReported { + // the hex encoded string of sepolicy (from sysfs) hash + optional string sepolicy_hash = 1; + // the hex encoded string of VBMeta Digest value + optional string vbmeta_digest = 2; +} + diff --git a/stats/atoms/tv/tv_extension_atoms.proto b/stats/atoms/tv/tv_extension_atoms.proto index 8482e322..2a8edb67 100644 --- a/stats/atoms/tv/tv_extension_atoms.proto +++ b/stats/atoms/tv/tv_extension_atoms.proto @@ -26,6 +26,7 @@ option java_multiple_files = true; extend Atom { optional TvLowPowerStandbyPolicy tv_low_power_standby_policy = 679 [(module) = "tv_settings"]; + optional ExternalTvInputEvent external_tv_input_event = 717 [(module) = "framework"]; } /** @@ -38,3 +39,58 @@ message TvLowPowerStandbyPolicy { repeated string allowed_features = 4; optional bool is_selected = 5; } + +/** + * Logs external TV input events. + */ +message ExternalTvInputEvent { + enum EventType { + UNKNOWN = 0; + // a specific input is selected by user/TV App to be displayed on the screen. + TUNED = 1; + // the currently tuned input is released from the screen by selecting a + // new input, TV powering off, going to Home screen, etc. + RELEASED = 2; + // connection state of the current input is changed, + // e.g. connecting/disconnecting the cable. + CONNECTION_STATE_CHANGED = 3; + // device info is updated for the currently selected HDMI-CEC input. + DEVICE_INFO_UPDATED = 4; + } + enum InputState { + // keep in sync with TvInputManager.InputState. + CONNECTED = 0; + CONNECTED_STANDBY = 1; + DISCONNECTED = 2; + } + enum InputType { + // keep in sync with TvinputInfo.Type. + TUNER = 0; + OTHER = 1000; + COMPOSITE = 1001; + SVIDEO = 1002; + SCART = 1003; + COMPONENT = 1004; + VGA = 1005; + DVI = 1006; + HDMI = 1007; + DISPLAY_PORT = 1008; + } + // Type of the event. + optional EventType event_type = 1; + // Connection state of this input. + optional InputState input_state = 2; + // type of the input. + optional InputType input_type = 3; + // Vendor id of the external device for HDMI-CEC input. + // For non-CEC input, the value is 0xFFFFFF (16777215 in decimal). + optional int32 device_vendor_id = 4; + // HDMI port number on TV for HDMI input. + // For non-HDMI input, the value is -1. + optional int32 hdmi_port = 5; + // ID of this TIF (TV Input Framework) session. + optional string tif_session_id = 6; + // OSD display name of the external device for HDMI-CEC input, + // or user-displayed label for other TV inputs. + optional string display_name = 7; +} diff --git a/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto b/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto new file mode 100644 index 00000000..a421d33a --- /dev/null +++ b/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto @@ -0,0 +1,72 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.wear.connectivity; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/wear/connectivity/enums.proto"; + +option java_package = "com.android.os.wear.connectivity"; +option java_multiple_files = true; + +extend Atom { + optional MediatorUpdated mediator_updated = 721 [(module) = "wearconnectivity"]; + optional SysproxyBluetoothBytesTransfer sysproxy_bluetooth_bytes_transfer = 10196 + [(module) = "wearconnectivity"]; +} + +/** + * Logged whenever WearXMediator changes status, for example ON -> OFF. + * + * Logged from package: + * frameworks/opt/wear/src/com/android/clockwork/connectivity + */ +message MediatorUpdated { + // e.g. Bluetooth, Wifi, Wifi Scan, Cellular Radio, Cellular Data + optional com.google.android.wearable.connectivity.MediatorType mediatorType = 1; + + // The mediator action taken. e.g. ON/OFF + optional com.google.android.wearable.connectivity.MediatorAction action = 2; + + // The reason of mediator state change + optional com.google.android.wearable.connectivity.Reason reason = 3; + + // The event that triggers mediator state change + optional com.google.android.wearable.connectivity.TriggerEvent triggerEvent = 4; + + // Timestamp of the event log time in ElapsedRealtime + optional int64 timestamp_millis = 5; +} + +/** + * Pulls bytes transferred via Sysproxy. Each pull produces atoms that record stats of all processes + * that used sysproxy since device boot. Sysproxy is a process that runs on Wear OS and that enables + * internet access via Bluetooth when the companion phone is connected to the watch. + */ +message SysproxyBluetoothBytesTransfer { + // UID of a process that had some bytes received or transmitted via sysproxy. + // UID is set to -1 if it impossible to identify which process the bytes should be attributed to. + optional int32 uid = 1 [(is_uid) = true]; + + // Number of bytes received since device boot. + optional int64 rx_bytes = 2; + + // Number of bytes transmitted since device boot. + optional int64 tx_bytes = 3; +} diff --git a/stats/atoms/wear/media/wear_media_atoms.proto b/stats/atoms/wear/media/wear_media_atoms.proto index 91e69fd4..6f953a03 100644 --- a/stats/atoms/wear/media/wear_media_atoms.proto +++ b/stats/atoms/wear/media/wear_media_atoms.proto @@ -36,4 +36,6 @@ message MediaSessionUpdated { optional string media_player_package_name = 1; // Depicts source of the request. Values : (PHONE/WATCH) optional android.app.wearservices.RequestSource source = 2; + // Version of the media session apk installed in the device. + optional int64 version_code = 3; } diff --git a/stats/atoms/wear/media/wear_media_extension_atoms.proto b/stats/atoms/wear/media/wear_media_extension_atoms.proto index cfe4c172..5df1d315 100644 --- a/stats/atoms/wear/media/wear_media_extension_atoms.proto +++ b/stats/atoms/wear/media/wear_media_extension_atoms.proto @@ -21,6 +21,7 @@ package android.os.statsd.wear.media; import "frameworks/proto_logging/stats/atom_field_options.proto"; import "frameworks/proto_logging/stats/atoms.proto"; import "frameworks/proto_logging/stats/enums/wear/media/enums.proto"; +import "frameworks/proto_logging/stats/enums/media/outputswitcher/enums.proto"; option java_package = "com.android.os.wear.media"; option java_multiple_files = true; @@ -33,6 +34,18 @@ extend Atom { optional MediaControlsLaunched media_controls_launched = 609 [(module) = "wearmedia"]; + + optional MediaSessionStateChanged media_session_state_changed = 677 + [(module) = "wearmedia"]; + + optional WearMediaOutputSwitcherDeviceScanApiLatency + wear_media_output_switcher_device_scan_api_latency = 757 [(module) = "MediaOutputSwitcher"]; + + optional WearMediaOutputSwitcherSassDeviceUnavailable + wear_media_output_switcher_sass_device_unavailable = 758 [(module) = "MediaOutputSwitcher"]; + + optional WearMediaOutputSwitcherFastPairApiTimeout + wear_media_output_switcher_fastpair_api_timeout = 759 [(module) = "MediaOutputSwitcher"]; } message MediaActionReported { @@ -50,13 +63,14 @@ message MediaActionReported { // Depicts is the media session being referred is remote or local. optional bool is_remote_session = 4; + + // Version of the media session apk installed in the device. + optional int64 version_code = 5; } message MediaControlsLaunched { - // Package name of the app that the user used to perform the action (eg: UMO - // or a 3p media app) - - optional int32 media_controls_package_uid = 1; + // Deprecated circa 6/2023 + optional int32 media_controls_package_uid = 1 [deprecated=true]; // Package name of the app that owns the media session. (This app is on the // paired phone, and not on the watch, hence cannot use uid) @@ -68,4 +82,93 @@ message MediaControlsLaunched { optional com.google.android.wearable.media.sessions.LaunchSource launch_source = 3; + + // Version of the media session apk installed in the device. + optional int64 version_code = 4; +} + +message MediaSessionStateChanged { + // States of the media session + enum SessionStateEnum { + SESSION_UNKNOWN = 0; + SESSION_IDLE = 1; + SESSION_BUFFERING = 2; + SESSION_READY = 3; + SESSION_ENDED = 4; + SESSION_DESTROYED = 5; + } + + enum PlaybackSuppressionReason { + PLAYBACK_SUPPRESSION_REASON_UNKNOWN = 0; + PLAYBACK_SUPPRESSION_REASON_NONE = 1; + PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS = 2; + PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_ROUTE = 3; + PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT = 4; + } + + // Package name of the app that owns the media session. (If is_remote_session + // = True, then the app is on the phone and we can’t use uid) + optional string media_player_package_name = 1; + + // Deprecated circa 5/2023 + optional int32 session_id = 2 [deprecated=true]; + + // Depicts is the media session being referred to as remote or local. + optional bool is_remote_session = 3; + + // State of the media session + optional SessionStateEnum state = 4; + + // Depicts if the media session should play when ready. + optional bool is_play_when_ready = 5; + + optional PlaybackSuppressionReason playback_suppression_reason = 6; + + // Depicts if the playback was suppressed previously due to unsuitable output + // and then resolved. + optional bool has_playback_suppression_due_to_unsuitable_output_resolved = 7; + + // Version of the media session apk installed in the device. + optional int64 version_code = 8; + +} + +/** + * Logs the latency of different device scan APIs used in OutputSwitcher. + * + * Logged from: + * package: vendor/google_clockwork/packages/Media + */ +message WearMediaOutputSwitcherDeviceScanApiLatency { + // Latency of notifying OutputSwitcher that a SASS device is available to connect to. + optional int32 latency_in_millis = 1; + + // Name of the media app package from where Output Switcher got triggered. + optional string triggering_package_name = 2; + + optional com.google.android.wearable.media.routing.MediaDeviceType media_device_type = 3; + + optional com.google.android.wearable.media.routing.MediumType medium_type = 4; +} + +/** + * Logs data when no SASS device is available. + * + * Logged from: + * package: vendor/google_clockwork/packages/Media + */ +message WearMediaOutputSwitcherSassDeviceUnavailable { + // Name of the media app package from where Output Switcher got triggered. + optional string triggering_package_name = 1; +} + +/** + * Logs data when FastPair API times out. + * + * Logged from: + * package: vendor/google_clockwork/packages/Media + */ +message WearMediaOutputSwitcherFastPairApiTimeout { + // Name of the media app package from where Output Switcher got triggered. + optional string triggering_package_name = 1; } diff --git a/stats/atoms/wear/modes/wear_modes_extension_atoms.proto b/stats/atoms/wear/modes/wear_modes_extension_atoms.proto new file mode 100644 index 00000000..81e98e33 --- /dev/null +++ b/stats/atoms/wear/modes/wear_modes_extension_atoms.proto @@ -0,0 +1,52 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.wear.modes; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/enums/wear/modes/enums.proto"; + +option java_package = "com.android.os.wear.modes"; +option java_multiple_files = true; + +extend Atom { + optional WearModeStateChanged wear_mode_state_changed = 715 [(module) = "framework"]; +} + +// This file contains atom related to Modes in Wear. + +message WearModeStateChanged { + // ModeId of the mode being toggled + optional com.google.android.wearable.modes.telemetry.ModeId mode_id = 1; + + // ModeState of the mode being toggled [MODE_STATE_OFF, MODE_STATE_ON] + optional com.google.android.wearable.modes.telemetry.ModeState mode_state = 2; + + // Current Wifi state when mode is toggled + optional com.google.android.wearable.modes.telemetry.NetworkState current_wifi_state = 3; + + // Current LTE state when mode is toggled + optional com.google.android.wearable.modes.telemetry.NetworkState current_cellular_state = 4; + + // Current BT state when mode is toggled + optional com.google.android.wearable.modes.telemetry.NetworkState current_bluetooth_state = 5; + + // Current Battery level. Should be in [0, 100]. + optional int32 battery_level = 6; +} diff --git a/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto b/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto new file mode 100644 index 00000000..b720ad36 --- /dev/null +++ b/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto @@ -0,0 +1,417 @@ +/* + * 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 optional 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. + */ +syntax = "proto2"; + +package android.os.statsd.wear.prototiles; + +import "frameworks/proto_logging/stats/atom_field_options.proto"; +import "frameworks/proto_logging/stats/atoms.proto"; + +option java_package = "com.android.os.wear.prototiles"; +option java_multiple_files = true; + +extend Atom { + optional RendererInitialized renderer_initialized = 736 + [(module) = "prototiles"]; + optional SchemaVersionReceived schema_version_received = 737 + [(module) = "prototiles"]; + optional LayoutInspected layout_inspected = 741 + [(module) = "prototiles"]; + optional LayoutExpressionsInspected layout_expression_inspected = 742 + [(module) = "prototiles"]; + optional LayoutAnimationsInspected layout_animations_inspected = 743 + [(module) = "prototiles"]; + optional MaterialComponentsInspected material_components_inspected = 744 + [(module) = "prototiles"]; + optional TileRequested tile_requested = 745 + [(module) = "prototiles"]; + optional StateResponseReceived state_response_received = 746 + [(module) = "prototiles"]; + optional TileResponseReceived tile_response_received = 747 + [(module) = "prototiles"]; + optional InflationFinished inflation_finished = 748 + [(module) = "prototiles"]; + optional InflationFailed inflation_failed = 749 + [(module) = "prototiles"]; + optional IgnoredInflationFailuresReported ignored_inflation_failures_reported = 750 + [(module) = "prototiles"]; + optional DrawableRendered drawable_rendered = 751 + [(module) = "prototiles"]; + +} + +/** + * This atom captures the initialization duration and the renderer version when + * the renderer finish initializing. + */ +message RendererInitialized { + // Renderer initializing duration. + optional int32 renderer_initialization_duration_millis = 1; + // Version of the renderer installed in the device. + optional int64 version_code = 2; +} + +/** + * This atom captures the tile schema version when the tile get rendered for the + * first time. + */ +message SchemaVersionReceived { + optional int32 package_uid = 1 [(is_uid) = true]; + // Layout schema version used by the tile. + optional int32 tile_schema_version_major = 2; + optional int32 tile_schema_version_minor = 3; +} + +/** + * This atom captures the structure of the inspected layout. We do inspect every + * layout before it starts rendering. + */ +message LayoutInspected { + enum LayoutDepthBucket { + LAYOUT_DEPTH_BUCKET_UNSPECIFIED = 0; + LAYOUT_DEPTH_BUCKET_UNDER_FIVE_NODES = 1; + LAYOUT_DEPTH_BUCKET_FIVE_TO_TEN_NODES = 2; + LAYOUT_DEPTH_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3; + LAYOUT_DEPTH_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 4; + LAYOUT_DEPTH_BUCKET_OVER_FIFTY_NODES = 5; + } + enum LayoutElementCountBucket { + LAYOUT_ELEMENT_COUNT_BUCKET_UNSPECIFIED = 0; + LAYOUT_ELEMENT_COUNT_BUCKET_UNDER_TEN_ELEMENTS = 1; + LAYOUT_ELEMENT_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ELEMENTS = 2; + LAYOUT_ELEMENT_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ELEMENTS = 3; + LAYOUT_ELEMENT_COUNT_BUCKET_FIFTY_TO_HUNDRED_ELEMENTS = 4; + LAYOUT_ELEMENT_COUNT_BUCKET_OVER_HUNDRED_ELEMENTS = 5; + } + enum LayoutBinarySizeBucket { + LAYOUT_BINARY_SIZE_BUCKET_UNSPECIFIED = 0; + LAYOUT_BINARY_SIZE_BUCKET_UNDER_ONE_KIB = 1; + LAYOUT_BINARY_SIZE_BUCKET_ONE_TO_TEN_KIB = 2; + LAYOUT_BINARY_SIZE_BUCKET_TEN_TO_TWENTY_FIVE_KIB = 3; + LAYOUT_BINARY_SIZE_BUCKET_TWENTY_FIVE_TO_FIFTY_KIB = 4; + LAYOUT_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 5; + LAYOUT_BINARY_SIZE_BUCKET_OVER_HUNDRED_KIB = 6; + } + + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // The depth of the inspected layout. + optional LayoutDepthBucket layout_depth_bucket = 3; + // The node count fo the inspected layout. + optional LayoutElementCountBucket layout_element_count_bucket = 4; + // The binary size of the inspected layout. + optional LayoutBinarySizeBucket layout_size_bucket = 5; +} + +/** + * This atom captures the structure of nodes in the inspected layout. We do + * inspect every expression when inspecting the layout. + */ +message LayoutExpressionsInspected { + enum TotalExpressionNodeCountBucket { + TOTAL_EXPRESSION_NODE_COUNT_BUCKET_UNSPECIFIED = 0; + TOTAL_EXPRESSION_NODE_COUNT_BUCKET_UNDER_TEN_NODES = 1; + TOTAL_EXPRESSION_NODE_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 2; + TOTAL_EXPRESSION_NODE_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 3; + TOTAL_EXPRESSION_NODE_COUNT_BUCKET_OVER_FIFTY_NODES = 4; + } + enum MaxNodesCountPerExpressionBucket { + MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_UNSPECIFIED = 0; + MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_UNDER_FIVE_NODES = 1; + MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_FIVE_TO_TEN_NODES = 2; + MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3; + MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_OVER_TWENTY_FIVE_NODES = 5; + } + enum MaxNodesDepthPerExpressionBucket { + MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_UNSPECIFIED = 0; + MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_UNDER_FIVE_NODES = 1; + MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_FIVE_TO_TEN_NODES = 2; + MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3; + MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_OVER_TWENTY_FIVE_NODES = 5; + } + + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Count of expression nodes in the inspected layout. + optional TotalExpressionNodeCountBucket total_expression_node_count_bucket = + 3; + // Maximum count of nodes among all expression in inspected layout. + optional MaxNodesCountPerExpressionBucket + max_nodes_count_per_expression_bucket = 4; + // Maximum expression depth among all expression in inspected layout. + optional MaxNodesDepthPerExpressionBucket + max_nodes_depth_per_expression_bucket = 5; + // Platform data sources used in the inspected expressions (Bitset instead of repeated enum). + optional int32 platform_data_source = 6; +} + +/** + * This atom captures the animation objects structure in the inspected layout. + * We do inspect every animation when inspecting the layout. + */ +message LayoutAnimationsInspected { + + enum MaxAnimationDurationBucket { + MAX_ANIMATION_DURATION_BUCKET_UNSPECIFIED = 0; + MAX_ANIMATION_DURATION_BUCKET_UNDER_ONE_HUNDRED_MS = 1; + MAX_ANIMATION_DURATION_BUCKET_ONE_HUNDRED_MS_TO_FIVE_HUNDRED_MS = 2; + MAX_ANIMATION_DURATION_BUCKET_FIVE_HUNDRED_MS_TO_ONE_S = 3; + MAX_ANIMATION_DURATION_BUCKET_ONE_S_TO_FIVE_S = 4; + MAX_ANIMATION_DURATION_BUCKET_OVER_FIVE_S = 5; + } + + enum AnimationCountBucket { + ANIMATION_COUNT_BUCKET_UNSPECIFIED = 0; + ANIMATION_COUNT_BUCKET_ZERO = 1; + ANIMATION_COUNT_BUCKET_ONE_TO_THREE = 2; // [1:3[ + ANIMATION_COUNT_BUCKET_THREE_TO_FIVE = 3; // [3:5[ + ANIMATION_COUNT_BUCKET_FIVE_TO_TEN = 4; // [5:10[ + ANIMATION_COUNT_BUCKET_OVER_TEN = 5; + } + + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Count of animations in the inspected layout. + optional AnimationCountBucket animation_count_bucket = 3; + // The maximum duration of an animation in the inspected layout. + optional MaxAnimationDurationBucket max_animation_duration_bucket = 4; + // Animation types that are used in the inspected layout (Bitset instead of repeated enum). + optional int32 animation_type = 5; + // Whether the layout has a continues animation. + optional bool has_continuous_animation = 6; +} + +/** + * This atom captures the material components structure in the inspected layout. + * We do inspect every material component when inspecting the layout. + */ +message MaterialComponentsInspected { + + enum MaterialComponentCountBucket { + MATERIAL_COMPONENT_COUNT_BUCKET_UNSPECIFIED = 0; + MATERIAL_COMPONENT_COUNT_BUCKET_ZERO = 1; + MATERIAL_COMPONENT_COUNT_BUCKET_ONE_TO_FIVE = 2; // [1:5[ + MATERIAL_COMPONENT_COUNT_BUCKET_FIVE_TO_TEN = 3; // [5:10[ + MATERIAL_COMPONENT_COUNT_BUCKET_OVER_TEN = 4; + } + + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Number of material components used in the layout. + optional MaterialComponentCountBucket material_component_count_bucket = 3; + // Material component types used in the layout (Bitset instead of repeated enum). + optional int32 material_component_type = 4; +} + +/** + * This atom captures the tile requests. + */ +message TileRequested { + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // The reason of firing a tile request. + optional int32 count_of_freshness_based_request = 3; + optional int32 count_of_user_interaction_based_request = 4; + optional int32 count_of_visibility_change_based_request = 5; +} + +/** + * This atom captures the received State response. + */ +message StateResponseReceived { + enum StateEntriesCountBucket { + STATE_ENTRIES_COUNT_BUCKET_UNSPECIFIED = 0; + STATE_ENTRIES_COUNT_BUCKET_UNDER_TEN_ENTRIES = 1; + STATE_ENTRIES_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ENTRIES = 2; + STATE_ENTRIES_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ENTRIES = 3; + STATE_ENTRIES_COUNT_BUCKET_FIFTY_TO_HUNDRED_ENTRIES = 4; + STATE_ENTRIES_COUNT_BUCKET_OVER_HUNDRED_ENTRIES = 5; + } + enum StateBinarySizeBucket { + STATE_BINARY_SIZE_BUCKET_UNSPECIFIED = 0; + STATE_BINARY_SIZE_BUCKET_UNDER_ONE_KIB = 1; + STATE_BINARY_SIZE_BUCKET_ONE_TO_TEN_KIB = 2; + STATE_BINARY_SIZE_BUCKET_TEN_TO_TWENTY_FIVE_KIB = 3; + STATE_BINARY_SIZE_BUCKET_TWENTY_FIVE_TO_FIFTY_KIB = 4; + STATE_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 5; + STATE_BINARY_SIZE_BUCKET_OVER_HUNDRED_KIB = 6; + } + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Whether it is an initial state + optional bool is_initial_state = 3; + // Count of state entries. + optional StateEntriesCountBucket state_entries_count_bucket = 4; + // Binary size of the state object. + optional StateBinarySizeBucket state_binary_size_bucket = 5; +} + +/** + * This atom captures the structure of the received tile response. + */ +message TileResponseReceived { + enum TimeLineEntriesCountBucket { + TIMELINE_ENTRIES_COUNT_BUCKET_UNSPECIFIED = 0; + TIMELINE_ENTRIES_COUNT_BUCKET_ONE_ENTRY = 1; + TIMELINE_ENTRIES_COUNT_BUCKET_TWO_TO_FIVE_ENTRIES = 2; + TIMELINE_ENTRIES_COUNT_BUCKET_FIVE_TO_TEN_ENTRIES = 3; + TIMELINE_ENTRIES_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ENTRIES = 4; + TIMELINE_ENTRIES_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ENTRIES = 5; + TIMELINE_ENTRIES_COUNT_BUCKET_FIFTY_TO_HUNDRED_ENTRIES = 6; + TIMELINE_ENTRIES_COUNT_BUCKET_OVER_HUNDRED_ENTRIES = 7; + } + enum AvgTimelineEntryDurationBucket { + TIMELINE_DURATION_BUCKET_UNSPECIFIED = 0; + TIMELINE_DURATION_BUCKET_UNDER_ONE_S = 1; + TIMELINE_DURATION_BUCKET_ONE_S_TO_TEN_S = 2; + TIMELINE_DURATION_BUCKET_TEN_S_TO_TWENTY_S = 3; + TIMELINE_DURATION_BUCKET_TWENTY_S_TO_FORTY_S = 4; + TIMELINE_DURATION_BUCKET_FORTY_S_TO_ONE_M = 5; + TIMELINE_DURATION_BUCKET_ONE_M_TO_TEN_M = 6; + TIMELINE_DURATION_BUCKET_TEN_M_TO_THIRTY_M = 7; + TIMELINE_DURATION_BUCKET_THIRTY_M_TO_ONE_H = 8; + TIMELINE_DURATION_BUCKET_ONE_H_TO_THREE_H = 9; + TIMELINE_DURATION_BUCKET_OVER_THREE_H = 10; + } + enum FreshnessBucket { + FRESHNESS_BUCKET_UNSPECIFIED = 0; + FRESHNESS_BUCKET_UNDER_ONE_S = 1; + FRESHNESS_BUCKET_ONE_S_TO_TEN_S = 2; + FRESHNESS_BUCKET_TEN_S_TO_TWENTY_S = 3; + FRESHNESS_BUCKET_TWENTY_S_TO_FORTY_S = 4; + FRESHNESS_BUCKET_FORTY_S_TO_ONE_M = 5; + FRESHNESS_BUCKET_ONE_M_TO_TEN_M = 6; + FRESHNESS_BUCKET_TEN_M_TO_THIRTY_M = 7; + FRESHNESS_BUCKET_THIRTY_M_TO_ONE_H = 8; + FRESHNESS_BUCKET_ONE_H_TO_THREE_H = 9; + FRESHNESS_BUCKET_OVER_THREE_H = 10; + } + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + + optional TimeLineEntriesCountBucket timeline_entries_count_bucket = 3; + // The avg duration of timelines in this tile response. + optional AvgTimelineEntryDurationBucket avg_timeline_entry_duration_bucket = 4; + // The freshness value for the tile. + optional FreshnessBucket freshness_bucket = 5; + // Whether the resource version changed. + optional bool resource_version_changed = 6; +} + +/** + * This atom captures the result of layout inflation. + */ +message InflationFinished {// Layout + enum InflationDurationBucket { + INFLATION_DURATION_BUCKET_UNSPECIFIED = 0; + INFLATION_DURATION_BUCKET_UNDER_ONE_MS = 1; + INFLATION_DURATION_BUCKET_ONE_MS_TO_TEN_MS = 2; + INFLATION_DURATION_BUCKET_TEN_MS_TO_FIFTY_MS = 3; + INFLATION_DURATION_BUCKET_FIFTY_MS_TO_HUNDRED_MS = 4; + INFLATION_DURATION_BUCKET_HUNDRED_MS_TO_THREE_HUNDRED_MS = 5; + INFLATION_DURATION_BUCKET_THREE_HUNDRED_MS_TO_SIX_HUNDRED_MS = 6; + INFLATION_DURATION_BUCKET_SIX_HUNDRED_MS_TO_ONE_S = 7; + INFLATION_DURATION_BUCKET_OVER_ONE_S = 10; + } + enum NodeInfoCountBucket { + NODE_INFO_COUNT_BUCKET_UNSPECIFIED = 0; + NODE_INFO_COUNT_BUCKET_UNDER_FIVE_NODES = 1; + NODE_INFO_COUNT_BUCKET_FIVE_TO_TEN_NODES = 2; + NODE_INFO_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3; + NODE_INFO_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 4; + NODE_INFO_COUNT_BUCKET_OVER_FIFTY_NODES = 5; + } + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Inflation duration. + optional InflationDurationBucket inflation_duration_bucket = 3; + // Changed NodeInfo objects count. NodeInfo is the entity representing the + // rendered view. + optional NodeInfoCountBucket changed_nodes_count_bucket = 4; + // Total count of NodeInfo objects. + optional NodeInfoCountBucket total_node_count_bucket = 5; +} + +/** + * This atom captures inflation blocking failures. These are failures that + causes the whole layout to be dropped. + + */ +message InflationFailed { + enum BlockingFailure { + BLOCKING_FAILURE_UNKNOWN = 0; + BLOCKING_FAILURE_NO_FAILURES = 1; + BLOCKING_FAILURE_MAX_LAYOUT_DEPTH_EXCEEDED = 2; + BLOCKING_FAILURE_MAX_EXPRESSION_NODE_COUNT_EXCEEDED = 3; + } + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // A failure causing the rendering to abort. + optional BlockingFailure blocking_failure = 3; +} + +// Atom to capture ignored failures during an inflation. +message IgnoredInflationFailuresReported { + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // A list of ignored failures (Bitset instead of repeated enum). + optional int32 ignored_failure = 3; +} + +/** + * This atom captures the drawables used for each layout. + */ +message DrawableRendered { + enum DrawableBinarySizeBucket { + DRAWABLE_BINARY_SIZE_BUCKET_UNSPECIFIED = 0; + DRAWABLE_BINARY_SIZE_BUCKET_UNDER_TEN_KIB = 1; + DRAWABLE_BINARY_SIZE_BUCKET_TEN_TO_FIFTY_KIB = 2; + DRAWABLE_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 3; + DRAWABLE_BINARY_SIZE_BUCKET_HUNDRED_TO_THREE_HUNDRED_KIB = 4; + DRAWABLE_BINARY_SIZE_BUCKET_THREE_HUNDRED_TO_SIX_HUNDRED_KIB = 5; + DRAWABLE_BINARY_SIZE_BUCKET_SIX_HUNDRED_TO_ONE_MB = 6; + DRAWABLE_BINARY_SIZE_BUCKET_ONE_MB_TO_FIVE_MB = 7; + DRAWABLE_BINARY_SIZE_BUCKET_OVER_FIVE_MB = 8; + } + + enum DrawablePixelsCountBucket { + DRAWABLE_PIXEL_SIZE_BUCKET_UNSPECIFIED = 0; + DRAWABLE_PIXEL_SIZE_BUCKET_UNDER_100_PX = 1; + DRAWABLE_PIXEL_SIZE_BUCKET_100_TO_1000_PX = 2; + DRAWABLE_PIXEL_SIZE_BUCKET_1000_TO_10000_PX = 3; + DRAWABLE_PIXEL_SIZE_BUCKET_10000_TO_100000_PX = 4; + DRAWABLE_PIXEL_SIZE_BUCKET_100000_TO_10000000_PX = 5; + DRAWABLE_PIXEL_SIZE_BUCKET_OVER_10000000_PX = 6; + } + optional int32 package_uid = 1 [(is_uid) = true]; + optional int32 classname_hash = 2; + // Drawable types (Bitset instead of repeated enum). + // Bit to drawable type mapping is as follow: + // - 0 -> UNKNOWN + // - 1 -> BITMAP + // - 2 -> VECTOR_DRAWABLE + // - 3 -> ANIMATED_IMAGE_DRAWABLE + // - 4 -> ANIMATED_VECTOR_DRAWABLE + // - 5 -> STATE_BASED + // For example, if the inflated layout contains a Bitmap and a state based + // drawable, the drawable_type field will be equal to 34 = (100010)b. + optional int32 drawable_type = 3; + // Binary size of the largest drawable. + optional DrawableBinarySizeBucket binary_size_bucket = 4; + // Pixels count of the largest drawable. Calculated as Height (px) x width + // (px). + optional DrawablePixelsCountBucket drawable_pixels_count_bucket = 5; +} diff --git a/stats/atoms/wearpas/wearpas_extension_atoms.proto b/stats/atoms/wearpas/wearpas_extension_atoms.proto index 2a5cc5a9..d74b41d3 100644 --- a/stats/atoms/wearpas/wearpas_extension_atoms.proto +++ b/stats/atoms/wearpas/wearpas_extension_atoms.proto @@ -162,36 +162,38 @@ message WearPowerAnomalyServiceEventStatsReported { } enum Status { + STATUS_UNSPECIFIED = 0; + /** * If the triggered anomaly rule does not have additional reactions beyond * "WW stats" and "bugreport", this will be sent once upon detection. */ - NEW_NO_REACTIONS = 0; + NEW_NO_REACTIONS = 1; /** * If the triggered anomaly rule does have additional reactions, this will * be sent once upon detection and be followed by one of * {RESOLVED_POST_REACTIONS, UNRESOLVED_POST_REACTIONS} */ - NEW_REACTIONS_PENDING = 1; + NEW_REACTIONS_PENDING = 2; /** * Following an anomaly with additional reactions, this will be sent if the * reactions have resolved the anomaly. */ - RESOLVED_POST_REACTIONS = 2; + RESOLVED_POST_REACTIONS = 3; /** * Following an anomaly with additional reactions, this will be sent if the * reactions have not resolved the anomaly. */ - UNRESOLVED_POST_REACTIONS = 3; + UNRESOLVED_POST_REACTIONS = 4; /** * Following an anomaly with bugreport triggering enabled, this will be sent * if a bugreport is actually triggered (e.g. if rate limiting allows). */ - BUGREPORT_TRIGGERED = 4; + BUGREPORT_TRIGGERED = 5; } /* Power entity type for which an anomaly was detected */ @@ -207,7 +209,7 @@ message WearPowerAnomalyServiceEventStatsReported { optional int32 rule_id = 3; /** - * Resource ID for standard Google stock apps/resources + * Resource ID (cross-device) for standard Google stock apps/resources * (ONLY FACTORY GOOGLE FLASHED APPS). Mapping is stored server-side. */ optional int32 resource_holder_id = 4; diff --git a/stats/atoms/wearservices/wearservices_atoms.proto b/stats/atoms/wearservices/wearservices_atoms.proto index 03e9f99b..8659efb8 100644 --- a/stats/atoms/wearservices/wearservices_atoms.proto +++ b/stats/atoms/wearservices/wearservices_atoms.proto @@ -61,16 +61,85 @@ message WsNotificationUpdated { // Importance of the notification after this update. optional android.app.wearservices.NotificationImportance importance = 4; + + // The transport channel this notification is coming from. + optional android.app.wearservices.NotificationTransportChannel + transport_channel = 5; + + // The alerting effect of the notification. + optional android.app.wearservices.NotificationAlertingEffect alerting_effect = + 6; + + // The group alert behavior of the notification. + optional android.app.wearservices.NotificationGroupAlertBehavior + group_alert_behavior = 7; + + // The alert behavior controlled by the ALERT_ONLY_ONCE flag. + optional android.app.wearservices.NotificationAlertOnlyOnce alert_only_once = + 8; + + // The group type of the notification. + optional android.app.wearservices.NotificationGroupType group_type = 9; + + // The style of the notification. + optional android.app.wearservices.NotificationStyle style = 10; + + // The hidden reason of the notification. + optional android.app.wearservices.NotificationHiddenReason hidden_reason = 11; + + // The categories for the notification. + optional android.app.wearservices.NotificationCategory category = 12; + + // Whether this notification has set FLAG_ONGOING_EVENT. Which means there may + // be many updates for this notification. (eg. app download progress updates). + optional bool is_ongoing_notification = 13; + + // Whether this notification is an emergency cell broadcast message. + optional bool is_emergency = 14; + + // Whether this notification comes from apps running in the work profile. + optional bool is_work_profile = 15; + + // The content intent actions for the notification. + optional android.app.wearservices.NotificationContentIntent content_intent = + 16; + + // Whether actions contain remote input (e.g. Reply). + optional bool has_remote_input = 17; + + // Number value for all actions, including actions with remote input. Count + // wearable actions if they exist, otherwise counting the standard actions. + // Can be 0 or above, cap to 10 as we have this same limit in SysUI. + optional int32 action_count = 18; + + // Whether this notification contains bigPicture image, largeIcon image, or + // message images. + optional bool has_big_images = 19; + + // Whether this notification has set a dismissal-id. + optional bool has_dismissal_id = 20; + + // Whether this notification has set FLAG_FOREGROUND_SERVICE. Which means the + // notification may be frequently updated. + optional bool is_foreground_service = 21; } -/** - * Atom used to log the wear time for Wearables. - * - * Logged from package : - * vendor/google_clockwork_partners/packages/WearServices - */ -message WsWearTimeSession { - optional int64 session_duration_millis = 1; +/** Logged when a notification is blocked/unblocked in the WearServices application. */ +message WsNotificationBlocking { + // Package name of the application that created the notification event. + optional string package_name = 1; + + // Device on which the notification event was created. + optional android.app.wearservices.RequestSource source_device = 2; + + // Defines on which device the blocked state is changed. + optional android.app.wearservices.DeviceLocation device_location = 3; + + // Defines in which profile the application is installed. + optional android.app.wearservices.Profile profile= 4; + + // Blocking status of the notifications for the application. + optional android.app.wearservices.NotificationBlockingStatus notification_blocking_status = 5; } /** Logged when a complication is tapped by the user. */ diff --git a/stats/atoms/wearservices/wearservices_extension_atoms.proto b/stats/atoms/wearservices/wearservices_extension_atoms.proto index 21700725..f5459878 100644 --- a/stats/atoms/wearservices/wearservices_extension_atoms.proto +++ b/stats/atoms/wearservices/wearservices_extension_atoms.proto @@ -26,21 +26,28 @@ option java_package = "com.android.os.wearservices"; option java_multiple_files = true; extend Atom { + // Pushed Atom + optional WsWearTimeSession ws_wear_time_session = 610 + [(module) = "wearservices"]; optional WsIncomingCallActionReported ws_incoming_call_action_reported = 626 - [(module) = "wearservices_metrics"]; + [(module) = "wearservices"]; optional WsCallDisconnectionReported ws_call_disconnection_reported = 627 - [(module) = "wearservices_metrics"]; + [(module) = "wearservices"]; optional WsCallDurationReported ws_call_duration_reported = 628 - [(module) = "wearservices_metrics"]; + [(module) = "wearservices"]; optional WsCallUserExperienceLatencyReported ws_call_user_experience_latency_reported = 629 - [(module) = "wearservices_metrics"]; + [(module) = "wearservices"]; optional WsCallInteractionReported ws_call_interaction_reported = 630 - [(module) = "wearservices_metrics"]; + [(module) = "wearservices"]; + + // Pulled Atom + optional WsStandaloneModeSnapshot ws_standalone_mode_snapshot = 10197 + [(module) = "wearservices"]; } /** @@ -150,3 +157,25 @@ message WsCallInteractionReported { // CALL_SOURCE_PHONE_COMPANION) optional android.app.wearservices.CallSource call_source = 2; } + +/** + * Atom used to log the wear time for Wearables. + * + * Logged from package : + * vendor/google_clockwork_partners/packages/WearServices + */ +message WsWearTimeSession { + optional int64 session_duration_millis = 1; +} + +/** +* A snapshot of the tether status on certain watches. +* (go/wear-tether-mode-telemetry) +* +* Logged from package : +* vendor/google_clockwork_partners/packages/WearServices +*/ +message WsStandaloneModeSnapshot { + // Depicts the standalone/tether status of the watch. + optional android.app.wearservices.TetherConfigurationStatus tether_configuration_status = 1; +} diff --git a/stats/atoms/wearsysui/wearsysui_extension_atoms.proto b/stats/atoms/wearsysui/wearsysui_extension_atoms.proto new file mode 100644 index 00000000..abf7551e --- /dev/null +++ b/stats/atoms/wearsysui/wearsysui_extension_atoms.proto @@ -0,0 +1,52 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.os.statsd.wearsysui; + +import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/atom_field_options.proto"; + +option java_package = "com.android.os.wearsysui"; +option java_multiple_files = true; + +extend Atom { + // Pushed Atom + optional WearPowerMenuOpened wear_power_menu_opened = 731 + [(module) = "framework"]; + optional WearAssistantOpened wear_assistant_opened = 755 + [(module) = "framework"]; +} + +/** + * Logs whenever the Power Menu is opened for Wear + * Logged from : + * vendor/google_clockwork/packages/SystemUI/src/com/google/android/clockwork/systemui/statusbar/WearGlobalActionsProvider.java + */ +message WearPowerMenuOpened { + optional bool device_provisioned = 1; + optional bool setup_wizard_completed = 2; +} + +/** + * Logs whenever Assistant is opened for Wear + * Logged from : + * vendor/google_clockwork/packages/SystemUI/src/com/google/android/clockwork/systemui/assist/WearAssistManager.java + */ +message WearAssistantOpened { + optional bool in_retail_mode = 1; +}
\ No newline at end of file diff --git a/stats/atoms/wifi/wifi_extension_atoms.proto b/stats/atoms/wifi/wifi_extension_atoms.proto index 11517411..2dae6a7e 100644 --- a/stats/atoms/wifi/wifi_extension_atoms.proto +++ b/stats/atoms/wifi/wifi_extension_atoms.proto @@ -20,6 +20,7 @@ package android.os.statsd.wifi; import "frameworks/proto_logging/stats/atom_field_options.proto"; import "frameworks/proto_logging/stats/atoms.proto"; +import "frameworks/proto_logging/stats/enums/stats/connectivity/network_stack.proto"; import "frameworks/proto_logging/stats/enums/wifi/enums.proto"; import "frameworks/proto_logging/stats/attribution_node.proto"; @@ -45,10 +46,17 @@ extend Atom { = 693 [(module) = "wifi"]; optional WifiThreadTaskExecuted wifi_thread_task_executed = 694 [(module) = "wifi"]; optional WifiStateChanged wifi_state_changed = 700 [(module) = "wifi"]; + optional PnoScanStarted pno_scan_started = 719 [(module) = "wifi"]; + optional PnoScanStopped pno_scan_stopped = 720 [(module) = "wifi"]; + optional WifiIsUnusableReported wifi_is_unusable_reported = 722 [(module) = "wifi"]; + optional WifiApCapabilitiesReported wifi_ap_capabilities_reported= 723 [(module) = "wifi"]; // Pull metrics optional WifiAwareCapabilities wifi_aware_capabilities = 10190 [(module) = "wifi"]; optional WifiModuleInfo wifi_module_info = 10193 [(module) = "wifi"]; + optional WifiSettingInfo wifi_setting_info = 10194 [(module) = "wifi"]; + optional WifiComplexSettingInfo wifi_complex_setting_info = 10195 [(module) = "wifi"]; + optional WifiConfiguredNetworkInfo wifi_configured_network_info = 10198 [(module) = "wifi"]; } /** @@ -221,10 +229,6 @@ message SoftApStopped { STOP_EVENT_HOSTAPD_FAILURE = 4; // Stopped due to no usage timeout STOP_EVENT_NO_USAGE_TIMEOUT = 5; - // Single DBS instance stopped due to no usage timeout - STOP_EVENT_NO_USAGE_TIMEOUT_ONE_INSTANCE = 6; - // Single DBS instance stopped due to failure - STOP_EVENT_INSTANCE_FAILURE = 7; } // Soft AP stop event optional StopEvent stop_event = 1; @@ -248,50 +252,52 @@ message SoftApStopped { optional android.net.wifi.WifiStandard standard = 10; // Max num of associated clients for the entire session optional int32 max_clients = 11; + // Whether or not the opportunistic no usage timeout for DBS is enabled + optional bool is_dbs_timeout_enabled = 12; + // Band of the DBS instance that failed, if any + optional int32 dbs_instance_failure_band = 13; + // Band of the DBS instance that timed out, if any + optional int32 dbs_instance_timeout_band = 14; + // Upstream transport type at the time of stopping + optional android.stats.connectivity.TransportType upstream_transport = 15; } /** * Logged when wifi lock is released */ message WifiLockReleased { - // Attribution tag of the caller - optional string attribution_tag = 1; - // UID of the caller - optional int32 uid = 2; + // The AttributionNode to identify the caller + repeated AttributionNode attribution_node = 1; // Permission model of the caller - optional android.net.wifi.WifiCallerType caller_type = 3; + optional android.net.wifi.WifiCallerType caller_type = 2; // Lock mode - optional android.net.wifi.WifiModeEnum mode = 4; + optional android.net.wifi.WifiModeEnum mode = 3; // For how long the lock is acquired in milliseconds - optional int32 acquired_duration = 5; + optional int64 acquired_duration_ms = 4; // Whether power save disable is allowed during lock acquire - optional bool is_powersave_disable_allowed = 6; + optional bool is_powersave_disable_allowed = 5; // Whether the application which acquired the lock is exempted from screen ON - optional bool is_app_exempted_from_screen_on = 7; + optional bool is_app_exempted_from_screen_on = 6; // Whether the application which acquired the lock is exempted from being foreground - optional bool is_app_exempted_from_foreground = 8; + optional bool is_app_exempted_from_foreground = 7; } /** * Logged when wifi lock is deactivated */ message WifiLockDeactivated { - // Attribution tag of the caller - optional string attribution_tag = 1; - // UID of the caller - optional int32 uid = 2; - // Permission model of the caller - optional android.net.wifi.WifiCallerType caller_type = 3; + // The AttributionNode to identify the caller + repeated AttributionNode attribution_node = 1; // Lock mode - optional android.net.wifi.WifiModeEnum mode = 4; + optional android.net.wifi.WifiModeEnum mode = 2; // For how long the lock is activated in milliseconds - optional int32 activated_duration = 5; + optional int64 activated_duration_ms = 3; // Whether power save disable is allowed during the lock activation - optional bool is_powersave_disable_allowed = 6; + optional bool is_powersave_disable_allowed = 4; // Whether the application which activated the lock is exempted from screen ON - optional bool is_exempted_from_screen_on = 7; + optional bool is_exempted_from_screen_on = 5; // Whether the application which activated the lock is exempted from being foreground - optional bool is_exempted_from_foreground = 8; + optional bool is_exempted_from_foreground = 6; } /** @@ -386,4 +392,295 @@ message WifiStateChanged { optional bool wifi_wake_enabled = 2; // If the state change was due to Wi-Fi Wake optional bool enabled_by_wifi_wake = 3; -}
\ No newline at end of file +} + +// Logged when a PNO scan is started. +message PnoScanStarted { + // Whether this scan includes Passpoint SSIDs + optional bool includes_passpoint_ssids = 1; +} + +// Logged when a PNO scan is stopped. +message PnoScanStopped { + enum StopReason { + UNSPECIFIED = 0; + SCAN_FAILED = 1; + FOUND_RESULTS = 2; + } + + enum FailureCode { + // Default value. Error is unknown + UNSPECIFIED_FAILURE = 0; + // No error occurred + NO_FAILURE = 1; + // Wificond scan returned a failure + WIFICOND_SCAN_FAILURE = 2; + // An error occurred while requesting the wificond scan + WIFICOND_REQUEST_FAILURE = 3; + // WifiScanningService returned a failure + WIFI_SCANNING_SERVICE_FAILURE = 4; + } + + // Reason that this scan stopped + optional StopReason stop_reason = 1; + // Number of results found by this scan + optional int32 num_results = 2; + // Whether we were scanning for Passpoint SSIDs + optional bool scanned_for_passpoint_ssids = 3; + // Whether any Passpoint results were found + optional bool includes_passpoint_results = 4; + // Whether this scan led to the selection of a connection candidate + optional bool candidate_selected = 5; + // Whether the connection candidate is a Passpoint network + optional bool candidate_is_passpoint = 6; + // Failure code if this scan stopped due to a failure + optional FailureCode failure_code = 7; +} + +/** + * Pulled to indicate a single boolean Wifi setting. + */ +message WifiSettingInfo { + enum SettingName { + UNSPECIFIED = 0; + WIFI_SCAN_ALWAYS_AVAILABLE = 1; + WIFI_SCAN_THROTTLE = 2; + WIFI_SCORING = 3; + WIFI_PASSPOINT = 4; + WIFI_WAKE = 5; + WIFI_ENHANCED_MAC_RANDOMIZATION = 6; + WIFI_NETWORKS_AVAILABLE_NOTIFICATION = 7; + LOCATION_MODE = 8; + } + + // Name of the Wifi setting + optional SettingName setting_name = 1; + // Whether the setting is enabled + optional bool enabled = 2; +} + +/** + * Pulled to indicate a single non-boolean Wifi setting. + */ +message WifiComplexSettingInfo { + enum MultiInternetMode { + // Default value. Mode is unknown. + MULTI_INTERNET_MODE_UNSPECIFIED = 0; + // Simultaneous connection to multiple APs is disabled + MULTI_INTERNET_MODE_DISABLED = 1; + // Enabled but restricted to a single network on multiple bands + MULTI_INTERNET_MODE_DBS_AP = 2; + // Enabled and allowed to connect to multiple APs using different bands + MULTI_INTERNET_MODE_MULTI_AP = 3; + } + + // Wifi multi-internet mode + optional MultiInternetMode multi_internet_mode = 1; +} + +/** + * Logged for every Wi-Fi unusable event. + */ +message WifiIsUnusableReported { + enum ReportType { + // Default/Invalid + TYPE_UNKNOWN = 0; + // There is a data stall from tx failures + TYPE_DATA_STALL_BAD_TX = 1; + // There is a data stall from rx failures + TYPE_DATA_STALL_TX_WITHOUT_RX = 2; + // There is a data stall from both tx and rx failures + TYPE_DATA_STALL_BOTH = 3; + // Firmware generated an alert + TYPE_FIRMWARE_ALERT = 4; + // IP Manager lost reachability to network neighbors + TYPE_IP_REACHABILITY_LOST = 5; + } + // Type of this report + optional ReportType type = 1; + // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for + // AOSP scorer. + optional int32 scorer_uid = 2 [(is_uid) = true]; + // Whether or not Wi-Fi is predicted as usable by the scorer + // Note: 'is_wifi_predicted_as_usable' is deprectaed by 'wifi_predicted_usability_state'. + optional bool is_wifi_predicted_as_usable = 3; + // Wi-Fi usability state as predicted by the scorer + optional android.net.wifi.WifiPredictedUsabilityState wifi_predicted_usability_state = 4; +} + +/** + * AP capabilities logged for every Wi-Fi connection + */ +message WifiApCapabilitiesReported { + /** + * Online certificate status protocol stapling type + */ + enum OcspType { + TYPE_OCSP_UNKNOWN = 0; + // Do not use OCSP stapling + TYPE_OCSP_NONE = 1; + // Try to use OCSP stapling, but not require response + TYPE_OCSP_REQUEST_CERT_STATUS = 2; + // Require valid OCSP stapling response + TYPE_OCSP_REQUIRE_CERT_STATUS = 3; + // Require valid OCSP stapling response for all not-trusted certificates + // in the server certificate chain + TYPE_OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 4; + } + + /** + * 6 GHz AP type as encoded in 'HE operation -> 6 GHz operation info -> Control -> + * Regulatory info' + */ + enum ApType6GHz { + AP_TYPE_6HZ_UNKNOWN = 0; + AP_TYPE_6GHZ_INDOOR = 1; + AP_TYPE_6GHZ_STANDARD_POWER = 2; + AP_TYPE_6GHZ_LOW_POWER_INDOOR = 3; + AP_TYPE_6GHZ_VERY_LOW_POWER = 4; + } + + // Whether roaming is initiated by the framework to connect this AP + optional bool is_framework_initiated_roaming = 1; + // The center frequency of the primary 20 MHz frequency (in MHz) of the channel over which the + // connection was made. + optional int32 channel_frequency_mhz = 2; + // Band of the channel_frequency_mhz + optional android.net.wifi.WifiBandBucket band_mhz = 3; + // The DTIM period (in beacon periods) of the AP + optional int32 dtimPeriod = 4; + // Security mode of the connection + optional android.net.wifi.SecurityMode connected_security_mode = 5; + // Whether AP is hidden + optional bool is_hidden = 6; + // Whether the AP is configured incorrectly as hidden by the user + optional bool is_incorrectly_configured_as_hidden = 7; + // Wi-Fi standard of the connection + optional android.net.wifi.WifiStandard standard = 8; + // Whether IEEE 802.11b supported by the AP + optional bool is_11b_supported = 9; + // EAP type used by the AP + optional android.net.wifi.EapType eap_type = 10; + // EAP inner method used by the AP + optional android.net.wifi.EapInnerMethod eap_inner_method = 11; + // OCSP used by the AP + optional OcspType ocsp_type = 12; + // Whether the AP enabled PMK caching + optional bool is_pmk_caching_enabled = 13; + // Whether AP supports MBO + optional bool is_mbo_supported = 14; + // Whether AP supports OCE + optional bool is_oce_supported = 15; + // Whether the AP supports FILS + optional bool is_fils_supported = 16; + // Whether AP requires TWT support (individual or broadcast) + optional bool is_twt_required = 17; + // Whether the AP supports individual TWT agreements + optional bool is_individual_twt_supported = 18; + // Whether the AP supports broadcast TWT agreements + optional bool is_broadcast_twt_supported = 19; + // Whether the AP supports restricted TWT agreements + optional bool is_restricted_twt_supported = 20; + // Whether the AP supports IEEE 802.11mc + optional bool is_11mc_supported = 21; + // Whether the AP supports IEEE 802.11az + optional bool is_11az_supported = 22; + // Passpoint release version if a Passpoint connection, otherwise PassPointRelease.UNKNOWN + optional android.net.wifi.PasspointRelease passpoint_release = 23; + // If the Passpoint connection is provided by the Home provider or Roaming/visited network + optional bool is_passpoint_home_provider = 24; + // 6 GHz AP type + optional ApType6GHz ap_type_6ghz = 25; + // Whether AP supports ECPS priority access + optional bool is_ecps_priority_access_supported = 26; +} + +/* + * Pulled to indicate a single configured network on the device. + */ +message WifiConfiguredNetworkInfo { + enum MacRandomization { + // Default value. Mode is unknown + MAC_RANDOMIZATION_UNSPECIFIED = 0; + // Factory MAC is used when connecting to this network + MAC_RANDOMIZATION_NONE = 1; + // Randomized MAC is generated once and reused for all connections to this network + MAC_RANDOMIZATION_PERSISTENT = 2; + // Randomized MAC is used and is not persisted across connections to this network + MAC_RANDOMIZATION_NON_PERSISTENT = 3; + // Framework decides on the MAC randomization strategy + MAC_RANDOMIZATION_AUTO = 4; + } + + enum MeteredOverride { + // Default value. Mode is unknown + METERED_OVERRIDE_UNSPECIFIED = 0; + // No metered override + METERED_OVERRIDE_NONE = 1; + // Override network to be metered + METERED_OVERRIDE_METERED = 2; + // Override network to be unmetered + METERED_OVERRIDE_NOT_METERED = 3; + } + + enum TofuConfiguration { + // Default value. + TOFU_CONFIGURATION_UNSPECIFIED = 0; + // TOFU is not enabled on the enterprise config. + TOFU_CONFIGURATION_NOT_ENABLED = 1; + // TOFU is enabled pre-connection. + TOFU_CONFIGURATION_ENABLED_PRE_CONNECTION = 2; + // Root CA was configured post-TOFU connection. + TOFU_CONFIGURATION_CONFIGURE_ROOT_CA = 3; + // Certificate pinning was used post-TOFU connection. + TOFU_CONFIGURATION_CERT_PINNING = 4; + } + + enum TofuDialogState { + // Default value. + TOFU_DIALOG_STATE_UNSPECIFIED = 0; + // Dialog was rejected by the user. + TOFU_DIALOG_STATE_REJECTED = 1; + // Dialog was accepted by the user. + TOFU_DIALOG_STATE_ACCEPTED = 2; + } + + // Unique ID for this network + optional int64 network_id = 1; + // Whether this is an Enterprise network + optional bool is_enterprise = 2; + // Whether this is a hidden network + optional bool is_hidden = 3; + // Whether this is a Passpoint network + optional bool is_passpoint = 4; + // Whether this is a suggestion network + optional bool is_suggestion = 5; + // Whether this network has a UTF-8 SSID + optional bool is_utf_8_ssid = 6; + // Whether the SSID translation feature is enabled + optional bool is_ssid_translation_enabled = 7; + // Whether this network was configured using TOFU + optional bool configured_using_tofu = 8; + // Whether this network has encountered a captive portal + optional bool encountered_captive_portal = 9; + // Whether this network has auto-join enabled + optional bool auto_join_enabled = 10; + // Security mode used by this network + optional android.net.wifi.SecurityMode connected_security_mode = 11; + // MAC randomization setting used by this network + optional MacRandomization mac_randomization = 12; + // Metered override setting used by this network + optional MeteredOverride metered_override = 13; + // EAP type used by this network + optional android.net.wifi.EapType eap_type = 14; + // EAP inner authentication method used by this network + optional android.net.wifi.EapInnerMethod eap_inner_auth_method = 15; + // Whether this network supports free OpenRoaming + optional bool free_open_roaming_supported = 16; + // Whether this network supports settled OpenRoaming + optional bool settled_open_roaming_supported = 17; + // Trust On First Use (TOFU) configuration for this network + optional TofuConfiguration tofu_configuration = 18; + // Whether the user accepted the TOFU dialog + optional TofuDialogState tofu_dialog_state = 19; +} diff --git a/stats/enums/adservices/common/adservices_enums.proto b/stats/enums/adservices/common/adservices_enums.proto index e547f3db..13cf6486 100644 --- a/stats/enums/adservices/common/adservices_enums.proto +++ b/stats/enums/adservices/common/adservices_enums.proto @@ -75,6 +75,11 @@ enum AttributionType { * - Measurement errors: 2001-3000 * - Fledge errors: 3001-4000 * - UX errors: 4001-5000 + * - FederatedCompute errors: 5001-6000 + * - AdExtDataServiceErrors: 6001-7000 + * - IAPC errors: 7001 - 8000 + * + * NOTE: AdId / AdSetId don't have a range yet (because they're just using common codes) */ enum ErrorCode { // Common Errors: 1-1000 @@ -98,6 +103,15 @@ enum ErrorCode { // Shared pref reset failure. SHARED_PREF_RESET_FAILURE = 8; + // Remote exception when calling the Cobalt upload API. + COBALT_UPLOAD_API_REMOTE_EXCEPTION = 9; + + // Exception occurred when parsing the Adservices Config XML provided by an app. + APP_MANIFEST_CONFIG_PARSING_ERROR = 10; + + // Generic exception when dealing with shared prefs. + SHARED_PREF_EXCEPTION = 11; + // Topics errors: 1001-2000 // Remote exception when calling get topics. GET_TOPICS_REMOTE_EXCEPTION = 1001; @@ -219,10 +233,64 @@ enum ErrorCode { // Error occurred when unable to fetch job scheduler. TOPICS_FETCH_JOB_SCHEDULER_FAILURE = 1039; + // Error occurred while deleting a table for Topics. + TOPICS_DELETE_TABLE_FAILURE = 1040; + + // Cobalt initialisation failure for Topics. + TOPICS_COBALT_LOGGER_INITIALIZATION_FAILURE = 1041; + + // Failure to convert plaintext topic object to encrypted topic. + TOPICS_ENCRYPTION_FAILURE = 1042; + + // Topics encryption key with invalid length. + TOPICS_ENCRYPTION_INVALID_KEY_LENGTH = 1043; + + // Topics encryption with invalid response length. + TOPICS_ENCRYPTION_INVALID_RESPONSE_LENGTH = 1044; + + // Topics encryption key failed to decode with Base64 decoder. + TOPICS_ENCRYPTION_KEY_DECODE_FAILURE = 1045; + + // Topics encryption received null params in request for the encrypter. + TOPICS_ENCRYPTION_NULL_REQUEST = 1046; + + // Topics encryption received null response from the encrypter. + TOPICS_ENCRYPTION_NULL_RESPONSE = 1047; + + // Topics encryption received error while serialization to JSON. + TOPICS_ENCRYPTION_SERIALIZATION_ERROR = 1048; + + // Topics encryption public key is missing. + TOPICS_ENCRYPTION_KEY_MISSING = 1049; + // Measurement errors: 2001-3000 - // Error eccurred when inserting enrollment data to DB. + // Error occurred when inserting enrollment data to DB. ENROLLMENT_DATA_INSERT_ERROR = 2001; + // Error occurred when deleting enrollment data to DB. + ENROLLMENT_DATA_DELETE_ERROR = 2002; + + // Measurement foreground unknown failure. + MEASUREMENT_FOREGROUND_UNKNOWN_FAILURE = 2003; + + // Measurement datastore failure. + MEASUREMENT_DATASTORE_FAILURE = 2004; + + // Measurement datastore unknown failure. + MEASUREMENT_DATASTORE_UNKNOWN_FAILURE = 2005; + + // Measurement invalid parameter fetching public keys. + MEASUREMENT_PUBLIC_KEY_FETCHER_INVALID_PARAMETER = 2006; + + // Measurement IO exception while fetching public keys. + MEASUREMENT_PUBLIC_KEY_FETCHER_IO_ERROR = 2007; + + // Measurement error while parsing public keys. + MEASUREMENT_PUBLIC_KEY_FETCHER_PARSING_ERROR = 2008; + + // Failure to save seed in SharedPreferences + ENROLLMENT_SHARED_PREFERENCES_SEED_SAVE_FAILURE = 2009; + // UX errors: 4001-5000 CONSENT_REVOKED_ERROR = 4001; @@ -262,8 +330,46 @@ enum ErrorCode { // App search consent data migration failure. APP_SEARCH_DATA_MIGRATION_FAILURE = 4013; - // Ad services entry point failure. + // Adservices entry point failure. AD_SERVICES_ENTRY_POINT_FAILURE = 4014; + + // Used to be MEASUREMENT_FOREGROUND_UNKNOWN_FAILURE but renamed in + // commit 94af8756d2f03ff17924721ee1b7c4a4520377ff + RESERVED_ERROR_CODE_4015 = 4015; + + // FederatedCompute errors: 5001-6000 + // Datastore exception while deleting a federated task. + DELETE_TASK_FAILURE = 5001; + + // Exception while trying to close file descriptor. + FILE_DESCRIPTOR_CLOSE_ERROR = 5002; + + // Error message indicating invalid federated job plan type. + CLIENT_PLAN_SPEC_ERROR = 5003; + + // Exception when trying to parse protobuf message. + INVALID_PROTOBUF_ERROR = 5004; + + // Exception occurred when isolated training process runs. + ISOLATED_TRAINING_PROCESS_ERROR = 5005; + + // Exception while trying to iterate data. + ITERATOR_NEXT_FAILURE = 5006; + + // Timeout exception while trying to iterate data. + ITERATOR__NEXT_TIMEOUT = 5007; + + // AdExtDataService get failed + GET_ADEXT_DATA_SERVICE_ERROR = 6001; + + // AdExtDataService put failed + PUT_ADEXT_DATA_SERVICE_ERROR = 6002; + + // IAPC errors: 7001-8000 + // AdIdProviderService is not available. + IAPC_AD_ID_PROVIDER_NOT_AVAILABLE = 7001; + // Exception when calling UpdateAdId API in service side. + IAPC_UPDATE_AD_ID_API_ERROR = 7002; } /** @@ -277,6 +383,11 @@ enum PpapiName { AD_ID = 4; APP_SET_ID = 5; UX = 6; + // Use COMMON enum when the error happens in the common code path. + COMMON = 7; + // Represents federatedcompute APK in OnDevicePersonalization module. + FEDERATED_COMPUTE = 8; + ADEXT_DATA_SERVICE = 9; } /** @@ -326,4 +437,3 @@ enum AdServiceSettingRegion { // Non-European Union user (based on isoCountryInfo). ROW = 2; } - diff --git a/stats/enums/adservices/enrollment/enums.proto b/stats/enums/adservices/enrollment/enums.proto new file mode 100644 index 00000000..88faa1ab --- /dev/null +++ b/stats/enums/adservices/enrollment/enums.proto @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2017 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. + */ + +syntax = "proto2"; +package android.stats.adservices.enrollment; + +option java_outer_classname = "EnrollmentProtoEnums"; +option java_multiple_files = true; + +/** + * Enum used by EnrollmentDataStats. + */ +enum TransactionType { + UNKNOWN_TRANSACTION_TYPE = 0; + READ_TRANSACTION_TYPE = 1; + WRITE_TRANSACTION_TYPE = 2; +} + +/** + * Enum used by EnrollmentDataFailed. + */ +enum DataFileGroupStatus { + UNKNOWN_DATA_FILE_GROUP_STATUS = 0; + DOWNLOADED_DATA_FILE_GROUP_STATUS = 1; + PENDING_DATA_FILE_GROUP_STATUS = 2; + PENDING_CUSTOM_VALIDATION = 3; +} + +/** + * Enum used by EnrollmentDataFailed. + */ +enum ErrorCause { + UNKNOWN_ERROR_CAUSE = 0; + ENROLLMENT_NOT_FOUND_ERROR_CAUSE = 1; + ENROLLMENT_BLOCKLISTED_ERROR_CAUSE = 2; +}
\ No newline at end of file diff --git a/stats/enums/adservices/fledge/enums.proto b/stats/enums/adservices/fledge/enums.proto index 850454e6..98370aba 100644 --- a/stats/enums/adservices/fledge/enums.proto +++ b/stats/enums/adservices/fledge/enums.proto @@ -27,4 +27,12 @@ enum ScriptType { UNSET = 0; JAVASCRIPT = 1; WASM = 2; +} + +// Logs the type of beacon reporting destination. +enum BeaconReportingDestinationType { + UNSET_DESTINATION = 0; + SELLER_DESTINATION = 1; + BUYER_DESTINATION = 2; + SELLER_AND_BUYER_DESTINATION = 3; }
\ No newline at end of file diff --git a/stats/enums/adservices/measurement/enums.proto b/stats/enums/adservices/measurement/enums.proto index 261ccf7b..c4085221 100644 --- a/stats/enums/adservices/measurement/enums.proto +++ b/stats/enums/adservices/measurement/enums.proto @@ -25,8 +25,10 @@ option java_multiple_files = true; */ enum SourceType { UNKNOWN_SOURCE_TYPE = 0; - EVENT_SOURCE_TYPE = 1; - NAVIGATION_SOURCE_TYPE = 2; + EVENT_SOURCE_TYPE = 1; // only deprecated for AdServicesMeasurementAttribution in favor of a VIEW_SOURCE_TYPE + NAVIGATION_SOURCE_TYPE = 2; // only deprecated for AdServicesMeasurementAttribution in favor of a CLICK_SOURCE_TYPE + VIEW_SOURCE_TYPE = 3; + CLICK_SOURCE_TYPE = 4; } /** @@ -46,6 +48,9 @@ enum Status { UNKNOWN_STATUS = 0; SUCCESS_STATUS = 1; FAILURE_STATUS = 2; + AGGREGATE_REPORT_GENERATED_SUCCESS_STATUS = 3; + EVENT_REPORT_GENERATED_SUCCESS_STATUS = 4; + AGGREGATE_AND_EVENT_REPORTS_GENERATED_SUCCESS_STATUS = 5; } /** @@ -58,6 +63,7 @@ enum RegistrationFailureType { ENROLLMENT_REGISTRATION_FAILURE_TYPE = 3; REDIRECT_REGISTRATION_FAILURE_TYPE = 4; STORAGE_REGISTRATION_FAILURE_TYPE = 5; + JOB_RETRY_LIMIT_EXCEEDED_REGISTRATION_FAILURE_TYPE = 6; } /** @@ -69,6 +75,11 @@ enum ReportUploadFailureType { NETWORK_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 2; DATASTORE_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 3; REPORT_NOT_PENDING_REPORT_UPLOAD_FAILURE_TYPE = 4; + JOB_RETRY_LIMIT_EXCEEDED_REPORT_UPLOAD_FAILURE_TYPE = 5; + SERIALIZATION_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 6; + ENCRYPTION_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 7; + UNSUCCESSFUL_HTTP_RESPONSE_CODE_FAILURE_TYPE = 8; + REPORT_NOT_FOUND_FAILURE_TYPE = 9; } /** @@ -112,6 +123,8 @@ enum AttributionFailureType { NO_TOP_LEVEL_FILTER_MATCH_ATTRIBUTION_FAILURE_TYPE = 5; RATE_LIMIT_EXCEEDED_ATTRIBUTION_FAILURE_TYPE = 6; NO_REPORTS_GENERATED_ATTRIBUTION_FAILURE_TYPE = 7; + JOB_RETRY_LIMIT_EXCEEDED_ATTRIBUTION_FAILURE_TYPE = 8; + TRIGGER_NOT_FOUND_FAILURE_TYPE = 9; } /** @@ -138,4 +151,7 @@ enum WipeoutCause { UNINSTALL_WIPEOUT_CAUSE = 1; CONSENT_FLIP_WIPEOUT_CAUSE = 2; CLEAR_DATA_WIPEOUT_CAUSE = 3; + DELETE_REGISTRATIONS_API_CLEAR_DATA_WIPEOUT_CAUSE = 4; + PACKAGE_CHANGED_WIPEOUT_CAUSE = 5; + ROLLBACK_WIPEOUT_CAUSE = 6; }
\ No newline at end of file diff --git a/stats/enums/anr/enums.proto b/stats/enums/anr/enums.proto index 05d63b81..1b364385 100644 --- a/stats/enums/anr/enums.proto +++ b/stats/enums/anr/enums.proto @@ -33,4 +33,5 @@ enum AnrType { INPUT_DISPATCHING_TIMEOUT = 5; CONTENT_PROVIDER_NOT_RESPONDING = 6; SHORT_FGS_TIMEOUT = 7; + JOB_SERVICE = 8; } diff --git a/stats/enums/apex/enums.proto b/stats/enums/apex/enums.proto new file mode 100644 index 00000000..b4debcb9 --- /dev/null +++ b/stats/enums/apex/enums.proto @@ -0,0 +1,45 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package android.apex; + +enum InstallationType { + UNKNOWN_INSTALL_TYPE = 0; + STAGED = 1; + REBOOTLESS = 2; +} + +enum InstallResultType { + UNKNOWN_INSTALL_RESULT = 0; + INSTALL_SUCCESSFUL = 1; + INSTALL_FAILURE_APEX_READING = 2; + INSTALL_FAILURE_APEX_VALIDATION = 3; + INSTALL_FAILURE_APEX_PREPARATION = 4; + INSTALL_FAILURE_APEX_STAGING = 5; + INSTALL_FAILURE_APEX_INSTALLATION = 6; + INSTALL_FAILURE_APEX_ACTIVATION = 7; +} + +enum PreinstallPartition { + PARTITION_UNKNOWN = 0; + PARTITION_OTHER = 1; + PARTITION_PRODUCT = 2; + PARTITION_SYSTEM = 3; + PARTITION_SYSTEM_EXT = 4; + PARTITION_VENDOR = 5; +} diff --git a/stats/enums/app/enums.proto b/stats/enums/app/enums.proto index 2e25db77..9abe2248 100644 --- a/stats/enums/app/enums.proto +++ b/stats/enums/app/enums.proto @@ -272,6 +272,13 @@ enum AppOpEnum { APP_OP_USE_FULL_SCREEN_INTENT = 133; APP_OP_CAMERA_SANDBOXED = 134; APP_OP_RECORD_AUDIO_SANDBOXED = 135; + APP_OP_RECEIVE_SANDBOX_TRIGGER_AUDIO = 136; + APP_OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA = 137; + APP_OP_CREATE_ACCESSIBILITY_OVERLAY = 138; + APP_OP_MEDIA_ROUTING_CONTROL = 139; + APP_OP_ENABLE_MOBILE_DATA_BY_USER = 140; + APP_OP_RESERVED_FOR_TESTING = 141; + APP_OP_RAPID_CLEAR_NOTIFICATIONS_BY_LISTENER = 142; } /** @@ -567,6 +574,23 @@ enum AppExitSubReasonCode { * was no longer being used; this would be set only when the reason is {@link #REASON_OTHER}. */ SUBREASON_SDK_SANDBOX_NOT_NEEDED = 28; + + /** + * The process was killed because the binder proxy limit for system server was exceeded. + */ + SUBREASON_EXCESSIVE_BINDER_OBJECTS = 29; + + /** + * The process was killed by the [kernel] Out-of-memory (OOM) killer; this + * would be set only when the reason is {@link #REASON_LOW_MEMORY}. + */ + SUBREASON_OOM_KILL = 30; + + /** + * The process was killed because its async kernel binder buffer is running out + * while being frozen. + */ + SUBREASON_FREEZER_BINDER_ASYNC_FULL = 31; } /** @@ -674,3 +698,50 @@ enum BroadcastDeliveryGroupPolicy { BROADCAST_DELIVERY_GROUP_POLICY_MOST_RECENT = 1; BROADCAST_DELIVERY_GROUP_POLICY_MERGED = 2; } + +/** + * Most recent state of startup. + */ +enum AppStartStartupState { + STARTUP_STATE_STARTED = 0; + STARTUP_STATE_ERROR = 1; + STARTUP_STATE_FIRST_FRAME_DRAWN = 2; +} + +/** + * The reason code of what triggered the process's start. + */ +enum AppStartReasonCode { + START_REASON_ALARM = 0; + START_REASON_BACKUP = 1; + START_REASON_BOOT_COMPLETE = 2; + START_REASON_BROADCAST = 3; + START_REASON_CONTENT_PROVIDER = 4; + START_REASON_JOB = 5; + START_REASON_LAUNCHER = 6; + START_REASON_OTHER = 7; + START_REASON_PUSH = 8; + START_REASON_RESUMED_ACTIVITY = 9; + START_REASON_SERVICE = 10; + START_REASON_START_ACTIVITY = 11; +} + +/** + * Type of process start. + */ +enum AppStartStartType { + START_TYPE_COLD = 0; + START_TYPE_WARM = 1; + START_TYPE_HOT = 2; +} + +/** + * An instruction on how the activity should be launched. + */ +enum AppStartLaunchMode { + LAUNCH_MODE_STANDARD = 0; + LAUNCH_MODE_SINGLE_TOP = 1; + LAUNCH_MODE_SINGLE_INSTANCE = 2; + LAUNCH_MODE_SINGLE_TASK = 3; + LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK = 4; +} diff --git a/stats/enums/app/settings_enums.proto b/stats/enums/app/settings_enums.proto index 5f8df41c..44f3be84 100644 --- a/stats/enums/app/settings_enums.proto +++ b/stats/enums/app/settings_enums.proto @@ -1184,19 +1184,16 @@ enum Action { // ACTION: Settings > System > Languages > Regional preferences > First day of week > Set the // preferred first day of week. - // VALUE: first day of week. // OS: U ACTION_SET_FIRST_DAY_OF_WEEK = 1827; // ACTION: Settings > System > Languages > Regional preferences > Numbers preference > // Choose the language - // VALUE: language. // OS: U ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES = 1828; // ACTION: Settings > System > Languages > Regional preferences > Numbers preference > // Choose the language > Set the preferred numbers preferences. - // VALUE: numbers preferences. // OS: U ACTION_SET_NUMBERS_PREFERENCES = 1829; @@ -1205,17 +1202,14 @@ enum Action { ACTION_LANGUAGES_LEARN_MORE = 1830; // ACTION: Settings > System > Languages > System Languages > Add a language - // VALUE: language. // OS: U ACTION_ADD_LANGUAGE = 1831; // ACTION: Settings > System > Languages > System Languages > Remove a language - // VALUE: language. // OS: U ACTION_REMOVE_LANGUAGE = 1832; // ACTION: Settings > System > Languages > System Languages > Re-order a language - // VALUE: language. // OS: U ACTION_REORDER_LANGUAGE = 1833; @@ -1230,7 +1224,6 @@ enum Action { // ACTION: Settings > System > Languages > System Languages > Select a not available language // as system language - // VALUE: language // OS: U ACTION_NOT_SUPPORTED_SYSTEM_LANGUAGE = 1836; @@ -1327,6 +1320,22 @@ enum Action { // OS: U ACTION_LEARN_TOUCHPAD_GESTURE_CLICK = 1855; + // ACTION: Settings > System > Languages > System Languages > Terms of address > Not specified + // OS: V + ACTION_TERMS_OF_ADDRESS_NOT_SPECIFIED = 1856; + + // ACTION: Settings > System > Languages > System Languages > Terms of address > Feminine + // OS: V + ACTION_TERMS_OF_ADDRESS_FEMININE = 1857; + + // ACTION: Settings > System > Languages > System Languages > Terms of address > Masculine + // OS: V + ACTION_TERMS_OF_ADDRESS_MASCULINE = 1858; + + // ACTION: Settings > System > Languages > System Languages > Terms of address > Neutral + // OS: V + ACTION_TERMS_OF_ADDRESS_NEUTRAL = 1859; + // ACTION: Settings > Battery > Battery usage // CATEGORY: SETTINGS // OS: UQPR1 @@ -1341,6 +1350,164 @@ enum Action { // CATEGORY: SETTINGS // OS: UQPR1 ACTION_BATTERY_TIPS_CARD_DISMISS = 1862; + + // ACTION: Settings > Connected devices > Previously used with account -> Pair device + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR = 1863; + // ACTION: Settings > Connected devices > Previously used with account -> Pair device error + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR_ERROR = 1864; + // ACTION: Settings > Connected devices > Previously used with account -> Pair device not found + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR_NOT_FOUND = 1865; + // ACTION: Logged when user tries to pair a Fast pair Bluetooth device from Settings app + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_SETTINGS_BLUETOOTH_PAIR_FAST_PAIR_DEVICE = 1866; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > App default selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_APP_DEFAULT_SELECTED = 1867; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > App default unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_APP_DEFAULT_UNSELECTED = 1868; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Full screen selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_FULL_SCREEN_SELECTED = 1869; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Full screen unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_FULL_SCREEN_UNSELECTED = 1870; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Half screen selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_HALF_SCREEN_SELECTED = 1871; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Half screen unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_HALF_SCREEN_UNSELECTED = 1872; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 4:3 selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_4_3_SELECTED = 1873; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 4:3 unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_4_3_UNSELECTED = 1874; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 16:9 selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_16_9_SELECTED = 1875; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 16:9 unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_16_9_UNSELECTED = 1876; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 3:2 selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_3_2_SELECTED = 1877; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > 3:2 unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_3_2_UNSELECTED = 1878; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Display size selected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_DISPLAY_SIZE_SELECTED = 1879; + + // ACTION: Settings > Apps > App Info > Aspect Ratio > Display size unselected + // CATEGORY: SETTINGS + // OS: UQPR1 + ACTION_USER_ASPECT_RATIO_DISPLAY_SIZE_UNSELECTED = 1880; + + // Action: Settings > Apps > AppInfo > Battery > allow background usage + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_APP_BATTERY_USAGE_ALLOW_BACKGROUND = 1881; + + // Action: Settings > Apps > AppInfo > Battery > disable background usage + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_APP_BATTERY_USAGE_DISABLE_BACKGROUND = 1882; + + // Action: Settings > Battery settings > Battery tip > Battery health + // CATEGORY: SETTINGS + // OS: UQPR2 + ACTION_BATTERY_HEALTH_TIP = 1883; + + // Private space setup flow + // OPEN: Settings > Security&Privacy > Private Space > Set up + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_START = 1884; + + // OPEN: Settings > Security&Privacy > Private Space > Cancel + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_CANCEL = 1885; + + // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_SPACE_CREATED = 1886; + + // OPEN: Settings > Security&Privacy > Private Space > Set up > Error > Try again + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_SPACE_AGAIN = 1887; + + // OPEN: Settings > Security&Privacy > Private Space > Set up > Error > Cancel + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_CANCEL_CREATE_SPACE = 1888; + + // OPEN: Settings > Security&Privacy > Private Space > + // Set up > Wait 15 sec > Google account setup + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_SUCCESS = 1889; + + // OPEN: Settings > Security&Privacy > Private Space > + // Set up > Wait 15 sec > Google account setup error > Try again + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_ACCOUNT_AGAIN = 1890; + + // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec > + // Google account setup > Choose new lock + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_NEW_LOCK = 1891; + + // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec > + // Google account setup > Use screen lock + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_USE_SCREEN_LOCK = 1892; + + // OPEN: Settings > Security&Privacy > Private Space > + // Set up > Google account setup > Screen lock setup > Done + // CATEGORY: SETTINGS + // OS: V + ACTION_PRIVATE_SPACE_SETUP_DONE = 1893; } /** @@ -4143,6 +4310,16 @@ enum PageId { // OS: U VPN_APP_MANAGEMENT = 2033; + // OPEN: Settings > System > Languages > System Languages > Terms of address + // CATEGORY: SETTINGS + // OS: V + TERMS_OF_ADDRESS = 2034; + + // OPEN: Settings > Notifications > Polite notifications + // CATEGORY: SETTINGS + // OS: U + SETTINGS_POLITE_NOTIFICATIONS = 2035; + // OPEN: Settings > Display > Screen saver > When to start // CATEGORY: SETTINGS // OS: U @@ -4158,9 +4335,135 @@ enum PageId { // OS: U FOLD_LOCK_BEHAVIOR = 2038; + // OPEN: Settings > Connected devices > Previously used with account + // CATEGORY: SETTINGS + // OS: UQPR2 + FAST_PAIR_DEVICES = 2039; + + // OPEN: Settings > Security & Privacy > Private Space + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETTINGS = 2040; + + // OPEN: Settings > System > Developer options > Quarantined Apps + // CATEGORY: SETTINGS + // OS: V + QUARANTINED_APPS_DEV_CONTROL = 2041; + // OPEN: Settings > Developer Options > Enable 16k pages // CATEGORY: SETTINGS DIALOG_ENABLE_16K_PAGES = 2042; + + // OPEN: Settings > Storage > Private profile tab + // CATEGORY: SETTINGS + // OS: V + SETTINGS_STORAGE_CATEGORY_PRIVATE = 2043; + + // OPEN: Settings > Account > Private profile tab + // CATEGORY: SETTINGS + // OS: V + ACCOUNT_PRIVATE = 2044; + + // OPEN: Settings > Privacy & Security > More security & privacy > Scanning for deceptive apps + // CATEGORY: SETTINGS + // OS: U + CONTENT_PROTECTION_PREFERENCE = 2045; + + // ACTION: Allow Voice activation of an assistant app + // CATEGORY: SETTINGS + // OS: V + APP_SPECIAL_PERMISSION_RECEIVE_SANDBOX_TRIGGER_AUDIO_ALLOW = 2046; + + // ACTION: Deny Voice activation of an assistant app + // CATEGORY: SETTINGS + // OS: V + APP_SPECIAL_PERMISSION_RECEIVE_SANDBOX_TRIGGER_AUDIO_DENY = 2047; + + // OPEN: Settings > Connected devices > Connection preferences > Audio sharing + // CATEGORY: SETTINGS + // OS: V + AUDIO_SHARING_SETTINGS = 2048; + + // Open: Audio sharing start dialog + // CATEGORY: SETTINGS + // OS: V + DIALOG_START_AUDIO_SHARING = 2049; + + // Open: Audio sharing stop dialog + // CATEGORY: SETTINGS + // OS: V + DIALOG_STOP_AUDIO_SHARING = 2050; + + // Open: Audio sharing switch device dialog + // CATEGORY: SETTINGS + // OS: V + DIALOG_AUDIO_SHARING_SWITCH_DEVICE = 2051; + + // Open: Audio sharing switch active dialog + // CATEGORY: SETTINGS + // OS: V + DIALOG_AUDIO_SHARING_SWITCH_ACTIVE = 2052; + + // OPEN: Settings > System > Developer options > Widevine settings + // CATEGORY: SETTINGS + // OS: V + WIDEVINE_SETTINGS = 2053; + + // OPEN: Settings > Apps > App Info > Aspect Ratio + // CATEGORY: SETTINGS + // OS: UQPR1 + USER_ASPECT_RATIO_APP_INFO_SETTINGS = 2054; + + // OPEN: Settings > Battery > [App Use details] > Manage background usage + // CATEGORY: SETTINGS + // OS: UQPR2 + FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND = 2055; + + // OPEN: Settings > Apps > Aspect Ratio + // CATEGORY: SETTINGS + // OS: UQPR1 + USER_ASPECT_RATIO_APP_LIST_SETTINGS = 2056; + + // OPEN: Settings > System > Developer options > Develop App picker + // CATEGORY: SETTINGS + // OS: V + DEVELOPMENT_APP_PICKER = 2057; + + // OPEN: Settings > Security & Privacy > Private Space , when the feature is not set up + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_EDUCATION = 2058; + + // OPEN: Settings > Security & Privacy > Private Space > Set up + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_SPACE_CREATION = 2059; + + // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait, Error + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_SPACE_CREATION_ERROR = 2060; + + // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait, Success + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_LOCK = 2061; + + // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait > Use screen lock > Error + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_ERROR = 2062; + + // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait > + // > Use screen lock > Set account + // CATEGORY: SETTINGS + // OS: V + PRIVATE_SPACE_SETUP_FINISH = 2063; + + // OPEN: Settings > Apps > Special App Access > Change Media Output + // CATEGORY: SETTINGS + // OS: V + MEDIA_ROUTING_CONTROL = 2064; } // Battery Saver schedule types. @@ -4176,13 +4479,13 @@ enum SessionType { // The client app doesn't set session source. SESSION_UNKNOWN = 0; // The session start from opening the Settings app. - BROWSE = 1; + SESSION_BROWSE = 1; // The session start from Settings Search result. - SEARCH = 2; + SESSION_SEARCH = 2; // The session start from other app via Intent. - EXTERNAL = 3; + SESSION_EXTERNAL = 3; // The session start from the Slice invoking. - SLICE_TYPE = 4; + SESSION_SLICE_TYPE = 4; } // Physical keyboard settings entrypoint type of the from source. diff --git a/stats/enums/app/tvsettings_enums.proto b/stats/enums/app/tvsettings_enums.proto index 666f71d3..8ef24b39 100644 --- a/stats/enums/app/tvsettings_enums.proto +++ b/stats/enums/app/tvsettings_enums.proto @@ -1218,6 +1218,10 @@ enum ItemId { // TvSettings > Connected Devices (Slice) > [A connected device] > Forget CONNECTED_SLICE_DEVICE_ENTRY_FORGET = 0x18230000; + // TvSettings > Connected Devices (Slice) > [A connected audio device] > + // Listen to TV audio on this device + CONNECTED_SLICE_DEVICE_ENTRY_TOGGLE_ACTIVE_AUDIO_OUTPUT = 0x18240000; + // TvSettings > Connected Devices (Slice) > HDMI-CEC CONNECTED_SLICE_HDMICEC = 0x18300000; diff --git a/stats/enums/app/wearservices/wearservices_enums.proto b/stats/enums/app/wearservices/wearservices_enums.proto index 1dca4147..845674be 100644 --- a/stats/enums/app/wearservices/wearservices_enums.proto +++ b/stats/enums/app/wearservices/wearservices_enums.proto @@ -136,6 +136,19 @@ enum NotificationUpdateAction { NOTIFICATION_ACTION_REMOVE = 3; } +// Describes which transport channel is this notification coming from. +// Next ID: 3 +enum NotificationTransportChannel { + // Unknown notification transport channel + NOTIFICATION_TRANSPORT_UNKNOWN = 0; + + // Notification comes from wearable API + NOTIFICATION_TRANSPORT_WEARABLE = 1; + + // Notification comes from MCU (only exists on device supported offloading) + NOTIFICATION_TRANSPORT_MCU = 2; +} + // Importance of the notification after this update. // Next ID: 8 enum NotificationImportance { @@ -164,6 +177,222 @@ enum NotificationImportance { NOTIFICATION_IMPORTANCE_MAX = 7; } +// The alerting effect of the notification. +// Next ID: 5 +enum NotificationAlertingEffect { + // Unknown value. + NOTIFICATION_ALERTING_EFFECT_UNKNOWN = 0; + + // No alerting effect. + NOTIFICATION_ALERTING_EFFECT_NONE = 1; + + // Alerting effect is HAPTICS. + NOTIFICATION_ALERTING_EFFECT_HAPTICS = 2; + + // Alerting effect is SOUND. + NOTIFICATION_ALERTING_EFFECT_SOUND = 3; + + // Alerting effect is HAPTICS together with SOUND. + NOTIFICATION_ALERTING_EFFECT_HAPTICS_AND_SOUND = 4; +} + +// The group alert behavior of the notification. +// +// Note: In the Wear SysUI. Alerts will always happen on the child, for example, +// 1). If summary is set to alert, but the first child is muted, the alert will +// happen on the child item. +// 2). If summary and first child both set to alert, there will be only 1 alerts +// happening on the first child. +// Therefore, we will overcount if we count alerting summary items, and we will +// undercount if we skip alerting summary items. And unfortunately we can not +// avoid this inaccuracy in the metrics. +// Next ID: 4 +enum NotificationGroupAlertBehavior { + // Unknown value. + NOTIFICATION_GROUP_ALERT_BEHAVIOR_UNKNOWN = 0; + + // The alert behavior set to ALL, or notification is not grouped, or the group + // type matches the alert behavior (e.g. group child, while the alert behavior + // is also set to child.) + // We collapsed these non-critical cases to reduce cardinality. + NOTIFICATION_GROUP_ALERT_BEHAVIOR_ALERT_ALLOWED = 1; + + // The alert behavior is set to ALERT_SUMMARY, but the current notification is + // a child. + NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_SUMMARY = 2; + + // The alert behavior is set to ALERT_CHILD, but the current notification is a + // summary. + NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_CHILD = 3; +} + +// The alert behavior controlled by the ALERT_ONLY_ONCE flag. +// Next ID: 4 +enum NotificationAlertOnlyOnce { + // Unknown value. + NOTIFICATION_ALERT_ONLY_ONCE_UNKNOWN = 0; + + // The flag not set. + NOTIFICATION_ALERT_ONLY_ONCE_NOT_SET = 1; + + // The flag set, and current item is the first update. + NOTIFICATION_ALERT_ONLY_ONCE_ALERT_ON_FIRST = 2; + + // The flag set, and current item is not the first update. + NOTIFICATION_ALERT_ONLY_ONCE_MUTE_ON_UPDATES = 3; +} + +// The group type of the notification. +// Next ID: 4 +enum NotificationGroupType { + // Unknown value. + NOTIFICATION_GROUP_TYPE_UNKNOWN = 0; + + // No group assigneed + NOTIFICATION_GROUP_TYPE_NO_GROUP = 1; + + // This notification is a group summary + NOTIFICATION_GROUP_TYPE_GROUP_SUMMARY = 2; + + // This notification is a group child + NOTIFICATION_GROUP_TYPE_GROUP_CHILD = 3; +} + +// The style of the notification. +// Next ID: 7 +enum NotificationStyle { + // Unknown value. + NOTIFICATION_STYLE_UNKNOWN = 0; + + // The notification has not specific any style. + NOTIFICATION_STYLE_UNSPECIFIED = 1; + + // The notification is InboxStyle. + NOTIFICATION_STYLE_INBOX = 2; + + // The notification is BigTextStyle. + NOTIFICATION_STYLE_BIG_TEXT = 3; + + // The notification is BigPictureStyle. + NOTIFICATION_STYLE_BIG_PICTURE = 4; + + // The notification is MessagingStyle. + NOTIFICATION_STYLE_MESSAGING = 5; + + // The notification is MediaStyle. + NOTIFICATION_STYLE_MEDIA = 6; +} + +// The categories for the notification. +// Next ID: 7 +enum NotificationCategory { + // Unknown value. + NOTIFICATION_CATEGORY_UNKNOWN = 0; + + // No category set for the notificatioin. + NOTIFICATION_CATEGORY_NONE = 1; + + // Notification set with other categories + NOTIFICATION_CATEGORY_OTHERS = 2; + + // Notification set with CATEGORY_CALL. + NOTIFICATION_CATEGORY_CALL = 3; + + // Notification set with CATEGORY_ALARM. + NOTIFICATION_CATEGORY_ALARM = 4; + + // Notification set with CATEGORY_REMINDER. + NOTIFICATION_CATEGORY_REMINDER = 5; + + // Notification set with CATEGORY_EVENT. + NOTIFICATION_CATEGORY_EVENT = 6; +} + +// The ongoing type for the notification. +// Next ID: 7 +enum NotificationHiddenReason { + // Unknown value. + NOTIFICATION_HIDDEN_REASON_UNKNOWN = 0; + + // The notification is not hidden. + NOTIFICATION_HIDDEN_REASON_NONE = 1; + + // The notification hidden with other reasons. + NOTIFICATION_HIDDEN_REASON_OTHERS = 2; + + // The notification has set with ongoing activity. Which means it is hidden. + NOTIFICATION_HIDDEN_REASON_ONGOING_ACTIVITY = 3; + + // The notification is media style. + NOTIFICATION_HIDDEN_REASON_MEDIA_STYLE = 4; + + // The notification is bound with foreground service. + NOTIFICATION_HIDDEN_REASON_FOREGROUND_SERVICE = 5; + + // The notification is hidden by dismissal id flow. + NOTIFICATION_HIDDEN_REASON_MANAGED_DISMISSAL = 6; +} + +// The content intent button settings for the notification. +// Next ID: 5 +enum NotificationContentIntent { + // Unknown value. + NOTIFICATION_CONTENT_INTENT_UNKNOWN = 0; + + // No content intent set. + NOTIFICATION_CONTENT_INTENT_NONE = 1; + + // Content intent set with OPEN_ON_WATCH. + NOTIFICATION_CONTENT_INTENT_OPEN_ON_WATCH = 2; + + // Content intent set with OPEN_ON_PHONE. + NOTIFICATION_CONTENT_INTENT_OPEN_ON_PHONE = 3; + + // Content intent set with BOTH actions. + NOTIFICATION_CONTENT_INTENT_BOTH = 4; +} + +// Defines on which device the notification blocked state is changed for an application. +// Next ID: 4 +enum DeviceLocation { + // Unknown value. + DEVICE_LOCATION_UNKNOWN = 0; + + // The notification is blocked on the watch. + DEVICE_LOCATION_WATCH = 1; + + // The notification is blocked on the phone. + DEVICE_LOCATION_PHONE = 2; + + // The notification is blocked both on the watch and the phone. + DEVICE_LOCATION_WATCH_AND_PHONE = 3; +} + +// Defines in which profile the application is installed. +// Next ID: 3 +enum Profile { + // Unknown value. + PROFILE_UNKNOWN = 0; + + // The application is installed in the personal profile. + PROFILE_PERSONAL = 1; + + // The application is installed in the work profile. + PROFILE_WORK = 2; +} + +// Defines the blocking status of the application for notifications. +// Next ID: 3 +enum NotificationBlockingStatus { + // Unknown value. + NOTIFICATION_BLOCKING_STATUS_UNKNOWN = 0; + + // The notifications for the applications are blocked on the device. + NOTIFICATION_BLOCKING_STATUS_BLOCKED = 1; + + // The notifications for the applications are unblocked on the device. + NOTIFICATION_BLOCKING_STATUS_UNBLOCKED = 2; +} // This enum depicts an action taken on a call // Next ID: 4 @@ -334,3 +563,20 @@ enum DisconnectionErrorCode { // Depicts an error where creating an outgoing call failed DISCONNECTION_ERROR_CODE_OUTGOING_CALL_FAILURE = 5; } + +// This enum depicts the tether mode of certain watches, they are corresponding +// to vendor/google_clockwork/sdk/lib/src/com/google/wear/tether/TetherConfigurationClient.java +// Next ID: 4 +enum TetherConfigurationStatus { + // Depicts an unknown tether status + TETHER_CONFIGURATION_UNKNOWN = 0; + + // Depicts the watch is in standalone mode + TETHER_CONFIGURATION_STANDALONE = 1; + + // Depicts the watch is in tethered mode + TETHER_CONFIGURATION_TETHERED = 2; + + // Depicts the watch is in restricted connection mode + TETHER_CONFIGURATION_RESTRICTED = 3; +} diff --git a/stats/enums/app/wearsettings_enums.proto b/stats/enums/app/wearsettings_enums.proto index de89b6d1..6cf7c2c7 100644 --- a/stats/enums/app/wearsettings_enums.proto +++ b/stats/enums/app/wearsettings_enums.proto @@ -36,16 +36,28 @@ enum Action { } // IDs for settings UI elements. -// Next ID: 408 +// Next ID: 497 enum ItemId { // An unknown settings item. This may be set if no preference key is mapped to an enum value or as // a catch-all for values not yet added to this proto file. UNKNOWN = 0; + ACCESSIBILITY_COLOR_CORRECTION = 416; + ACCESSIBILITY_COLOR_CORRECTION_ENABLED = 417; + ACCESSIBILITY_COLOR_CORRECTION_DEUTERANOMALY = 418; + ACCESSIBILITY_GESTURES = 419; ACCESSIBILITY_COLOR_INVERSION = 103; + ACCESSIBILITY_GRAYSCALE_CORRECTION = 420; + ACCESSIBILITY_TALKBACK_SETTINGS = 421; + ACCESSIBILITY_SERVICE_TALKBACK = 422; + ACCESSIBILITY_PROTANOMALY_CORRECTION = 423; + ACCESSIBILITY_TRITANOMALY_CORRECTION = 424; ACCESSIBILITY_FONT_SIZE = 369; ACCESSIBILITY_LARGE_TEXT = 102; ACCESSIBILITY_MAGNIFICATION = 104; + ACCESSIBILITY_MAGNIFICATION_SIZE = 413; + ACCESSIBILITY_MAGNIFICATION_SETTINGS = 414; + ACCESSIBILITY_MAGNIFICATION_EDGE_HAPTIC = 415; ACCESSIBILITY_SERVICE = 314; ACCESSIBILITY_SIDE_BUTTON = 105; ACCESSIBILITY_SOUND = 370; @@ -58,9 +70,11 @@ enum ItemId { ACCESSIBILITY_TTS_ENGINE_LISTENTOSAMPLE = 109; ACCESSIBILITY_TTS_RATES = 110; ACCESSIBILITY_VIBRATION = 371; + ACCESSIBILITY_REDUCE_ANIMATION = 412; ACCOUNTS_ADD_ACCOUNT = 115; ACCOUNT_REMOVE_ACCOUNT = 230; ACTIVE_DEVICE_ADMINS = 113; + ACTIVE_UNLOCK = 425; APPS_APP_NOTIFICATIONS = 342; APPS_APP_STORAGE = 367; APPS_ASSISTANT = 366; @@ -83,6 +97,9 @@ enum ItemId { ASSISTANT_HOTWORD_DETECTION = 197; ASSISTANT_LONG_PRESS_TO_ASSISTANT = 336; ASSISTANT_VOICE_ASSISTANT = 309; + AUDIO_ADJUSTMENT = 409; + AUDIO_BALANCE_SLIDER_PREFERENCE = 410; + AUDIO_BALANCE_LEFT_RIGHT_TEXT = 411; BATTERY_SAVER_AUTO_BATTERY_SAVER_ENABLED = 324; BATTERY_SAVER_BATTERY_SAVER = 315; BLUETOOTH_ENABLED = 135; @@ -138,6 +155,8 @@ enum ItemId { CONNECTIVITY_AIRPLANE_MODE = 120; CONNECTIVITY_BLUETOOTH = 133; CONNECTIVITY_CELLULAR = 20; + // WearOS only + CONNECTIVITY_CONNECTED_FITNESS = 496; CONNECTIVITY_NFC = 219; CONNECTIVITY_WIFI = 8; DATE_TIME_AUTO_DATE_TIME = 129; @@ -166,9 +185,11 @@ enum ItemId { DEVELOPER_POINTER_LOCATION = 226; DEVELOPER_POWER_OPTIMIZATIONS = 227; DEVELOPER_SHOW_TOUCHES = 240; + DEVELOPER_SHOW_ROTARY_INPUT = 488; DEVELOPER_SMART_ILLUMINATE = 252; DEVELOPER_STAY_ON_WHILE_PLUGGED_IN = 255; DEVELOPER_TRANSITION_ANIMATION_SCALE = 303; + DEVELOPER_USE_DEVELOPER_OPTIONS = 489; DEVELOPER_WEAR_DEVELOPER_OPTIONS = 272; DEVELOPER_WIFI_LOGGING = 277; DEVELOPER_WINDOW_ANIMATION_SCALE = 304; @@ -223,6 +244,7 @@ enum ItemId { ESIM_TEST_UTIL = 359; ESIM_TEST_VOICE_TWINNING_STATE = 362; FACTORY_RESET = 193; + FONT_BOLD_TEXT = 408; GESTURES_TILT_TO_BRIGHT = 344; GESTURES_TILT_TO_WAKE = 260; GESTURES_TOUCH_TO_WAKE = 320; @@ -289,6 +311,7 @@ enum ItemId { SYSTEM_INPUT_METHODS = 201; SYSTEM_PHONE_SWITCH = 407; SYSTEM_SYSTEM_UPDATE = 257; + SYSTEM_TTS = 490; VIBRATION_LEVEL = 268; VIBRATION_MUTE_WHEN_OFF_BODY = 318; VIBRATION_VIBRATE_FOR_CALLS = 267; @@ -307,4 +330,71 @@ enum ItemId { WIFI_TOGGLE = 280; WIFI_VIEW_IP_ADDRESS = 281; WIFI_VIEW_MAC_ADDRESS = 282; + SCREENSHOT_PREFERENCE = 426; + SCREEN_UNLOCK_SOUND = 427; + CHARGING_SOUNDS = 428; + MONO_AUDIO = 429; + ROTATORY_WAKE = 430; + WATCH_LICENSE = 431; + WATCH_SYSTEM_LICENSES = 432; + FONT_SLIDER = 433; + ASSISTANT_SETTING = 434; + ACCOUNT_SETTING = 435; + DIVIDER_PREFERENCE = 436; + ENTERPRISE_SET_DEFAULT_APPS = 437; + ENTERPRISE_INSTALLED_PACKAGES = 438; + LOCATION_ACCESS_PACKAGES = 439; + MICROPHONE_ACCESS_PACKAGES = 440; + CAMERA_ACCESS_PACKAGES = 441; + ENTERPRISE_PRIVACY = 442; + ESIM_SETTINGS = 443; + ESIM_PROFILE_NICKNAME = 444; + MAIN_SECURITY = 445; + ACCESSIBILITY_VIBRATION_WATCH = 446; + ACCESSIBILITY_VIBRATION_WATCH_SWITCH = 447; + ACCESSIBILITY_VIBRATION_WATCH_TYPE_DIGIT = 448; + ACCESSIBILITY_VIBRATION_WATCH_TYPE_TERSE = 449; + ACCESSIBILITY_VIBRATION_WATCH_SPEED = 450; + WEAR_BATTERY_SAVER_EXPLANATION_TEXT = 451; + BATTERY_SAVER_SECTION_TITLE_TEXT = 452; + BATTERY_SAVER_EXPLANATION_TEXT = 453; + HIGH_BRIGHTNESS_KEY = 454; + ACCESSIBILITY_RTT = 455; + DEFAULT_APPS = 456; + DEFAULT_ASSIST = 457; + USE_TEXT_CONTEXT = 458; + USE_TEXT_CONTEXT_SUMMARY = 459; + USE_SCREENSHOT = 460; + USE_SCREENSHOT_SUMMARY = 461; + WIRELESS_DEBUG = 462; + WIRELESS_DEBUG_TOGGLE = 463; + WIRELESS_DEBUG_DEVICE_NAME = 464; + WIRELESS_DEBUG_IP_PORT = 465; + WIRELESS_DEBUG_SUMMARY = 466; + WIRELESS_DEBUG_PAIRING = 467; + WIRELESS_ADB_DEVICE_NAME = 468; + WIRELESS_ADB_DEVICE_FINGERPRINT = 469; + USAGE_ACCESS = 470; + SMDP_ADDRESS = 471; + SYSTEM_STATE_OVERLAY_SETTINGS = 472; + SYSTEM_STATE_OVERLAY = 473; + LANGUAGE_PREFERENCE = 474; + FREE_MEM_OVERLAY = 475; + PSS_OVERLAY = 476; + MANAGE_PERMISSIONS = 477; + STEM_1 = 478; + STEM_2 = 479; + STEM_3 = 480; + OEM_UNLOCK_ENABLE = 481; + BACKUP_SETTING = 482; + ADVANCE_PERMISSIONS_INSTALL_UNKNOWN = 483; + WET_MODE = 484; + DIAGNOSTICS = 485; + PARENTAL_CONTROLS = 486; + VIBRATION_SWITCH = 487; + WEAR_POWER_ANOMALY_SERVICE = 491; + BATTERY_SAVER_SETTINGS = 492; + BATTERY_SAVER_AUTO_BATTERY_SAVER_ON = 493; + BATTERY_SAVER_AUTO_BATTERY_SAVER_OFF = 494; + PRIVACY_DASHBOARD = 495; } diff --git a/stats/enums/bluetooth/enums.proto b/stats/enums/bluetooth/enums.proto index 854a2738..077f3e5a 100644 --- a/stats/enums/bluetooth/enums.proto +++ b/stats/enums/bluetooth/enums.proto @@ -327,7 +327,7 @@ enum CodePathCounterKeyEnum { LE_SCAN_DURATION_COUNT_BATCH_1H = 120108; LE_SCAN_DURATION_COUNT_BATCH_1HP = 120109; - // [120,200 - 120,300) LE scan radio active duration + // [120,200 - 120,250) LE scan radio active duration LE_SCAN_RADIO_DURATION_ALL = 120200; LE_SCAN_RADIO_DURATION_REGULAR = 120201; LE_SCAN_RADIO_DURATION_BATCH = 120202; @@ -336,6 +336,22 @@ enum CodePathCounterKeyEnum { LE_SCAN_RADIO_DURATION_BATCH_SCREEN_ON = 120205; LE_SCAN_RADIO_DURATION_BATCH_SCREEN_OFF = 120206; + // [120,250 - 120,300) LE scan radio scan mode count + LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT = 120250; + LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT = 120251; + LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT = 120252; + LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT = 120253; + LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT = 120254; + LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT = 120255; + LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT = 120256; + LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT_SCREEN_OFF = 120257; + LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT_SCREEN_OFF = 120258; + LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT_SCREEN_OFF = 120259; + LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT_SCREEN_OFF = 120260; + LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT_SCREEN_OFF = 120261; + LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT_SCREEN_OFF = 120262; + LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT_SCREEN_OFF = 120263; + // [120,300 - 120,400) LE scan results count LE_SCAN_RESULTS_COUNT_ALL = 120300; LE_SCAN_RESULTS_COUNT_REGULAR = 120301; @@ -388,7 +404,7 @@ enum CodePathCounterKeyEnum { // [120,800 - 120,900) LE advertise error count LE_ADV_ERROR_ON_START_COUNT = 120800; - // [120,900 - 121,000) GATT Related Count + // [120,900 - 121,000) GATT Related Count GATT_CLIENT_CONNECT_IS_DIRECT = 120900; GATT_CLIENT_CONNECT_IS_AUTOCONNECT = 120901; GATT_CLIENT_CONNECT_IS_DIRECT_IN_FOREGROUND = 120902; @@ -400,6 +416,7 @@ enum CodePathCounterKeyEnum { GATT_SERVER_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120908; GATT_SERVER_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120909; + // [121,000 - 121,100) System state related // [121,000 - 121,010) Screen on/off count SCREEN_ON_EVENT = 121000; SCREEN_OFF_EVENT = 121001; diff --git a/stats/enums/dnd/dnd_enums.proto b/stats/enums/dnd/dnd_enums.proto index c47ebf2c..8bef8c54 100644 --- a/stats/enums/dnd/dnd_enums.proto +++ b/stats/enums/dnd/dnd_enums.proto @@ -55,6 +55,14 @@ enum ConversationType { CONV_NONE = 3; } +// Enum used in DNDPolicyProto to indicate the type of channels permitted to +// break through DND. Mirrors values in ZenPolicy. +enum ChannelType { + CHANNEL_TYPE_UNSET = 0; + CHANNEL_TYPE_PRIORITY = 1; + CHANNEL_TYPE_NONE = 2; +} + // Enum used in DNDStateChanged to identify the type of rule that changed. enum RuleType { UNKNOWN_RULE = 0; diff --git a/stats/enums/federatedcompute/enums.proto b/stats/enums/federatedcompute/enums.proto new file mode 100644 index 00000000..06a92e39 --- /dev/null +++ b/stats/enums/federatedcompute/enums.proto @@ -0,0 +1,212 @@ +/* + * 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. + */ + +syntax = "proto2"; +package android.federatedcompute; + +option java_outer_classname = "FederatedComputeProtoEnums"; +option java_multiple_files = true; + +// Enum used to track federated computation job stages. +// Next Tag: 45 +enum TrainingEventKind { + // Undefined value. + TRAIN_UNDEFINED = 0; + + // Indicates that training was scheduled but did not start due to runtime + // checks (e.g. insufficient battery levels). + TRAIN_NOT_STARTED = 1; + + // Client started downloading train phase info from the server + TRAIN_DOWNLOAD_STARTED = 2; + + // Client is about to issue an eligibility eval checkin request to the + // server. + TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED = 3; + + // Client received eligibility eval plan & checkpoint URIs from the server, + // but hasn't downloaded them yet. Also logged when the plan/checkpoint + // resources were actually supplied inline in the protocol response message + // and no actual HTTP fetch needs to happen anymore. This ensures that this + // event can always be compared against + // TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED = 4; + + // Client received an eligibility eval plan from the server. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED. + TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED = 5; + + // Client was told by the server that there is no eligibility eval plan for + // the given population. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_NOT_CONFIGURED = 6; + + // Client was rejected from an eligibility eval checkin request. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_TURNED_AWAY = 7; + + // Client issued an eligibility eval checkin request, but an IO error was + // encountered. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_IO = 8; + + // Client issued an eligibility eval checkin request, but an invalid payload + // was received. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_INVALID_PAYLOAD = 9; + + // Client issued an eligibility eval checkin request, but got interrupted on + // the client. Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_CLIENT_INTERRUPTED = 10; + + // Client issued an eligibility eval checkin request, but server aborted. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. + TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_SERVER_ABORTED = 11; + + // Client issued a regular checkin request, but got an IO error. + // Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_ERROR_IO = 12; + + // Client issued a regular checkin request, but the server returned an + // invalid payload. + // Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_ERROR_INVALID_PAYLOAD = 13; + + // Client issued a regular checin request, but got interrupted on the + // client. Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_CLIENT_INTERRUPTED = 14; + + // Client issued a regular checin request, but got aborted by the server. + // Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_SERVER_ABORTED = 15; + + // Client received plan and checkpoint URIs from the server, but hasn't + // actually downloaded them yet. Also logged when the plan/checkpoint + // resources were actually supplied inline in the protocol response message + // and no actual HTTP fetch needs to happen anymore. This ensures that this + // event can always be compared against TRAIN_DOWNLOAD_PLAN_RECEIVED. + // Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_PLAN_URI_RECEIVED = 16; + + // Client received a plan from the server. + // Always preceded by TRAIN_DOWNLOADED_PLAN_URI_RECEIVED. + TRAIN_DOWNLOAD_PLAN_RECEIVED = 17; + + // Client was rejected from a checkin request. + // Always preceded by TRAIN_DOWNLOAD_STARTED. + TRAIN_DOWNLOAD_TURNED_AWAY = 18; + + // Client started eligibility eval computation. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED = 19; + + // Client encountered a TensorFlow error during eligibility eval task + // computation. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_TENSORFLOW = 20; + + // Reading from disk failed during eligibility eval task computation. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_IO = 21; + + // Input parameters are invalid for eligibility eval task computation. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_INVALID_ARGUMENT = 22; + + // Client encountered an example selector error during eligibility eval task + // computation. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 23; + + // Eligibility eval computation was interrupted by the client. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_CLIENT_INTERRUPTED = 24; + + // Client finished eligibility eval computation. + // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. + TRAIN_ELIGIBILITY_EVAL_COMPUTATION_COMPLETED = 25; + + // Client started computation. + TRAIN_COMPUTATION_STARTED = 26; + + // A TensorFlow error was encountered during computation, or the output from + // the computation was missing or of an unexpected type. Always preceded by + // TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_ERROR_TENSORFLOW = 27; + + // Reading from disk failed during computation. + // Always preceded by TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_ERROR_IO = 28; + + // Input parameters are invalid for the given computation. + // Always preceded by TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_ERROR_INVALID_ARGUMENT = 29; + + // An error occurred when processing the example selector. + // Always preceded by TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 30; + + // Client got interrupted during computation. + // Always preceded by TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_CLIENT_INTERRUPTED = 31; + + // Client finished computation. + // Always preceded by TRAIN_COMPUTATION_STARTED. + TRAIN_COMPUTATION_COMPLETED = 32; + + // Client starts to upload successfully computed results. + TRAIN_RESULT_UPLOAD_STARTED = 33; + + // An error occurred during upload. + // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. + TRAIN_RESULT_UPLOAD_ERROR_IO = 34; + + // Upload was interrupted by the client. + // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. + TRAIN_RESULT_UPLOAD_CLIENT_INTERRUPTED = 35; + + // Upload was aborted by the server. + // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. + TRAIN_RESULT_UPLOAD_SERVER_ABORTED = 36; + + // Client uploaded training results to the server + // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. + TRAIN_RESULT_UPLOADED = 37; + + // Client starts to upload failure report. + TRAIN_FAILURE_UPLOAD_STARTED = 38; + + // An error occurred during upload. + // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. + TRAIN_FAILURE_UPLOAD_ERROR_IO = 39; + + // Upload was interrupted. + // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. + TRAIN_FAILURE_UPLOAD_CLIENT_INTERRUPTED = 40; + + // Upload was interrupted. + // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. + TRAIN_FAILURE_UPLOAD_SERVER_ABORTED = 41; + + // Client uploaded failure report to the server + // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. + TRAIN_FAILURE_UPLOADED = 42; + + // Client failed to initialize a component, but execution was not halted. + TRAIN_INITIALIZATION_ERROR_NONFATAL = 43; + + // Client failed to initialize a component, and execution was halted. + TRAIN_INITIALIZATION_ERROR_FATAL = 44; +} diff --git a/stats/enums/healthfitness/api/enums.proto b/stats/enums/healthfitness/api/enums.proto index ae1aa94d..a5e269eb 100644 --- a/stats/enums/healthfitness/api/enums.proto +++ b/stats/enums/healthfitness/api/enums.proto @@ -114,4 +114,11 @@ enum DataType { VO2_MAX = 32; WEIGHT = 33; WHEELCHAIR_PUSHES = 34; -}
\ No newline at end of file +} + +enum ForegroundState { + UNSPECIFIED = 0; + FOREGROUND = 1; + BACKGROUND = 2; +} + diff --git a/stats/enums/healthfitness/ui/enums.proto b/stats/enums/healthfitness/ui/enums.proto index 8d9eff76..670795d8 100644 --- a/stats/enums/healthfitness/ui/enums.proto +++ b/stats/enums/healthfitness/ui/enums.proto @@ -33,7 +33,7 @@ enum ElementId { DATA_AND_ACCESS_BUTTON = 2; SEE_ALL_RECENT_ACCESS_BUTTON = 3; RECENT_ACCESS_ENTRY = 4; - BACKUP_DATA_BUTTON = 5; + MANAGE_DATA_BUTTON = 153; // Onboarding page ONBOARDING_COMPLETED_BUTTON = 6; @@ -246,7 +246,24 @@ enum ElementId { ERROR_PAGE_STATE = 151; WITH_DATA_PAGE_STATE = 152; - // Next available: 153; + // Manage data page + BACKUP_DATA_BUTTON = 5; + DATA_SOURCES_AND_PRIORITY_BUTTON = 154; + SET_UNITS_BUTTON = 155; + + // Data sources page + DATA_TYPE_SPINNER_BUTTON = 156; + DATA_TOTALS_CARD = 157; + APP_SOURCE_BUTTON = 158; + ADD_AN_APP_BUTTON = 159; + EDIT_SOURCE_LIST_BUTTON = 160; + REORDER_APP_SOURCE_BUTTON = 162; + REMOVE_APP_SOURCE_BUTTON = 163; + + // Add an app page + POTENTIAL_PRIORITY_APP_BUTTON = 161; + + // Next available: 162; } @@ -282,6 +299,10 @@ enum PageId { MIGRATION_MODULE_UPDATE_NEEDED_PAGE = 23; MIGRATION_MORE_SPACE_NEEDED_PAGE = 24; MIGRATION_PAUSED_PAGE = 25; + // New IA and Source controls + MANAGE_DATA_PAGE = 26; + DATA_SOURCES_PAGE = 27; + ADD_AN_APP_PAGE = 28; } enum Action { diff --git a/stats/enums/input/enums.proto b/stats/enums/input/enums.proto index 832b3bec..6549783a 100644 --- a/stats/enums/input/enums.proto +++ b/stats/enums/input/enums.proto @@ -114,8 +114,11 @@ enum KeyboardSystemEvent { /** * Criteria for keyboard layout selection + * DEPRECATED: Since Enums should include a default UNSPECIFIED value + * as the first value in the declaration */ enum KeyboardLayoutSelectionCriteria { + option deprecated = true; // Manual selection by user USER = 0; // Auto-detection based on device provided language tag and layout type @@ -127,6 +130,40 @@ enum KeyboardLayoutSelectionCriteria { } /** + * Criteria for keyboard layout selection + */ +enum LayoutSelectionCriteriaKeyboard { + // Unspecified + LAYOUT_SELECTION_CRITERIA_UNSPECIFIED = 0; + // Manual selection by user + LAYOUT_SELECTION_CRITERIA_USER = 1; + // Auto-detection based on device provided language tag and layout type + LAYOUT_SELECTION_CRITERIA_DEVICE = 2; + // Auto-detection based on IME provided language tag and layout type + LAYOUT_SELECTION_CRITERIA_VIRTUAL_KEYBOARD = 3; + // Default selection + LAYOUT_SELECTION_CRITERIA_DEFAULT = 4; +} + +/** + * Keyboard Layout Type + * This enum is for layout types provided both by the physical keyboard + * and the IME + */ +enum KeyboardLayoutType { + LAYOUT_TYPE_UNDEFINED = 0; + LAYOUT_TYPE_QWERTY = 1; + LAYOUT_TYPE_QWERTZ = 2; + LAYOUT_TYPE_AZERTY = 3; + LAYOUT_TYPE_DVORAK = 4; + LAYOUT_TYPE_COLEMAK = 5; + LAYOUT_TYPE_WORKMAN = 6; + LAYOUT_TYPE_TURKISH_F = 7; + LAYOUT_TYPE_TURKISH_Q = 8; + LAYOUT_TYPE_EXTENDED = 9; +} + +/** * Contains usage type/category definitions. * Logged in InputDeviceUsageReported atom. */ diff --git a/stats/enums/jank/enums.proto b/stats/enums/jank/enums.proto index 924bd36e..ffd472fd 100644 --- a/stats/enums/jank/enums.proto +++ b/stats/enums/jank/enums.proto @@ -95,11 +95,18 @@ enum InteractionType { LOCKSCREEN_CLOCK_MOVE_ANIMATION = 71; LAUNCHER_OPEN_SEARCH_RESULT = 72; LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK = 79; - SHADE_EXPAND_FROM_STATUS_BAR = 80; IME_INSETS_SHOW_ANIMATION = 81; IME_INSETS_HIDE_ANIMATION = 82; SPLIT_SCREEN_DOUBLE_TAP_DIVIDER = 83; + LAUNCHER_UNFOLD_ANIM = 84; + PREDICTIVE_BACK_CROSS_ACTIVITY = 85; + PREDICTIVE_BACK_CROSS_TASK = 86; + PREDICTIVE_BACK_HOME = 87; + LAUNCHER_SEARCH_QSB_OPEN = 88; + reserved 2; + reserved 73 to 78; // For b/281564325. + reserved 80; } enum DisplayResolution { @@ -110,6 +117,16 @@ enum DisplayResolution { QHD = 4; // 2560x1440 <= x } +enum DisplayRefreshRate { + UNKNOWN_REFRESH_RATE = 0; + VARIABLE_REFRESH_RATE = 1; // RR changed during the CUJ. + RR_30_HZ = 2; // x < 50 + RR_60_HZ = 3; // 50 <= x < 80 + RR_90_HZ = 4; // 80 <= x < 110 + RR_120_HZ = 5; // 110 <= x < 180 + RR_240_HZ = 6; // 180 <= x +} + /** * Enum used by UIActionLatencyReported. */ @@ -138,5 +155,8 @@ enum ActionType { ACTION_REQUEST_IME_SHOWN = 21; ACTION_REQUEST_IME_HIDDEN = 22; ACTION_SMARTSPACE_DOORBELL = 23; + reserved 24 to 26; // For b/281564325. + ACTION_NOTIFICATION_BIG_PICTURE_LOADED = 27; + ACTION_KEYGUARD_FPS_UNLOCK_TO_HOME = 28; + ACTION_BACK_SYSTEM_ANIMATION = 29; } - diff --git a/stats/enums/media/outputswitcher/enums.proto b/stats/enums/media/outputswitcher/enums.proto index 67e1861e..151358e3 100644 --- a/stats/enums/media/outputswitcher/enums.proto +++ b/stats/enums/media/outputswitcher/enums.proto @@ -55,6 +55,7 @@ enum MediumType { MEDIUMTYPE_CAST_OUTPUT = 2; MEDIUMTYPE_PROPRIETARY_OUTPUT = 3; MEDIUMTYPE_UNKNOWN = 4; + MEDIUMTYPE_BLE = 5; } // Indicates the scan state of list of available devices. @@ -69,4 +70,5 @@ enum MediaDeviceType { MEDIADEVICETYPE_BLUETOOTH = 0; MEDIADEVICETYPE_FASTPAIR = 1; MEDIADEVICETYPE_BUILTIN_SPEAKER = 2; + MEDIADEVICETYPE_SASS = 3; } diff --git a/stats/enums/mms/enums.proto b/stats/enums/mms/enums.proto index 273d62fc..807f3d57 100644 --- a/stats/enums/mms/enums.proto +++ b/stats/enums/mms/enums.proto @@ -35,4 +35,5 @@ enum MmsResultEnum { MMS_RESULT_ERROR_INVALID_SUBSCRIPTION_ID = 9; MMS_RESULT_ERROR_INACTIVE_SUBSCRIPTION = 10; MMS_RESULT_ERROR_DATA_DISABLED = 11; + MMS_RESULT_ERROR_MMS_DISABLED_BY_CARRIER = 12; }
\ No newline at end of file diff --git a/stats/enums/os/enums.proto b/stats/enums/os/enums.proto index 1cc3b8fb..4c63a2a7 100644 --- a/stats/enums/os/enums.proto +++ b/stats/enums/os/enums.proto @@ -105,6 +105,16 @@ enum TemperatureTypeEnum { // Neural Processing Unit. TEMPERATURE_TYPE_NPU = 9; + TEMPERATURE_TYPE_TPU = 10; + TEMPERATURE_TYPE_DISPLAY = 11; + TEMPERATURE_TYPE_MODEM = 12; + TEMPERATURE_TYPE_SOC = 13; + TEMPERATURE_TYPE_WIFI = 14; + TEMPERATURE_TYPE_CAMERA = 15; + TEMPERATURE_TYPE_FLASHLIGHT = 16; + TEMPERATURE_TYPE_SPEAKER = 17; + TEMPERATURE_TYPE_AMBIENT = 18; + TEMPERATURE_TYPE_POGO = 19; } // Device throttling severity @@ -140,6 +150,14 @@ enum CoolingTypeEnum { MODEM = 4; NPU = 5; COMPONENT = 6; + TPU = 7; + POWER_AMPLIFIER = 8; + DISPLAY = 9; + SPEAKER = 10; + WIFI = 11; + CAMERA = 12; + FLASHLIGHT = 13; + USB_PORT = 14; }; // Wakelock types, primarily used by android/os/PowerManager.java. diff --git a/stats/enums/service/enums.proto b/stats/enums/service/enums.proto index c0c42425..f524b942 100644 --- a/stats/enums/service/enums.proto +++ b/stats/enums/service/enums.proto @@ -54,4 +54,9 @@ enum ComplianceWarning { COMPLIANCE_WARNING_BC_1_2 = 2; COMPLIANCE_WARNING_MISSING_RP = 3; COMPLIANCE_WARNING_OTHER = 4; + COMPLIANCE_WARNING_INPUT_POWER_LIMITED = 5; + COMPLIANCE_WARNING_MISSING_DATA_LINES = 6; + COMPLIANCE_WARNING_ENUMERATION_FAIL = 7; + COMPLIANCE_WARNING_FLAKY_CONNECTION = 8; + COMPLIANCE_WARNING_UNRELIABLE_IO = 9; } diff --git a/stats/enums/stats/accessibility/accessibility_enums.proto b/stats/enums/stats/accessibility/accessibility_enums.proto index 3303c010..3bef30a2 100644 --- a/stats/enums/stats/accessibility/accessibility_enums.proto +++ b/stats/enums/stats/accessibility/accessibility_enums.proto @@ -28,6 +28,7 @@ enum ShortcutType { A11Y_FLOATING_MENU = 5; A11Y_GESTURE = 6; A11Y_WEAR_TRIPLE_PRESS_GESTURE = 7; + TWO_FINGER_TRIPLE_TAP = 8; } // The service status code. diff --git a/stats/enums/stats/hdmi/enums.proto b/stats/enums/stats/hdmi/enums.proto index 76216630..a7dc59ab 100644 --- a/stats/enums/stats/hdmi/enums.proto +++ b/stats/enums/stats/hdmi/enums.proto @@ -122,4 +122,31 @@ enum FeatureAbortReason { INVALID_OPERAND = 13; REFUSED = 14; UNABLE_TO_DETERMINE = 15; +} + +// State of the eARC connection. +// Values correspond to EarcStatus in com.android.server.hdmi.Constants, offset by 1. +enum ConnectionState { + HDMI_EARC_STATUS_UNKNOWN = 0; + HDMI_EARC_STATUS_IDLE = 1; + HDMI_EARC_STATUS_EARC_PENDING = 2; + HDMI_EARC_STATUS_ARC_PENDING = 3; + HDMI_EARC_STATUS_EARC_CONNECTED = 4; + +} + +// Reason parameter of the eARC connection state logging. +enum LogReason { + LOG_REASON_UNKNOWN = 0; + LOG_REASON_WAKE = 1; + LOG_REASON_EARC_STATUS_CHANGED = 2; + LOG_REASON_EARC_STATUS_CHANGED_UNSUPPORTED_PORT = 3; + LOG_REASON_EARC_STATUS_CHANGED_WRONG_STATE = 4; +} + +// Reason parameter of the Dynamic soundbar mode state logging. +enum DynamicSoundbarModeLogReason { + LOG_REASON_DSM_UNKNOWN = 0; + LOG_REASON_DSM_WAKE = 1; + LOG_REASON_DSM_SETTING_TOGGLED = 2; }
\ No newline at end of file diff --git a/stats/enums/stats/ike/ike.proto b/stats/enums/stats/ike/ike.proto index 91c05417..5ca01f25 100644 --- a/stats/enums/stats/ike/ike.proto +++ b/stats/enums/stats/ike/ike.proto @@ -122,3 +122,4 @@ enum IkeUnderlyingNetworkType { NETWORK_CELLULAR = 2; } + diff --git a/stats/enums/stats/style/style_enums.proto b/stats/enums/stats/style/style_enums.proto index 84cc8d62..f91599f4 100644 --- a/stats/enums/stats/style/style_enums.proto +++ b/stats/enums/stats/style/style_enums.proto @@ -50,6 +50,16 @@ enum Action { SNAPSHOT = 28; WALLPAPER_EFFECT_PROBE = 29; WALLPAPER_EFFECT_FG_DOWNLOAD = 30; + THEME_COLOR_APPLIED = 31; + GRID_APPLIED = 32; + CLOCK_APPLIED = 33; + CLOCK_COLOR_APPLIED = 34; + CLOCK_SIZE_APPLIED = 35; + THEMED_ICON_APPLIED = 36; + LOCK_SCREEN_NOTIFICATION_APPLIED = 37; + SHORTCUT_APPLIED = 38; + DARK_THEME_APPLIED = 39; + RESET_APPLIED = 40; } enum LocationPreference { @@ -75,6 +85,7 @@ enum LaunchedPreference { LAUNCHED_CROP_AND_SET_ACTION = 6; LAUNCHED_DEEP_LINK = 7; LAUNCHED_SETTINGS_SEARCH = 8; + LAUNCHED_KEYGUARD = 9; } enum EffectPreference { @@ -85,3 +96,33 @@ enum EffectPreference { EFFECT_APPLIED_ABORTED = 4; EFFECT_APPLIED_STARTED = 5; } + +enum SetWallpaperEntryPoint { + SET_WALLPAPER_ENTRY_POINT_UNSPECIFIED = 0; + SET_WALLPAPER_ENTRY_POINT_WALLPAPER_PREVIEW = 1; + SET_WALLPAPER_ENTRY_POINT_WALLPAPER_QUICK_SWITCHER = 2; + SET_WALLPAPER_ENTRY_POINT_LAUNCHER_WALLPAPER_QUICK_SWITCHER = 3; + SET_WALLPAPER_ENTRY_POINT_ROTATION_WALLPAPER = 4; + SET_WALLPAPER_ENTRY_POINT_RESET = 5; + SET_WALLPAPER_ENTRY_POINT_RESTORE = 6; +} + +enum WallpaperDestination { + WALLPAPER_DESTINATION_UNSPECIFIED = 0; + WALLPAPER_DESTINATION_HOME_SCREEN = 1; + WALLPAPER_DESTINATION_LOCK_SCREEN = 2; + WALLPAPER_DESTINATION_HOME_AND_LOCK_SCREEN = 3; +} + +enum ColorSource { + COLOR_SOURCE_UNSPECIFIED = 0; + COLOR_SOURCE_HOME_SCREEN_WALLPAPER = 1; + COLOR_SOURCE_LOCK_SCREEN_WALLPAPER = 2; + COLOR_SOURCE_PRESET_COLOR = 3; +} + +enum ClockSize { + CLOCK_SIZE_UNSPECIFIED = 0; + CLOCK_SIZE_DYNAMIC = 1; + CLOCK_SIZE_SMALL = 2; +} diff --git a/stats/enums/telephony/enums.proto b/stats/enums/telephony/enums.proto index 38eb26f7..6f73cb6b 100644 --- a/stats/enums/telephony/enums.proto +++ b/stats/enums/telephony/enums.proto @@ -92,6 +92,14 @@ enum NetworkTypeEnum { NETWORK_TYPE_NR = 20; } +// Cellular radio power state, see android/telephony/TelephonyManager.java for definitions. +enum CellularRadioPowerStateEnum { + RADIO_POWER_STATE_UNKNOWN = 0; + RADIO_POWER_STATE_OFF = 1; + RADIO_POWER_STATE_ON = 2; + RADIO_POWER_STATE_UNAVAILABLE = 3; +} + // Roaming type enums, see android.telephony.ServiceState.RoamingType for definitions. enum RoamingTypeEnum { ROAMING_TYPE_NOT_ROAMING = 0; @@ -293,6 +301,7 @@ enum DataDeactivateReasonEnum { DEACTIVATE_REASON_RAT_NOT_ALLOWED = 10; DEACTIVATE_REASON_ROAMING_DISABLED = 11; DEACTIVATE_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED = 12; + DEACTIVATE_REASON_DATA_SERVICE_OPTION_NOT_SUPPORTED = 13; DEACTIVATE_REASON_DATA_SERVICE_NOT_READY = 14; DEACTIVATE_REASON_POWER_OFF_BY_CARRIER = 15; DEACTIVATE_REASON_DATA_STALL = 16; diff --git a/stats/enums/telephony/satellite/enums.proto b/stats/enums/telephony/satellite/enums.proto index ab96e98a..7bc20dff 100644 --- a/stats/enums/telephony/satellite/enums.proto +++ b/stats/enums/telephony/satellite/enums.proto @@ -69,4 +69,11 @@ enum NTRadioTechnology { NT_RADIO_TECHNOLOGY_EMTC_NTN = 3; /* Proprietary technology like Iridium or Bullitt */ NT_RADIO_TECHNOLOGY_PROPRIETARY = 4; -}
\ No newline at end of file +} + +// Handover type from emergency call to satellite messaging +enum RecommendingHandoverType { + RECOMMENDING_HANDOVER_TYPE_UNKNOWN = 0; + RECOMMENDING_HANDOVER_TYPE_SOS = 1; + RECOMMENDING_HANDOVER_TYPE_T911 = 2; +} diff --git a/stats/enums/transparency/enums.proto b/stats/enums/transparency/enums.proto new file mode 100644 index 00000000..91550024 --- /dev/null +++ b/stats/enums/transparency/enums.proto @@ -0,0 +1,31 @@ +/* + * 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. + */ + +syntax = "proto2"; +package com.android.os.transparency; + +option java_multiple_files = true; + +/** + * Digest algorithm types, used in BinaryTransparencyService.java. + */ +enum DigestAlgorithmType { + DIGEST_ALGORITHM_UNKNOWN = 0; + DIGEST_ALGORITHM_CHUNKED_SHA256 = 1; + DIGEST_ALGORITHM_CHUNKED_SHA512 = 2; + DIGEST_ALGORITHM_VERITY_CHUNKED_SHA256 = 3; + DIGEST_ALGORITHM_SHA256 = 4; +} diff --git a/stats/enums/view/inputmethod/enums.proto b/stats/enums/view/inputmethod/enums.proto index 67e6476f..cca96de5 100644 --- a/stats/enums/view/inputmethod/enums.proto +++ b/stats/enums/view/inputmethod/enums.proto @@ -62,6 +62,8 @@ enum SoftInputShowHideReasonEnum { REASON_REMOVE_IME_SCREENSHOT_FROM_IMMS = 35; REASON_UPDATE_IME_PARENT_FROM_IMMS = 36; REASON_HIDE_WHEN_INPUT_TARGET_INVISIBLE = 37; + REASON_HIDE_CLOSE_CURRENT_SESSION = 38; + REASON_HIDE_SOFT_INPUT_FROM_VIEW = 39; } // The type of the IME request, used by android/view/inputmethod/ImeTracker.java. @@ -174,7 +176,7 @@ enum ImeRequestPhaseEnum { // Started the IME window insets show animation. PHASE_CLIENT_CONTROL_ANIMATION = 33; // Checked that the IME is controllable. - PHASE_CLIENT_DISABLED_USER_ANIMATION = 34; + PHASE_CLIENT_DISABLED_USER_ANIMATION = 34 [deprecated = true]; // Collecting insets source controls. PHASE_CLIENT_COLLECT_SOURCE_CONTROLS = 35; // Reached the insets source consumer's show request method. diff --git a/stats/enums/wear/connectivity/enums.proto b/stats/enums/wear/connectivity/enums.proto new file mode 100644 index 00000000..dc7a6f0b --- /dev/null +++ b/stats/enums/wear/connectivity/enums.proto @@ -0,0 +1,190 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package com.google.android.wearable.connectivity; + +option java_multiple_files = true; + +enum MediatorType { + WEAR_BLUETOOTH_MEDIATOR = 0; + WEAR_CELLULAR_DATA_MEDIATOR = 1; + WEAR_CELLULAR_MEDIATOR = 2; + WEAR_WIFI_MEDIATOR = 3; + WEAR_WIFI_SCAN_MEDIATOR = 4; +} + +enum MediatorAction { + ACTION_UNKNOWN = 0; + DISABLE_PNO_SCAN = 1; + ENABLE_PNO_SCAN = 2; + MOBILE_DATA_OFF = 3; + MOBILE_DATA_ON = 4; + PROXY_CONNECTED = 5; + PROXY_DISCONNECTED = 6; + RADIO_OFF = 7; + RADIO_ON = 8; + BT_DISCONNECT_UX_FINISHED = 9; +} + +/** + * Keep sorted order in each block. Last enum num is 60 + */ +enum TriggerEvent { + TRIGGER_EVENT_UNKNOWN = 0; + BEDTIME_MODE_UPDATE = 1; + CELL_ONLY_MODE_UPDATE = 2; + DISABLE_MEDIATOR_SETTING_UPDATE = 3; + MODE_MANAGER_UPDATE = 4; + ON_BOOT_COMPLETED = 5; + + // WearWifiMediator & WearCellularMediator + ACTIVITY_MODE_UPDATE = 6; + CALL_STATE_CHANGED_EMERGENCY_ENDED = 7; + COMPANION_CONNECTION_CHANGED = 8; + DEVICE_ENABLE_CHANGED = 9; + DEVICE_IDLE_MODE_CHANGED = 10; + ON_USER_UNLOCKED = 11; + POWER_SAVE_MODE_CHANGED = 12; + PROXY_CONNECTED_UPDATE = 13; + THERMAL_EMERGENCY_MODE_UPDATE = 14; + + // WearWifiMediator Only + CHARGING_STATE_CHANGE = 15; + ENABLE_WIFI_WHILE_CHARGING_SETTING = 16; + HARDWARE_LOW_POWER_MODE_CHANGE = 17; + IN_WIFI_SETTING_MENU = 18; + NEW_EMERGENCY_OUTGOING_CALL = 19; + NUM_CONFIGURED_NETWORK_UPDATE = 20; + NUM_UNMETERED_REQ_UPDATE = 21; + NUM_WIFI_REQ_UPDATE = 22; + WIFI_BACKOFF_CHANGE = 23; + WIFI_ON_WHEN_PROXY_DISCONNECTED_SETTING = 24; + WIFI_SETTING_CHANGE = 25; + WIFI_STATE_DISABLED = 26; + WIFI_STATE_ENABLED = 27; + WIFI_STATE_ENABLED_UNEXPECTED = 28; + + // WearCellularMediator Only + CELL_AUTO_SETTING = 29; + CELL_ON_SETTING = 30; + CONNECTION_STATE_CHANGED_PDN_DISCONNECTED = 31; + EMERGENCY_CALLBACK_MODE_CHANGED = 32; + EMERGENCY_RADIO_ON_TIMEOUT = 33; + ESIM_PROFILE_ACTIVATION_SETTING = 34; + ESIM_TEST_MODE = 35; + HFP_CONNECTION_CHANGED = 36; + MOBILE_SIGNAL_DETECTOR_SETTING = 37; + NUM_CELLULAR_REQ_UPDATE = 38; + SIGNAL_STATE_CHANGED = 39; + SIM_STATE_CHANGED = 40; + SUBSCRIPTIONS_CHANGED = 41; + SUBSCRIPTION_PHONE_STATE_CHANGED = 42; + VOWIFI_STATE_UPDATE = 43; + WIFI_CONNECTED_UPDATE = 44; + WIFI_DISCONNECTED_UPDATE = 45; + WIFI_SIGNAL_STRENGTH_CHANGE = 46; + + // WearCellularDataMediator Only + FORCE_CELLULAR_DATA_UPDATE = 47; + ON_CELLULAR_SIGNAL_CHANGED = 48; + SUBSCRIPTION_UPDATE = 49; + WIFI_CONNECTION_UPDATE = 50; + + BATTERY_SAVER_MODE_UPDATE = 51; + NO_DATA_UPDATE = 52; + INTERACTIVE_MODE_UPDATE = 53; + AIRPLANE_MODE_UPDATE = 54; + POOR_SIGNAL_DETECTION_UPDATE = 55; + CONNECTIVITY_KEEP_DATA_ON_UPDATE = 56; + UI_TIMEOUT_NO_INTERACTION = 57; + UI_BT_DISCONNECT_INTENDED = 58; + UI_WAIT_FOR_BT_RECONNECT = 59; + UI_CANCELLED = 60; +} + +/** + * Keep sorted order in each block. Last enum num is 52 + */ +enum Reason { + REASON_UNKNOWN = 0; + OFF_ACTIVITY_MODE = 1; + OFF_BEDTIME_MODE_ENABLED = 2; + OFF_CELL_ONLY_MODE = 3; + OFF_MODE_MANAGER = 4; + OFF_THERMAL_EMERGENCY = 5; + OFF_USER_ABSENT = 6; + OFF_WIFI_CONNECTED = 7; + ON_CELL_ONLY_MODE = 8; + ON_TEST_DEFAULT_STATE = 9; + + // WearWifiMediator & WearCellularMediator + OFF_DEVICE_DISABLED = 10; + OFF_DIRECTBOOT = 11; + OFF_POWER_SAVE = 12; + ON_EMERGENCY = 13; + ON_NETWORK_REQUEST = 14; + ON_PROXY_DISCONNECTED = 15; + + // WearBluetoothMediator Only + OFF_TIME_ONLY_MODE = 16; + OFF_SETTINGS_PREFERENCE = 17; + ON_AUTO = 18; + ON_BOOT_AUTO = 19; + OFF_HFP_ENABLE = 20; + ON_HFP_ENABLE = 21; + ON_CONNECTED = 22; + ON_CONNECTED_NO_INTERNET = 23; + OFF_DISCONNECTED = 24; + + // WearWifiMediator Only + OFF_HARDWARE_LOW_POWER = 25; + OFF_NO_CONFIGURED_NETWORKS = 26; + OFF_NO_REQUESTS = 27; + OFF_WAIT_FOR_BT_ON_BOOT = 28; + OFF_WIFI_BACKOFF = 29; + OFF_WIFI_SETTING_OFF = 30; + ON_CHARGING = 31; + ON_IN_WIFI_SETTINGS = 32; + + // WearWifiScanMediator Only + NO_DISABLE_REASONS = 33; + MODE_MANAGER_REQUEST = 34; + + // WearCellularMediator Only + OFF_BEDTIME_HFP = 35; + OFF_CELL_SETTING = 36; + OFF_ESIM_DEACTIVATED = 37; + OFF_INITIAL_BOOT = 38; + OFF_NO_SIGNAL = 39; + OFF_PROXY_CONNECTED = 40; + OFF_SIM_ABSENT = 41; + OFF_UNSTABLE_SIGNAL = 42; + OFF_VOWIFI_AVAILABLE = 43; + ON_ESIM_TEST_MODE = 44; + ON_NO_CELL_AUTO = 45; + ON_PHONE_CALL = 46; + + // WearCellularDataMediator Only + OFF_FORCE_CELLULAR_DATA_OFF = 47; + ON_NO_DISABLE_REASONS = 48; + OFF_CELL_POOR_SIGNAL = 49; + + OFF_NO_DATA_ENABLED = 50; + OFF_POOR_SIGNAL = 51; + ON_PEEK_SIGNAL = 52; +} diff --git a/stats/enums/wear/media/enums.proto b/stats/enums/wear/media/enums.proto index eba078f5..e7789fcc 100644 --- a/stats/enums/wear/media/enums.proto +++ b/stats/enums/wear/media/enums.proto @@ -30,6 +30,14 @@ enum MediaAction { RESUME = 5; VOLUME_INCREASE = 6; VOLUME_DECREASE = 7; + SEEK_IN_CURRENT_MEDIA_ITEM = 8; + SEEK_BACK = 9; + SEEK_FORWARD = 10; + // CustomActions can be used to extend the capabilities of the standard transport controls + // by exposing app specific actions to Controllers. This is for app defined custom actions + // insteractions captured by wear media controls. For more information, see + // https://developer.android.com/reference/android/media/session/PlaybackState.CustomAction + CUSTOM_ACTION = 11; } // Indicates the type of launch source diff --git a/stats/enums/wear/modes/enums.proto b/stats/enums/wear/modes/enums.proto new file mode 100644 index 00000000..152be6c7 --- /dev/null +++ b/stats/enums/wear/modes/enums.proto @@ -0,0 +1,46 @@ +/* + * 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. + */ + +syntax = "proto2"; + +package com.google.android.wearable.modes.telemetry; + +// Indicates type of Mode state +enum ModeState { + MODE_STATE_UNKNOWN = 0; + MODE_STATE_OFF = 1; + MODE_STATE_ON = 2; +} + +// Indicates Mode Id for a specific mode +enum ModeId { + UNKNOWN_MODE = 0; + AIRPLANE_MODE = 1; + BEDTIME_MODE = 2; + BATTERY_SAVER_MODE = 3; + DO_NOT_DISTURB_MODE = 4; + THEATER_MODE = 5; + TOUCH_LOCK_MODE = 6; + SCHOOL_MODE = 7; + OFF_BODY = 8; +} + +// Indicates Network state as being on or off +enum NetworkState { + UNKNOWN = 0; + OFF = 1; + ON = 2; +} diff --git a/stats/enums/wifi/enums.proto b/stats/enums/wifi/enums.proto index 9dd4a578..50cd2202 100644 --- a/stats/enums/wifi/enums.proto +++ b/stats/enums/wifi/enums.proto @@ -50,7 +50,10 @@ enum WifiModeEnum { WIFI_MODE_FULL_LOW_LATENCY = 4; } -// What permission model the caller has +/** + * What permission model the caller has. + * Calculated with WifiPermissionsUtil#getWifiCallerType + */ enum WifiCallerType { UNKNOWN = 0; SETTINGS = 1; // caller is SETTINGS or SETUP_WIZARD @@ -203,6 +206,58 @@ enum StaStatus { STA_STATUS_CONNECTED_6_GHZ = 4; } +enum EapType { + // Unknown Type + TYPE_UNKNOWN = 0; + // EAP_TLS (13) + TYPE_EAP_TLS = 1; + // EAP_TTLS (21) + TYPE_EAP_TTLS = 2; + // EAP_SIM (18) + TYPE_EAP_SIM = 3; + // EAP_AKA (23) + TYPE_EAP_AKA = 4; + // EAP_AKA_PRIME (50) + TYPE_EAP_AKA_PRIME = 5; + TYPE_EAP_WAPI_CERT = 6; + TYPE_EAP_UNAUTH_TLS = 7; + TYPE_EAP_PEAP = 8; + TYPE_EAP_PWD = 9; + TYPE_EAP_OTHERS = 10; +} + +enum EapInnerMethod { + METHOD_UNKNOWN = 0; + METHOD_PAP = 1; + METHOD_MSCHAP = 2; + METHOD_MSCHAP_V2 = 3; + METHOD_OTHERS = 4; + // Generic Token Card + METHOD_GTC = 5; + // EAP-Subscriber Identity Module [RFC-4186] + METHOD_SIM = 6; + // EAP-Authentication and Key Agreement [RFC-4187] + METHOD_AKA = 7; + // EAP-Authentication and Key Agreement Prime [RFC-5448] + METHOD_AKA_PRIME = 8; +} + +enum RoamingType { + ROAMING_UNKNOWN = 0; + // Not a Passpoint network + ROAMING_NOT_PASSPOINT = 1; + // Non-Roaming + ROAMING_NONE = 2; + // Other RCOI Roaming + ROAMING_RCOI_OTHERS = 3; + // Free OpenRoaming + ROAMING_RCOI_OPENROAMING_FREE = 4; + // Settled OpenRoaming + ROAMING_RCOI_OPENROAMING_SETTLED = 5; + // Not RCOI roaming + ROAMING_NOT_RCOI = 6; +} + /** * Wi-Fi Standards */ @@ -263,4 +318,59 @@ enum AwareHalApi { AWARE_INITIATE_BOOTSTRAPPING_REQUEST = 20; AWARE_RESPOND_TO_BOOTSTRAPPING_INDICATION_REQUEST = 21; AWARE_TERMINATE_PAIRING_REQUEST = 22; -}
\ No newline at end of file +} + +/** + * Wi-Fi Security modes defined by the combinations of cipher suite, AKM and PMF + */ +enum SecurityMode { + SECURITY_MODE_UNKNOWN = 0; + SECURITY_MODE_INVALID = 1; + SECURITY_MODE_WPA3_ENTERPRISE_192_BIT = 2; + SECURITY_MODE_WPA3_ENTERPRISE = 3; + SECURITY_MODE_WPA3_PERSONAL = 4; + SECURITY_MODE_WPA3_WPA2_PERSONAL_TRANSITION = 5; + SECURITY_MODE_DPP = 6; + SECURITY_MODE_WPA2_PERSONAL = 7; + SECURITY_MODE_WPA2_WPA_PERSONAL_TRANSITION = 8; + SECURITY_MODE_WAPI_CERT = 9; + SECURITY_MODE_WAPI_PSK = 10; + SECURITY_MODE_WPA_ENTERPRISE_LEGACY = 11; + SECURITY_MODE_WPA_PERSONAL_LEGACY = 12; + SECURITY_MODE_OWE = 13; + SECURITY_MODE_OWE_TRANSITION = 14; + SECURITY_MODE_WEP = 15; + SECURITY_MODE_NONE = 16; +} + +enum TofuConfiguration { + // Default value. + TOFU_CONFIGURATION_UNSPECIFIED = 0; + // TOFU is not enabled on the enterprise config. + TOFU_CONFIGURATION_NOT_ENABLED = 1; + // TOFU is enabled pre-connection. + TOFU_CONFIGURATION_ENABLED_PRE_CONNECTION = 2; + // Root CA was configured post-TOFU connection. + TOFU_CONFIGURATION_CONFIGURE_ROOT_CA = 3; + // Certificate pinning was used post-TOFU connection. + TOFU_CONFIGURATION_CERT_PINNING = 4; +} + +/** + * Passpoint release versions + */ +enum PasspointRelease { + PASSPOINT_RELEASE_UNKNOWN = 0; + PASSPOINT_RELEASE_1 = 1; + PASSPOINT_RELEASE_2 = 2; + PASSPOINT_RELEASE_3 = 3; +} + +/** + * Wi-Fi usability state as predicted by the network scorer + */ +enum WifiPredictedUsabilityState { + WIFI_USABILITY_PREDICTED_UNKNOWN = 0; + WIFI_USABILITY_PREDICTED_USABLE = 1; + WIFI_USABILITY_PREDICTED_UNUSABLE = 2; + } diff --git a/stats/express/catalog/content_capture.cfg b/stats/express/catalog/content_capture.cfg new file mode 100644 index 00000000..c1b29563 --- /dev/null +++ b/stats/express/catalog/content_capture.cfg @@ -0,0 +1,8 @@ +express_metric { + id: "content_capture.value_content_capture_wrong_thread_count" + display_name: "Content Capture running on wrong thread count" + description: "Number of times Content Capture running on the wrong thread" + owner_email: "mingweiliao@google.com" + unit: UNIT_COUNT + type: COUNTER +} diff --git a/stats/express/catalog/device_lock.cfg b/stats/express/catalog/device_lock.cfg new file mode 100644 index 00000000..e9e571be --- /dev/null +++ b/stats/express/catalog/device_lock.cfg @@ -0,0 +1,24 @@ + +# Value metrics related to Device Lock + +express_metric { + id: "device_lock.value_resets_unsuccessful_provisioning_mandatory" + type: COUNTER + display_name: "Device Lock device reset for mandatory provisioning" + description: "The counter of device reset events due to unsuccessful MANDATORY provisioning logged in Device Lock" + owner_email: "bojiandu@google.com" + owner_email: "rajekumar@google.com" + owner_email: "zzhen@google.com" + unit: UNIT_COUNT +} + +express_metric { + id: "device_lock.value_resets_unsuccessful_provisioning_deferred" + type: COUNTER + display_name: "Device Lock device reset for deferred provisioning" + description: "The counter of device reset events due to unsuccessful DEFERRED provisioning logged in Device Lock" + owner_email: "bojiandu@google.com" + owner_email: "rajekumar@google.com" + owner_email: "zzhen@google.com" + unit: UNIT_COUNT +} diff --git a/stats/express/catalog/speech_recognition.cfg b/stats/express/catalog/speech_recognition.cfg new file mode 100644 index 00000000..79f5de1c --- /dev/null +++ b/stats/express/catalog/speech_recognition.cfg @@ -0,0 +1,17 @@ +express_metric { + id: "speech_recognition.value_exceed_service_connections_count" + display_name: "Refused session creations due to exceeding connected services" + description: "Counting how many sessions were dropped due to too many connected services" + owner_email: "hackz@google.com" + unit: UNIT_COUNT + type: COUNTER_WITH_UID +} + +express_metric { + id: "speech_recognition.value_exceed_session_count" + display_name: "Refused session creations due to exceeding session limit" + description: "Counting how many sessions were dropped due to too many sessions" + owner_email: "hackz@google.com" + unit: UNIT_COUNT + type: COUNTER_WITH_UID +} diff --git a/stats/express/catalog/virtual_devices.cfg b/stats/express/catalog/virtual_devices.cfg new file mode 100644 index 00000000..7d791b77 --- /dev/null +++ b/stats/express/catalog/virtual_devices.cfg @@ -0,0 +1,8 @@ +express_metric { + id: "virtual_devices.value_virtual_devices_created_count" + display_name: "Virtual Devices created count" + description: "Number of times Virtual Devices are created." + owner_email: "if-vdm@google.com" + unit: UNIT_COUNT + type: COUNTER +} |