summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OWNERS2
-rw-r--r--stats/Android.bp21
-rw-r--r--stats/TEST_MAPPING15
-rw-r--r--stats/atoms.proto601
-rw-r--r--stats/atoms/adpf/adpf_extension_atoms.proto97
-rw-r--r--stats/atoms/adservices/adservices_extension_atoms.proto257
-rw-r--r--stats/atoms/apex/apex_extension_atoms.proto72
-rw-r--r--stats/atoms/appsearch/appsearch_extension_atoms.proto165
-rw-r--r--stats/atoms/art/art_extension_atoms.proto3
-rw-r--r--stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto51
-rw-r--r--stats/atoms/cpu/cpu_atoms.proto43
-rw-r--r--stats/atoms/devicelock/devicelock_extension_atoms.proto62
-rw-r--r--stats/atoms/dnd/dnd_atoms.proto2
-rw-r--r--stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto94
-rw-r--r--stats/atoms/framework/framework_extension_atoms.proto86
-rw-r--r--stats/atoms/hdmi/hdmi_extension_atoms.proto69
-rw-r--r--stats/atoms/healthfitness/api/api_extension_atoms.proto7
-rw-r--r--stats/atoms/hotword/hotword_atoms.proto56
-rw-r--r--stats/atoms/hotword/hotword_extension_atoms.proto62
-rw-r--r--stats/atoms/input/input_extension_atoms.proto13
-rw-r--r--stats/atoms/kernel/kernel_extension_atoms.proto52
-rw-r--r--stats/atoms/location/location_atoms.proto6
-rw-r--r--stats/atoms/location/location_extension_atoms.proto6
-rw-r--r--stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto56
-rw-r--r--stats/atoms/power/power_extension_atoms.proto49
-rw-r--r--stats/atoms/sysui/sysui_atoms.proto13
-rw-r--r--stats/atoms/sysui/sysui_extension_atoms.proto88
-rw-r--r--stats/atoms/telephony/satellite/satellite_extension_atoms.proto6
-rw-r--r--stats/atoms/telephony/telephony_extension_atoms.proto6
-rw-r--r--stats/atoms/transparency/boot_integrity_extension_atoms.proto30
-rw-r--r--stats/atoms/tv/tv_extension_atoms.proto56
-rw-r--r--stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto72
-rw-r--r--stats/atoms/wear/media/wear_media_atoms.proto2
-rw-r--r--stats/atoms/wear/media/wear_media_extension_atoms.proto111
-rw-r--r--stats/atoms/wear/modes/wear_modes_extension_atoms.proto52
-rw-r--r--stats/atoms/wear/prototiles/prototiles_extension_atoms.proto417
-rw-r--r--stats/atoms/wearpas/wearpas_extension_atoms.proto14
-rw-r--r--stats/atoms/wearservices/wearservices_atoms.proto85
-rw-r--r--stats/atoms/wearservices/wearservices_extension_atoms.proto39
-rw-r--r--stats/atoms/wearsysui/wearsysui_extension_atoms.proto52
-rw-r--r--stats/atoms/wifi/wifi_extension_atoms.proto349
-rw-r--r--stats/enums/adservices/common/adservices_enums.proto116
-rw-r--r--stats/enums/adservices/enrollment/enums.proto49
-rw-r--r--stats/enums/adservices/fledge/enums.proto8
-rw-r--r--stats/enums/adservices/measurement/enums.proto20
-rw-r--r--stats/enums/anr/enums.proto1
-rw-r--r--stats/enums/apex/enums.proto45
-rw-r--r--stats/enums/app/enums.proto71
-rw-r--r--stats/enums/app/settings_enums.proto325
-rw-r--r--stats/enums/app/tvsettings_enums.proto4
-rw-r--r--stats/enums/app/wearservices/wearservices_enums.proto246
-rw-r--r--stats/enums/app/wearsettings_enums.proto92
-rw-r--r--stats/enums/bluetooth/enums.proto21
-rw-r--r--stats/enums/dnd/dnd_enums.proto8
-rw-r--r--stats/enums/federatedcompute/enums.proto212
-rw-r--r--stats/enums/healthfitness/api/enums.proto9
-rw-r--r--stats/enums/healthfitness/ui/enums.proto25
-rw-r--r--stats/enums/input/enums.proto37
-rw-r--r--stats/enums/jank/enums.proto24
-rw-r--r--stats/enums/media/outputswitcher/enums.proto2
-rw-r--r--stats/enums/mms/enums.proto1
-rw-r--r--stats/enums/os/enums.proto18
-rw-r--r--stats/enums/service/enums.proto5
-rw-r--r--stats/enums/stats/accessibility/accessibility_enums.proto1
-rw-r--r--stats/enums/stats/hdmi/enums.proto27
-rw-r--r--stats/enums/stats/ike/ike.proto1
-rw-r--r--stats/enums/stats/style/style_enums.proto41
-rw-r--r--stats/enums/telephony/enums.proto9
-rw-r--r--stats/enums/telephony/satellite/enums.proto9
-rw-r--r--stats/enums/transparency/enums.proto31
-rw-r--r--stats/enums/view/inputmethod/enums.proto4
-rw-r--r--stats/enums/wear/connectivity/enums.proto190
-rw-r--r--stats/enums/wear/media/enums.proto8
-rw-r--r--stats/enums/wear/modes/enums.proto46
-rw-r--r--stats/enums/wifi/enums.proto114
-rw-r--r--stats/express/catalog/content_capture.cfg8
-rw-r--r--stats/express/catalog/device_lock.cfg24
-rw-r--r--stats/express/catalog/speech_recognition.cfg17
-rw-r--r--stats/express/catalog/virtual_devices.cfg8
79 files changed, 4905 insertions, 311 deletions
diff --git a/OWNERS b/OWNERS
index 965a1de4..441f92f3 100644
--- a/OWNERS
+++ b/OWNERS
@@ -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
+}