Merge "Add Android Statsd Logging to "Record new trace" UI." into main
diff --git a/Android.bp b/Android.bp
index 5cdc9e7..0c31cbd 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13523,6 +13523,7 @@
"src/trace_processor/perfetto_sql/stdlib/android/app_process_starts.sql",
"src/trace_processor/perfetto_sql/stdlib/android/auto/multiuser.sql",
"src/trace_processor/perfetto_sql/stdlib/android/battery.sql",
+ "src/trace_processor/perfetto_sql/stdlib/android/battery/charging_states.sql",
"src/trace_processor/perfetto_sql/stdlib/android/battery_stats.sql",
"src/trace_processor/perfetto_sql/stdlib/android/binder.sql",
"src/trace_processor/perfetto_sql/stdlib/android/binder_breakdown.sql",
@@ -13544,6 +13545,7 @@
"src/trace_processor/perfetto_sql/stdlib/android/input.sql",
"src/trace_processor/perfetto_sql/stdlib/android/io.sql",
"src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql",
+ "src/trace_processor/perfetto_sql/stdlib/android/job_scheduler_states.sql",
"src/trace_processor/perfetto_sql/stdlib/android/memory/dmabuf.sql",
"src/trace_processor/perfetto_sql/stdlib/android/memory/heap_graph/class_summary_tree.sql",
"src/trace_processor/perfetto_sql/stdlib/android/memory/heap_graph/class_tree.sql",
diff --git a/BUILD b/BUILD
index 9bbfaed..30c3226 100644
--- a/BUILD
+++ b/BUILD
@@ -2719,6 +2719,14 @@
],
)
+# GN target: //src/trace_processor/perfetto_sql/stdlib/android/battery:battery
+perfetto_filegroup(
+ name = "src_trace_processor_perfetto_sql_stdlib_android_battery_battery",
+ srcs = [
+ "src/trace_processor/perfetto_sql/stdlib/android/battery/charging_states.sql",
+ ],
+)
+
# GN target: //src/trace_processor/perfetto_sql/stdlib/android/cpu:cpu
perfetto_filegroup(
name = "src_trace_processor_perfetto_sql_stdlib_android_cpu_cpu",
@@ -2824,6 +2832,7 @@
"src/trace_processor/perfetto_sql/stdlib/android/input.sql",
"src/trace_processor/perfetto_sql/stdlib/android/io.sql",
"src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql",
+ "src/trace_processor/perfetto_sql/stdlib/android/job_scheduler_states.sql",
"src/trace_processor/perfetto_sql/stdlib/android/monitor_contention.sql",
"src/trace_processor/perfetto_sql/stdlib/android/network_packets.sql",
"src/trace_processor/perfetto_sql/stdlib/android/oom_adjuster.sql",
@@ -3110,6 +3119,7 @@
deps = [
":src_trace_processor_perfetto_sql_stdlib_android_android",
":src_trace_processor_perfetto_sql_stdlib_android_auto_auto",
+ ":src_trace_processor_perfetto_sql_stdlib_android_battery_battery",
":src_trace_processor_perfetto_sql_stdlib_android_cpu_cpu",
":src_trace_processor_perfetto_sql_stdlib_android_frames_frames",
":src_trace_processor_perfetto_sql_stdlib_android_gpu_gpu",
diff --git a/gn/proto_library.gni b/gn/proto_library.gni
index bb55e77..2865fe2 100644
--- a/gn/proto_library.gni
+++ b/gn/proto_library.gni
@@ -369,7 +369,7 @@
rebase_path(invoker.generate_descriptor, proto_path)
deps = deps_
import_dirs = import_dirs_
- forward_variables_from(invoker, vars_to_forward)
+ forward_variables_from(invoker, vars_to_forward + [ "proto_deps" ])
}
# Not needed for descriptor proto_library target.
diff --git a/gn/standalone/proto_library.gni b/gn/standalone/proto_library.gni
index 2b67ea2..0fb119a 100644
--- a/gn/standalone/proto_library.gni
+++ b/gn/standalone/proto_library.gni
@@ -304,4 +304,5 @@
}
} # source_set(source_set_name)
}
+ not_needed(invoker, ["proto_deps"])
} # template
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index 80e90b6..345b248 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -2038,11 +2038,9 @@
ATOM_LMK_KILL_OCCURRED = 51;
ATOM_PICTURE_IN_PICTURE_STATE_CHANGED = 52;
ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED = 53;
- ATOM_LMK_STATE_CHANGED = 54;
ATOM_APP_START_MEMORY_STATE_CAPTURED = 55;
ATOM_SHUTDOWN_SEQUENCE_REPORTED = 56;
ATOM_BOOT_SEQUENCE_REPORTED = 57;
- ATOM_DAVEY_OCCURRED = 58;
ATOM_OVERLAY_STATE_CHANGED = 59;
ATOM_FOREGROUND_SERVICE_STATE_CHANGED = 60;
ATOM_CALL_STATE_CHANGED = 61;
@@ -2359,7 +2357,6 @@
ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION = 382;
ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED = 383;
ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT = 384;
- ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
ATOM_APP_COMPAT_STATE_CHANGED = 386;
ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED = 387;
ATOM_SPLITSCREEN_UI_CHANGED = 388;
@@ -2408,8 +2405,6 @@
ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED = 432;
ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED = 433;
ATOM_HOTWORD_DETECTOR_EVENTS = 434;
- ATOM_AD_SERVICES_API_CALLED = 435;
- ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED = 437;
ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED = 440;
ATOM_APP_BACKGROUND_RESTRICTIONS_INFO = 441;
@@ -2453,25 +2448,14 @@
ATOM_CB_MODULE_ERROR_REPORTED = 480;
ATOM_CB_SERVICE_FEATURE_CHANGED = 481;
ATOM_CB_RECEIVER_FEATURE_CHANGED = 482;
- ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION = 484;
ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION = 485;
ATOM_PRIVACY_SIGNALS_JOB_FAILURE = 486;
ATOM_VIBRATION_REPORTED = 487;
ATOM_UWB_RANGING_START = 489;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
ATOM_APP_COMPACTED_V2 = 491;
- ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
ATOM_DISPLAY_BRIGHTNESS_CHANGED = 494;
ATOM_ACTIVITY_ACTION_BLOCKED = 495;
- ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
- ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
- ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
- ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
- ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
- ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
- ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED = 504;
ATOM_VM_BOOTED = 505;
ATOM_VM_EXITED = 506;
@@ -2480,7 +2464,6 @@
ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED = 509;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED = 510;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED = 511;
- ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
ATOM_HEARING_AID_INFO_REPORTED = 513;
ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED = 514;
ATOM_AMBIENT_MODE_CHANGED = 515;
@@ -2502,9 +2485,6 @@
ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED = 532;
ATOM_BLUETOOTH_GATT_APP_INFO = 533;
ATOM_BRIGHTNESS_CONFIGURATION_UPDATED = 534;
- ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED = 538;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED = 539;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED = 540;
@@ -2542,12 +2522,10 @@
ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED = 576;
ATOM_BIOMETRIC_TOUCH_REPORTED = 577;
ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED = 578;
- ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
ATOM_LOCATION_ENABLED_STATE_CHANGED = 580;
ATOM_IME_REQUEST_FINISHED = 581;
ATOM_USB_COMPLIANCE_WARNINGS_REPORTED = 582;
ATOM_APP_SUPPORTED_LOCALES_CHANGED = 583;
- ATOM_GRAMMATICAL_INFLECTION_CHANGED = 584;
ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED = 586;
ATOM_BIOMETRIC_PROPERTIES_COLLECTED = 587;
ATOM_KERNEL_WAKEUP_ATTRIBUTED = 588;
@@ -2560,7 +2538,11 @@
ATOM_WS_NOTIFICATION_UPDATED = 596;
ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED = 601;
ATOM_WS_COMPLICATION_TAPPED = 602;
- ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_NOTIFICATION_BLOCKING = 780;
+ ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED = 822;
+ ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED = 823;
+ ATOM_WS_NOTIFICATION_ACTIONED = 824;
+ ATOM_WS_NOTIFICATION_LATENCY = 880;
ATOM_WIFI_BYTES_TRANSFER = 10000;
ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG = 10001;
ATOM_MOBILE_BYTES_TRANSFER = 10002;
@@ -2733,6 +2715,186 @@
ATOM_NOTIFICATION_MEMORY_USE = 10174;
ATOM_HDR_CAPABILITIES = 10175;
ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
+ ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+ ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+ ATOM_WS_CALL_DURATION_REPORTED = 628;
+ ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+ ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+ ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+ ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+ ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+ ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+ ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+ ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+ ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_PDF_LOAD_REPORTED = 859;
+ ATOM_PDF_API_USAGE_REPORTED = 860;
+ ATOM_PDF_SEARCH_REPORTED = 861;
+ ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+ ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+ ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+ ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+ ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+ ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+ ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+ ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+ ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+ ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+ ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+ ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+ ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+ ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+ ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+ ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+ ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+ ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+ ATOM_WEAR_POWER_MENU_OPENED = 731;
+ ATOM_WEAR_ASSISTANT_OPENED = 755;
+ ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+ ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+ ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+ ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+ ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+ ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+ ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+ ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+ ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+ ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+ ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+ ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+ ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
+ ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+ ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+ ATOM_VPN_CONNECTION_REPORTED = 851;
+ ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+ ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+ ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+ ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+ ATOM_ART_DATUM_REPORTED = 332;
+ ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+ ATOM_ART_DATUM_DELTA_REPORTED = 565;
+ ATOM_ART_DEX2OAT_REPORTED = 929;
+ ATOM_ART_DEVICE_STATUS = 10205;
+ ATOM_ODREFRESH_REPORTED = 366;
+ ATOM_ODSIGN_REPORTED = 548;
+ ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+ ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+ ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+ ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+ ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+ ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+ ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+ ATOM_EMERGENCY_STATE_CHANGED = 633;
+ ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+ ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+ ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+ ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+ ATOM_HEALTH_CONNECT_API_CALLED = 616;
+ ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+ ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+ ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+ ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+ ATOM_SELINUX_AUDIT_LOG = 799;
+ ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+ ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+ ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+ ATOM_DATA_NETWORK_VALIDATION = 10207;
+ ATOM_DATA_RAT_STATE_CHANGED = 854;
+ ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+ ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+ ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+ ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+ ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+ ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+ ATOM_QNS_HANDOVER_PINGPONG = 10179;
+ ATOM_SATELLITE_CONTROLLER = 10182;
+ ATOM_SATELLITE_SESSION = 10183;
+ ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+ ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+ ATOM_SATELLITE_PROVISION = 10186;
+ ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+ ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+ ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+ ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+ ATOM_SATELLITE_ENTITLEMENT = 10214;
+ ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+ ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+ ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+ ATOM_KEYBOARD_CONFIGURED = 682;
+ ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+ ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+ ATOM_TOUCHPAD_USAGE = 10191;
+ ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+ ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+ ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+ ATOM_CRONET_ENGINE_CREATED = 703;
+ ATOM_CRONET_TRAFFIC_REPORTED = 704;
+ ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+ ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+ ATOM_CRONET_INITIALIZED = 764;
+ ATOM_WEAR_MODE_STATE_CHANGED = 715;
+ ATOM_RENDERER_INITIALIZED = 736;
+ ATOM_SCHEMA_VERSION_RECEIVED = 737;
+ ATOM_LAYOUT_INSPECTED = 741;
+ ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+ ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+ ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+ ATOM_TILE_REQUESTED = 745;
+ ATOM_STATE_RESPONSE_RECEIVED = 746;
+ ATOM_TILE_RESPONSE_RECEIVED = 747;
+ ATOM_INFLATION_FINISHED = 748;
+ ATOM_INFLATION_FAILED = 749;
+ ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+ ATOM_DRAWABLE_RENDERED = 751;
+ ATOM_MEDIA_ACTION_REPORTED = 608;
+ ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+ ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+ ATOM_MEDIATOR_UPDATED = 721;
+ ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+ ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+ ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
+ ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+ ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+ ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+ ATOM_RKPD_POOL_STATS = 664;
+ ATOM_RKPD_CLIENT_OPERATION = 665;
+ ATOM_CPU_POLICY = 10199;
+ ATOM_ATOM_9999 = 9999;
+ ATOM_ATOM_99999 = 99999;
+ ATOM_SCREEN_OFF_REPORTED = 776;
+ ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+ ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+ ATOM_SCREEN_DIM_REPORTED = 867;
+ ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+ ATOM_BAL_ALLOWED = 632;
+ ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+ ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+ ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+ ATOM_USER_RISK_EVENT_REPORTED = 725;
+ ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+ ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+ ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+ ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+ ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+ ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+ ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+ ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+ ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+ ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+ ATOM_DREAM_SETTING_CHANGED = 705;
+ ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+ ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
ATOM_WIFI_AWARE_NDP_REPORTED = 638;
ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
@@ -2747,39 +2909,99 @@
ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
ATOM_WIFI_STATE_CHANGED = 700;
+ ATOM_PNO_SCAN_STARTED = 719;
+ ATOM_PNO_SCAN_STOPPED = 720;
+ ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+ ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+ ATOM_SOFT_AP_STATE_CHANGED = 805;
+ ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
ATOM_WIFI_AWARE_CAPABILITIES = 10190;
ATOM_WIFI_MODULE_INFO = 10193;
- ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_WIFI_SETTING_INFO = 10194;
+ ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+ ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
+ ATOM_MTE_STATE = 10181;
+ ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+ ATOM_SANDBOX_API_CALLED = 488;
+ ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+ ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+ ATOM_SANDBOX_SDK_STORAGE = 10159;
ATOM_EXPRESS_EVENT_REPORTED = 528;
ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
- ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
- ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
- ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
- ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
- ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
- ATOM_WS_CALL_DURATION_REPORTED = 628;
- ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
- ATOM_WS_CALL_INTERACTION_REPORTED = 630;
- ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
- ATOM_BAL_ALLOWED = 632;
- ATOM_IN_TASK_ACTIVITY_STARTED = 685;
- ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
- ATOM_ODREFRESH_REPORTED = 366;
- ATOM_ODSIGN_REPORTED = 548;
- ATOM_ART_DATUM_REPORTED = 332;
- ATOM_ART_DEVICE_DATUM_REPORTED = 550;
- ATOM_ART_DATUM_DELTA_REPORTED = 565;
- ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
- ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
- ATOM_EMERGENCY_STATE_CHANGED = 633;
- ATOM_DND_STATE_CHANGED = 657;
- ATOM_MTE_STATE = 10181;
+ ATOM_IKE_SESSION_TERMINATED = 678;
+ ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+ ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+ ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+ ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+ ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+ ATOM_DEVICE_POLICY_STATE = 10217;
+ ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+ ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+ ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+ ATOM_MEDIA_CODEC_STARTED = 641;
+ ATOM_MEDIA_CODEC_STOPPED = 642;
+ ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+ ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+ ATOM_PLUGIN_INITIALIZED = 655;
+ ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+ ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+ ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+ ATOM_THERMAL_STATUS_CALLED = 772;
+ ATOM_THERMAL_HEADROOM_CALLED = 773;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
+ ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
+ ATOM_ADPF_SESSION_SNAPSHOT = 10218;
+ ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+ ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+ ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+ ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+ ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+ ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+ ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+ ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+ ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+ ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+ ATOM_LE_RADIO_SCAN_STOPPED = 871;
+ ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+ ATOM_LE_SCAN_ABUSED = 873;
+ ATOM_LE_ADV_STATE_CHANGED = 874;
+ ATOM_LE_ADV_ERROR_REPORTED = 875;
+ ATOM_A2DP_SESSION_REPORTED = 904;
+ ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+ ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+ ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+ ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+ ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+ ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+ ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+ ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+ ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+ ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+ ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+ ATOM_EMERGENCY_NUMBER_DIALED = 637;
+ ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
+ ATOM_AD_SERVICES_API_CALLED = 435;
+ ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
+ ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
+ ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
+ ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
+ ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
+ ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
+ ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
+ ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
+ ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
+ ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
+ ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED = 598;
ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 599;
ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS = 640;
@@ -2789,68 +3011,68 @@
ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION = 674;
ATOM_AD_SERVICES_MEASUREMENT_JOBS = 675;
ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT = 676;
+ ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS = 695;
+ ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED = 697;
+ ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED = 698;
+ ATOM_AD_SERVICES_ENROLLMENT_MATCHED = 699;
ATOM_AD_SERVICES_CONSENT_MIGRATED = 702;
- ATOM_RKPD_POOL_STATS = 664;
- ATOM_RKPD_CLIENT_OPERATION = 665;
- ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
- ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
- ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
- ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
- ATOM_AUTOFILL_SESSION_COMMITTED = 607;
- ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_AD_SERVICES_ENROLLMENT_FAILED = 714;
+ ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION = 756;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED = 765;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED = 766;
+ ATOM_DESTINATION_REGISTERED_BEACONS = 767;
+ ATOM_REPORT_INTERACTION_API_CALLED = 768;
+ ATOM_INTERACTION_REPORTING_TABLE_CLEARED = 769;
+ ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED = 788;
+ ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED = 793;
+ ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED = 794;
+ ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED = 795;
+ ATOM_SIGNATURE_VERIFICATION = 807;
+ ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED = 808;
+ ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED = 809;
+ ATOM_K_ANON_INITIALIZE_STATUS_REPORTED = 810;
+ ATOM_K_ANON_SIGN_STATUS_REPORTED = 811;
+ ATOM_K_ANON_JOIN_STATUS_REPORTED = 812;
+ ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED = 813;
+ ATOM_GET_AD_SELECTION_DATA_API_CALLED = 814;
+ ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED = 815;
+ ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED = 834;
+ ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED = 840;
+ ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED = 841;
+ ATOM_ADSERVICES_SHELL_COMMAND_CALLED = 842;
+ ATOM_UPDATE_SIGNALS_API_CALLED = 843;
+ ATOM_ENCODING_JOB_RUN = 844;
+ ATOM_ENCODING_JS_FETCH = 845;
+ ATOM_ENCODING_JS_EXECUTION = 846;
+ ATOM_PERSIST_AD_SELECTION_RESULT_CALLED = 847;
+ ATOM_SERVER_AUCTION_KEY_FETCH_CALLED = 848;
+ ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED = 849;
+ ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION = 864;
+ ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP = 865;
+ ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
+ ATOM_REPORT_IMPRESSION_API_CALLED = 877;
+ ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
+ ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
+ ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
- ATOM_PLUGIN_INITIALIZED = 655;
- ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+ ATOM_NFC_FIELD_CHANGED = 856;
+ ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+ ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
- ATOM_EMERGENCY_NUMBERS_INFO = 10180;
- ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
- ATOM_QNS_IMS_CALL_DROP_STATS = 635;
- ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
- ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
- ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
- ATOM_QNS_HANDOVER_PINGPONG = 10179;
- ATOM_SATELLITE_CONTROLLER = 10182;
- ATOM_SATELLITE_SESSION = 10183;
- ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
- ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
- ATOM_SATELLITE_PROVISION = 10186;
- ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
- ATOM_IKE_SESSION_TERMINATED = 678;
- ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
- ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
- ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
- ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
- ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
- ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
- ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
- ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
- ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
- ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
- ATOM_HEALTH_CONNECT_API_CALLED = 616;
- ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
- ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
- ATOM_HEALTH_CONNECT_API_INVOKED = 643;
- ATOM_EXERCISE_ROUTE_API_CALLED = 654;
- ATOM_ATOM_9999 = 9999;
- ATOM_ATOM_99999 = 99999;
- ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
- ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
- ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
- ATOM_EMERGENCY_NUMBER_DIALED = 637;
- ATOM_SANDBOX_API_CALLED = 488;
- ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
- ATOM_SANDBOX_SDK_STORAGE = 10159;
- ATOM_CRONET_ENGINE_CREATED = 703;
- ATOM_CRONET_TRAFFIC_REPORTED = 704;
- ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
- ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
- ATOM_CRONET_INITIALIZED = 764;
- ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
- ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
- ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+ ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+ ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+ ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+ ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+ ATOM_APEX_INSTALLATION_REQUESTED = 732;
+ ATOM_APEX_INSTALLATION_STAGED = 733;
+ ATOM_APEX_INSTALLATION_ENDED = 734;
ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -2861,12 +3083,7 @@
ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
ATOM_UWB_ACTIVITY_INFO = 10188;
- ATOM_MEDIA_ACTION_REPORTED = 608;
- ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
- ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
- ATOM_MEDIA_CODEC_STARTED = 641;
- ATOM_MEDIA_CODEC_STOPPED = 642;
- ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_DND_STATE_CHANGED = 657;
}
// End of protos/perfetto/config/statsd/atom_ids.proto
diff --git a/protos/perfetto/config/statsd/atom_ids.proto b/protos/perfetto/config/statsd/atom_ids.proto
index c436571..0d0af24 100644
--- a/protos/perfetto/config/statsd/atom_ids.proto
+++ b/protos/perfetto/config/statsd/atom_ids.proto
@@ -75,11 +75,9 @@
ATOM_LMK_KILL_OCCURRED = 51;
ATOM_PICTURE_IN_PICTURE_STATE_CHANGED = 52;
ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED = 53;
- ATOM_LMK_STATE_CHANGED = 54;
ATOM_APP_START_MEMORY_STATE_CAPTURED = 55;
ATOM_SHUTDOWN_SEQUENCE_REPORTED = 56;
ATOM_BOOT_SEQUENCE_REPORTED = 57;
- ATOM_DAVEY_OCCURRED = 58;
ATOM_OVERLAY_STATE_CHANGED = 59;
ATOM_FOREGROUND_SERVICE_STATE_CHANGED = 60;
ATOM_CALL_STATE_CHANGED = 61;
@@ -396,7 +394,6 @@
ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION = 382;
ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED = 383;
ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT = 384;
- ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
ATOM_APP_COMPAT_STATE_CHANGED = 386;
ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED = 387;
ATOM_SPLITSCREEN_UI_CHANGED = 388;
@@ -445,8 +442,6 @@
ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED = 432;
ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED = 433;
ATOM_HOTWORD_DETECTOR_EVENTS = 434;
- ATOM_AD_SERVICES_API_CALLED = 435;
- ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED = 437;
ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED = 440;
ATOM_APP_BACKGROUND_RESTRICTIONS_INFO = 441;
@@ -490,25 +485,14 @@
ATOM_CB_MODULE_ERROR_REPORTED = 480;
ATOM_CB_SERVICE_FEATURE_CHANGED = 481;
ATOM_CB_RECEIVER_FEATURE_CHANGED = 482;
- ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION = 484;
ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION = 485;
ATOM_PRIVACY_SIGNALS_JOB_FAILURE = 486;
ATOM_VIBRATION_REPORTED = 487;
ATOM_UWB_RANGING_START = 489;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
ATOM_APP_COMPACTED_V2 = 491;
- ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
ATOM_DISPLAY_BRIGHTNESS_CHANGED = 494;
ATOM_ACTIVITY_ACTION_BLOCKED = 495;
- ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
- ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
- ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
- ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
- ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
- ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
- ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED = 504;
ATOM_VM_BOOTED = 505;
ATOM_VM_EXITED = 506;
@@ -517,7 +501,6 @@
ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED = 509;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED = 510;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED = 511;
- ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
ATOM_HEARING_AID_INFO_REPORTED = 513;
ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED = 514;
ATOM_AMBIENT_MODE_CHANGED = 515;
@@ -539,9 +522,6 @@
ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED = 532;
ATOM_BLUETOOTH_GATT_APP_INFO = 533;
ATOM_BRIGHTNESS_CONFIGURATION_UPDATED = 534;
- ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED = 538;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED = 539;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED = 540;
@@ -579,12 +559,10 @@
ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED = 576;
ATOM_BIOMETRIC_TOUCH_REPORTED = 577;
ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED = 578;
- ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
ATOM_LOCATION_ENABLED_STATE_CHANGED = 580;
ATOM_IME_REQUEST_FINISHED = 581;
ATOM_USB_COMPLIANCE_WARNINGS_REPORTED = 582;
ATOM_APP_SUPPORTED_LOCALES_CHANGED = 583;
- ATOM_GRAMMATICAL_INFLECTION_CHANGED = 584;
ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED = 586;
ATOM_BIOMETRIC_PROPERTIES_COLLECTED = 587;
ATOM_KERNEL_WAKEUP_ATTRIBUTED = 588;
@@ -597,7 +575,11 @@
ATOM_WS_NOTIFICATION_UPDATED = 596;
ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED = 601;
ATOM_WS_COMPLICATION_TAPPED = 602;
- ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_NOTIFICATION_BLOCKING = 780;
+ ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED = 822;
+ ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED = 823;
+ ATOM_WS_NOTIFICATION_ACTIONED = 824;
+ ATOM_WS_NOTIFICATION_LATENCY = 880;
ATOM_WIFI_BYTES_TRANSFER = 10000;
ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG = 10001;
ATOM_MOBILE_BYTES_TRANSFER = 10002;
@@ -770,6 +752,186 @@
ATOM_NOTIFICATION_MEMORY_USE = 10174;
ATOM_HDR_CAPABILITIES = 10175;
ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
+ ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+ ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+ ATOM_WS_CALL_DURATION_REPORTED = 628;
+ ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+ ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+ ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+ ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+ ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+ ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+ ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+ ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+ ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_PDF_LOAD_REPORTED = 859;
+ ATOM_PDF_API_USAGE_REPORTED = 860;
+ ATOM_PDF_SEARCH_REPORTED = 861;
+ ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+ ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+ ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+ ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+ ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+ ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+ ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+ ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+ ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+ ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+ ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+ ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+ ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+ ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+ ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+ ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+ ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+ ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+ ATOM_WEAR_POWER_MENU_OPENED = 731;
+ ATOM_WEAR_ASSISTANT_OPENED = 755;
+ ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+ ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+ ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+ ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+ ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+ ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+ ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+ ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+ ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+ ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+ ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+ ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+ ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
+ ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+ ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+ ATOM_VPN_CONNECTION_REPORTED = 851;
+ ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+ ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+ ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+ ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+ ATOM_ART_DATUM_REPORTED = 332;
+ ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+ ATOM_ART_DATUM_DELTA_REPORTED = 565;
+ ATOM_ART_DEX2OAT_REPORTED = 929;
+ ATOM_ART_DEVICE_STATUS = 10205;
+ ATOM_ODREFRESH_REPORTED = 366;
+ ATOM_ODSIGN_REPORTED = 548;
+ ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+ ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+ ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+ ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+ ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+ ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+ ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+ ATOM_EMERGENCY_STATE_CHANGED = 633;
+ ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+ ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+ ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+ ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+ ATOM_HEALTH_CONNECT_API_CALLED = 616;
+ ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+ ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+ ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+ ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+ ATOM_SELINUX_AUDIT_LOG = 799;
+ ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+ ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+ ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+ ATOM_DATA_NETWORK_VALIDATION = 10207;
+ ATOM_DATA_RAT_STATE_CHANGED = 854;
+ ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+ ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+ ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+ ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+ ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+ ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+ ATOM_QNS_HANDOVER_PINGPONG = 10179;
+ ATOM_SATELLITE_CONTROLLER = 10182;
+ ATOM_SATELLITE_SESSION = 10183;
+ ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+ ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+ ATOM_SATELLITE_PROVISION = 10186;
+ ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+ ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+ ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+ ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+ ATOM_SATELLITE_ENTITLEMENT = 10214;
+ ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+ ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+ ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+ ATOM_KEYBOARD_CONFIGURED = 682;
+ ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+ ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+ ATOM_TOUCHPAD_USAGE = 10191;
+ ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+ ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+ ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+ ATOM_CRONET_ENGINE_CREATED = 703;
+ ATOM_CRONET_TRAFFIC_REPORTED = 704;
+ ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+ ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+ ATOM_CRONET_INITIALIZED = 764;
+ ATOM_WEAR_MODE_STATE_CHANGED = 715;
+ ATOM_RENDERER_INITIALIZED = 736;
+ ATOM_SCHEMA_VERSION_RECEIVED = 737;
+ ATOM_LAYOUT_INSPECTED = 741;
+ ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+ ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+ ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+ ATOM_TILE_REQUESTED = 745;
+ ATOM_STATE_RESPONSE_RECEIVED = 746;
+ ATOM_TILE_RESPONSE_RECEIVED = 747;
+ ATOM_INFLATION_FINISHED = 748;
+ ATOM_INFLATION_FAILED = 749;
+ ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+ ATOM_DRAWABLE_RENDERED = 751;
+ ATOM_MEDIA_ACTION_REPORTED = 608;
+ ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+ ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+ ATOM_MEDIATOR_UPDATED = 721;
+ ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+ ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+ ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
+ ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+ ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+ ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+ ATOM_RKPD_POOL_STATS = 664;
+ ATOM_RKPD_CLIENT_OPERATION = 665;
+ ATOM_CPU_POLICY = 10199;
+ ATOM_ATOM_9999 = 9999;
+ ATOM_ATOM_99999 = 99999;
+ ATOM_SCREEN_OFF_REPORTED = 776;
+ ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+ ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+ ATOM_SCREEN_DIM_REPORTED = 867;
+ ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+ ATOM_BAL_ALLOWED = 632;
+ ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+ ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+ ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+ ATOM_USER_RISK_EVENT_REPORTED = 725;
+ ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+ ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+ ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+ ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+ ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+ ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+ ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+ ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+ ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+ ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+ ATOM_DREAM_SETTING_CHANGED = 705;
+ ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+ ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
ATOM_WIFI_AWARE_NDP_REPORTED = 638;
ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
@@ -784,39 +946,99 @@
ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
ATOM_WIFI_STATE_CHANGED = 700;
+ ATOM_PNO_SCAN_STARTED = 719;
+ ATOM_PNO_SCAN_STOPPED = 720;
+ ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+ ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+ ATOM_SOFT_AP_STATE_CHANGED = 805;
+ ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
ATOM_WIFI_AWARE_CAPABILITIES = 10190;
ATOM_WIFI_MODULE_INFO = 10193;
- ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_WIFI_SETTING_INFO = 10194;
+ ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+ ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
+ ATOM_MTE_STATE = 10181;
+ ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+ ATOM_SANDBOX_API_CALLED = 488;
+ ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+ ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+ ATOM_SANDBOX_SDK_STORAGE = 10159;
ATOM_EXPRESS_EVENT_REPORTED = 528;
ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
- ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
- ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
- ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
- ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
- ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
- ATOM_WS_CALL_DURATION_REPORTED = 628;
- ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
- ATOM_WS_CALL_INTERACTION_REPORTED = 630;
- ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
- ATOM_BAL_ALLOWED = 632;
- ATOM_IN_TASK_ACTIVITY_STARTED = 685;
- ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
- ATOM_ODREFRESH_REPORTED = 366;
- ATOM_ODSIGN_REPORTED = 548;
- ATOM_ART_DATUM_REPORTED = 332;
- ATOM_ART_DEVICE_DATUM_REPORTED = 550;
- ATOM_ART_DATUM_DELTA_REPORTED = 565;
- ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
- ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
- ATOM_EMERGENCY_STATE_CHANGED = 633;
- ATOM_DND_STATE_CHANGED = 657;
- ATOM_MTE_STATE = 10181;
+ ATOM_IKE_SESSION_TERMINATED = 678;
+ ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+ ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+ ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+ ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+ ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+ ATOM_DEVICE_POLICY_STATE = 10217;
+ ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+ ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+ ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+ ATOM_MEDIA_CODEC_STARTED = 641;
+ ATOM_MEDIA_CODEC_STOPPED = 642;
+ ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+ ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+ ATOM_PLUGIN_INITIALIZED = 655;
+ ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+ ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+ ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+ ATOM_THERMAL_STATUS_CALLED = 772;
+ ATOM_THERMAL_HEADROOM_CALLED = 773;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
+ ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
+ ATOM_ADPF_SESSION_SNAPSHOT = 10218;
+ ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+ ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+ ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+ ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+ ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+ ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+ ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+ ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+ ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+ ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+ ATOM_LE_RADIO_SCAN_STOPPED = 871;
+ ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+ ATOM_LE_SCAN_ABUSED = 873;
+ ATOM_LE_ADV_STATE_CHANGED = 874;
+ ATOM_LE_ADV_ERROR_REPORTED = 875;
+ ATOM_A2DP_SESSION_REPORTED = 904;
+ ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+ ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+ ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+ ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+ ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+ ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+ ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+ ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+ ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+ ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+ ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+ ATOM_EMERGENCY_NUMBER_DIALED = 637;
+ ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
+ ATOM_AD_SERVICES_API_CALLED = 435;
+ ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
+ ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
+ ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
+ ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
+ ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
+ ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
+ ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
+ ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
+ ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
+ ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
+ ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED = 598;
ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 599;
ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS = 640;
@@ -826,68 +1048,68 @@
ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION = 674;
ATOM_AD_SERVICES_MEASUREMENT_JOBS = 675;
ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT = 676;
+ ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS = 695;
+ ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED = 697;
+ ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED = 698;
+ ATOM_AD_SERVICES_ENROLLMENT_MATCHED = 699;
ATOM_AD_SERVICES_CONSENT_MIGRATED = 702;
- ATOM_RKPD_POOL_STATS = 664;
- ATOM_RKPD_CLIENT_OPERATION = 665;
- ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
- ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
- ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
- ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
- ATOM_AUTOFILL_SESSION_COMMITTED = 607;
- ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_AD_SERVICES_ENROLLMENT_FAILED = 714;
+ ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION = 756;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED = 765;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED = 766;
+ ATOM_DESTINATION_REGISTERED_BEACONS = 767;
+ ATOM_REPORT_INTERACTION_API_CALLED = 768;
+ ATOM_INTERACTION_REPORTING_TABLE_CLEARED = 769;
+ ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED = 788;
+ ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED = 793;
+ ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED = 794;
+ ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED = 795;
+ ATOM_SIGNATURE_VERIFICATION = 807;
+ ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED = 808;
+ ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED = 809;
+ ATOM_K_ANON_INITIALIZE_STATUS_REPORTED = 810;
+ ATOM_K_ANON_SIGN_STATUS_REPORTED = 811;
+ ATOM_K_ANON_JOIN_STATUS_REPORTED = 812;
+ ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED = 813;
+ ATOM_GET_AD_SELECTION_DATA_API_CALLED = 814;
+ ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED = 815;
+ ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED = 834;
+ ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED = 840;
+ ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED = 841;
+ ATOM_ADSERVICES_SHELL_COMMAND_CALLED = 842;
+ ATOM_UPDATE_SIGNALS_API_CALLED = 843;
+ ATOM_ENCODING_JOB_RUN = 844;
+ ATOM_ENCODING_JS_FETCH = 845;
+ ATOM_ENCODING_JS_EXECUTION = 846;
+ ATOM_PERSIST_AD_SELECTION_RESULT_CALLED = 847;
+ ATOM_SERVER_AUCTION_KEY_FETCH_CALLED = 848;
+ ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED = 849;
+ ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION = 864;
+ ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP = 865;
+ ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
+ ATOM_REPORT_IMPRESSION_API_CALLED = 877;
+ ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
+ ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
+ ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
- ATOM_PLUGIN_INITIALIZED = 655;
- ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+ ATOM_NFC_FIELD_CHANGED = 856;
+ ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+ ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
- ATOM_EMERGENCY_NUMBERS_INFO = 10180;
- ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
- ATOM_QNS_IMS_CALL_DROP_STATS = 635;
- ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
- ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
- ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
- ATOM_QNS_HANDOVER_PINGPONG = 10179;
- ATOM_SATELLITE_CONTROLLER = 10182;
- ATOM_SATELLITE_SESSION = 10183;
- ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
- ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
- ATOM_SATELLITE_PROVISION = 10186;
- ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
- ATOM_IKE_SESSION_TERMINATED = 678;
- ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
- ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
- ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
- ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
- ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
- ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
- ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
- ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
- ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
- ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
- ATOM_HEALTH_CONNECT_API_CALLED = 616;
- ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
- ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
- ATOM_HEALTH_CONNECT_API_INVOKED = 643;
- ATOM_EXERCISE_ROUTE_API_CALLED = 654;
- ATOM_ATOM_9999 = 9999;
- ATOM_ATOM_99999 = 99999;
- ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
- ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
- ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
- ATOM_EMERGENCY_NUMBER_DIALED = 637;
- ATOM_SANDBOX_API_CALLED = 488;
- ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
- ATOM_SANDBOX_SDK_STORAGE = 10159;
- ATOM_CRONET_ENGINE_CREATED = 703;
- ATOM_CRONET_TRAFFIC_REPORTED = 704;
- ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
- ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
- ATOM_CRONET_INITIALIZED = 764;
- ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
- ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
- ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+ ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+ ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+ ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+ ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+ ATOM_APEX_INSTALLATION_REQUESTED = 732;
+ ATOM_APEX_INSTALLATION_STAGED = 733;
+ ATOM_APEX_INSTALLATION_ENDED = 734;
ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -898,10 +1120,5 @@
ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
ATOM_UWB_ACTIVITY_INFO = 10188;
- ATOM_MEDIA_ACTION_REPORTED = 608;
- ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
- ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
- ATOM_MEDIA_CODEC_STARTED = 641;
- ATOM_MEDIA_CODEC_STOPPED = 642;
- ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_DND_STATE_CHANGED = 657;
}
\ No newline at end of file
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 6177004..af762a7 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -2038,11 +2038,9 @@
ATOM_LMK_KILL_OCCURRED = 51;
ATOM_PICTURE_IN_PICTURE_STATE_CHANGED = 52;
ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED = 53;
- ATOM_LMK_STATE_CHANGED = 54;
ATOM_APP_START_MEMORY_STATE_CAPTURED = 55;
ATOM_SHUTDOWN_SEQUENCE_REPORTED = 56;
ATOM_BOOT_SEQUENCE_REPORTED = 57;
- ATOM_DAVEY_OCCURRED = 58;
ATOM_OVERLAY_STATE_CHANGED = 59;
ATOM_FOREGROUND_SERVICE_STATE_CHANGED = 60;
ATOM_CALL_STATE_CHANGED = 61;
@@ -2359,7 +2357,6 @@
ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION = 382;
ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED = 383;
ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT = 384;
- ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
ATOM_APP_COMPAT_STATE_CHANGED = 386;
ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED = 387;
ATOM_SPLITSCREEN_UI_CHANGED = 388;
@@ -2408,8 +2405,6 @@
ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED = 432;
ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED = 433;
ATOM_HOTWORD_DETECTOR_EVENTS = 434;
- ATOM_AD_SERVICES_API_CALLED = 435;
- ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED = 437;
ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED = 440;
ATOM_APP_BACKGROUND_RESTRICTIONS_INFO = 441;
@@ -2453,25 +2448,14 @@
ATOM_CB_MODULE_ERROR_REPORTED = 480;
ATOM_CB_SERVICE_FEATURE_CHANGED = 481;
ATOM_CB_RECEIVER_FEATURE_CHANGED = 482;
- ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION = 484;
ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION = 485;
ATOM_PRIVACY_SIGNALS_JOB_FAILURE = 486;
ATOM_VIBRATION_REPORTED = 487;
ATOM_UWB_RANGING_START = 489;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
ATOM_APP_COMPACTED_V2 = 491;
- ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
ATOM_DISPLAY_BRIGHTNESS_CHANGED = 494;
ATOM_ACTIVITY_ACTION_BLOCKED = 495;
- ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
- ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
- ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
- ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
- ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
- ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
- ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
- ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED = 504;
ATOM_VM_BOOTED = 505;
ATOM_VM_EXITED = 506;
@@ -2480,7 +2464,6 @@
ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED = 509;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED = 510;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED = 511;
- ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
ATOM_HEARING_AID_INFO_REPORTED = 513;
ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED = 514;
ATOM_AMBIENT_MODE_CHANGED = 515;
@@ -2502,9 +2485,6 @@
ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED = 532;
ATOM_BLUETOOTH_GATT_APP_INFO = 533;
ATOM_BRIGHTNESS_CONFIGURATION_UPDATED = 534;
- ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
- ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED = 538;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED = 539;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED = 540;
@@ -2542,12 +2522,10 @@
ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED = 576;
ATOM_BIOMETRIC_TOUCH_REPORTED = 577;
ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED = 578;
- ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
ATOM_LOCATION_ENABLED_STATE_CHANGED = 580;
ATOM_IME_REQUEST_FINISHED = 581;
ATOM_USB_COMPLIANCE_WARNINGS_REPORTED = 582;
ATOM_APP_SUPPORTED_LOCALES_CHANGED = 583;
- ATOM_GRAMMATICAL_INFLECTION_CHANGED = 584;
ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED = 586;
ATOM_BIOMETRIC_PROPERTIES_COLLECTED = 587;
ATOM_KERNEL_WAKEUP_ATTRIBUTED = 588;
@@ -2560,7 +2538,11 @@
ATOM_WS_NOTIFICATION_UPDATED = 596;
ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED = 601;
ATOM_WS_COMPLICATION_TAPPED = 602;
- ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_NOTIFICATION_BLOCKING = 780;
+ ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED = 822;
+ ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED = 823;
+ ATOM_WS_NOTIFICATION_ACTIONED = 824;
+ ATOM_WS_NOTIFICATION_LATENCY = 880;
ATOM_WIFI_BYTES_TRANSFER = 10000;
ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG = 10001;
ATOM_MOBILE_BYTES_TRANSFER = 10002;
@@ -2733,6 +2715,186 @@
ATOM_NOTIFICATION_MEMORY_USE = 10174;
ATOM_HDR_CAPABILITIES = 10175;
ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
+ ATOM_WS_WEAR_TIME_SESSION = 610;
+ ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
+ ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
+ ATOM_WS_CALL_DURATION_REPORTED = 628;
+ ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
+ ATOM_WS_CALL_INTERACTION_REPORTED = 630;
+ ATOM_WS_ON_BODY_STATE_CHANGED = 787;
+ ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED = 802;
+ ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED = 803;
+ ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED = 804;
+ ATOM_WS_STANDALONE_MODE_SNAPSHOT = 10197;
+ ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT = 10206;
+ ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_PDF_LOAD_REPORTED = 859;
+ ATOM_PDF_API_USAGE_REPORTED = 860;
+ ATOM_PDF_SEARCH_REPORTED = 861;
+ ATOM_HDMI_EARC_STATUS_REPORTED = 701;
+ ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED = 724;
+ ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED = 784;
+ ATOM_BACKUP_SETUP_STATUS_REPORTED = 785;
+ ATOM_PHOTOPICKER_SESSION_INFO_REPORTED = 886;
+ ATOM_PHOTOPICKER_API_INFO_REPORTED = 887;
+ ATOM_PHOTOPICKER_UI_EVENT_LOGGED = 888;
+ ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED = 889;
+ ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED = 890;
+ ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED = 891;
+ ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED = 892;
+ ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED = 893;
+ ATOM_PHOTOPICKER_PAGE_INFO_LOGGED = 894;
+ ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED = 895;
+ ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED = 896;
+ ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED = 897;
+ ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED = 898;
+ ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED = 899;
+ ATOM_WEAR_POWER_MENU_OPENED = 731;
+ ATOM_WEAR_ASSISTANT_OPENED = 755;
+ ATOM_KERNEL_OOM_KILL_OCCURRED = 754;
+ ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
+ ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
+ ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
+ ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
+ ATOM_AUTOFILL_SESSION_COMMITTED = 607;
+ ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_EXTERNAL_TV_INPUT_EVENT = 717;
+ ATOM_COMPONENT_STATE_CHANGED_REPORTED = 863;
+ ATOM_AI_WALLPAPERS_BUTTON_PRESSED = 706;
+ ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED = 707;
+ ATOM_AI_WALLPAPERS_TERM_SELECTED = 708;
+ ATOM_AI_WALLPAPERS_WALLPAPER_SET = 709;
+ ATOM_AI_WALLPAPERS_SESSION_SUMMARY = 710;
+ ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
+ ATOM_VPN_CONNECTION_STATE_CHANGED = 850;
+ ATOM_VPN_CONNECTION_REPORTED = 851;
+ ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED = 783;
+ ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
+ ATOM_NETWORK_REQUEST_STATE_CHANGED = 779;
+ ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED = 925;
+ ATOM_ART_DATUM_REPORTED = 332;
+ ATOM_ART_DEVICE_DATUM_REPORTED = 550;
+ ATOM_ART_DATUM_DELTA_REPORTED = 565;
+ ATOM_ART_DEX2OAT_REPORTED = 929;
+ ATOM_ART_DEVICE_STATUS = 10205;
+ ATOM_ODREFRESH_REPORTED = 366;
+ ATOM_ODSIGN_REPORTED = 548;
+ ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
+ ATOM_PREREBOOT_DEXOPT_JOB_ENDED = 883;
+ ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
+ ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
+ ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
+ ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
+ ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED = 827;
+ ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED = 828;
+ ATOM_EMERGENCY_STATE_CHANGED = 633;
+ ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED = 868;
+ ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
+ ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
+ ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
+ ATOM_HEALTH_CONNECT_API_CALLED = 616;
+ ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
+ ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
+ ATOM_HEALTH_CONNECT_API_INVOKED = 643;
+ ATOM_EXERCISE_ROUTE_API_CALLED = 654;
+ ATOM_SELINUX_AUDIT_LOG = 799;
+ ATOM_ONDEVICEPERSONALIZATION_API_CALLED = 711;
+ ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED = 713;
+ ATOM_EMERGENCY_NUMBERS_INFO = 10180;
+ ATOM_DATA_NETWORK_VALIDATION = 10207;
+ ATOM_DATA_RAT_STATE_CHANGED = 854;
+ ATOM_CONNECTED_CHANNEL_CHANGED = 882;
+ ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
+ ATOM_QNS_IMS_CALL_DROP_STATS = 635;
+ ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
+ ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
+ ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
+ ATOM_QNS_HANDOVER_PINGPONG = 10179;
+ ATOM_SATELLITE_CONTROLLER = 10182;
+ ATOM_SATELLITE_SESSION = 10183;
+ ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
+ ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
+ ATOM_SATELLITE_PROVISION = 10186;
+ ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
+ ATOM_CARRIER_ROAMING_SATELLITE_SESSION = 10211;
+ ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS = 10212;
+ ATOM_CONTROLLER_STATS_PER_PACKAGE = 10213;
+ ATOM_SATELLITE_ENTITLEMENT = 10214;
+ ATOM_SATELLITE_CONFIG_UPDATER = 10215;
+ ATOM_SATELLITE_ACCESS_CONTROLLER = 10219;
+ ATOM_CELLULAR_IDENTIFIER_DISCLOSED = 800;
+ ATOM_KEYBOARD_CONFIGURED = 682;
+ ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED = 683;
+ ATOM_INPUTDEVICE_USAGE_REPORTED = 686;
+ ATOM_TOUCHPAD_USAGE = 10191;
+ ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
+ ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
+ ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
+ ATOM_CRONET_ENGINE_CREATED = 703;
+ ATOM_CRONET_TRAFFIC_REPORTED = 704;
+ ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
+ ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
+ ATOM_CRONET_INITIALIZED = 764;
+ ATOM_WEAR_MODE_STATE_CHANGED = 715;
+ ATOM_RENDERER_INITIALIZED = 736;
+ ATOM_SCHEMA_VERSION_RECEIVED = 737;
+ ATOM_LAYOUT_INSPECTED = 741;
+ ATOM_LAYOUT_EXPRESSION_INSPECTED = 742;
+ ATOM_LAYOUT_ANIMATIONS_INSPECTED = 743;
+ ATOM_MATERIAL_COMPONENTS_INSPECTED = 744;
+ ATOM_TILE_REQUESTED = 745;
+ ATOM_STATE_RESPONSE_RECEIVED = 746;
+ ATOM_TILE_RESPONSE_RECEIVED = 747;
+ ATOM_INFLATION_FINISHED = 748;
+ ATOM_INFLATION_FAILED = 749;
+ ATOM_IGNORED_INFLATION_FAILURES_REPORTED = 750;
+ ATOM_DRAWABLE_RENDERED = 751;
+ ATOM_MEDIA_ACTION_REPORTED = 608;
+ ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
+ ATOM_MEDIA_SESSION_STATE_CHANGED = 677;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY = 757;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE = 758;
+ ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT = 759;
+ ATOM_MEDIATOR_UPDATED = 721;
+ ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER = 10196;
+ ATOM_SYSPROXY_CONNECTION_UPDATED = 786;
+ ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED = 820;
+ ATOM_FEDERATED_COMPUTE_API_CALLED = 712;
+ ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED = 771;
+ ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED = 838;
+ ATOM_RKPD_POOL_STATS = 664;
+ ATOM_RKPD_CLIENT_OPERATION = 665;
+ ATOM_CPU_POLICY = 10199;
+ ATOM_ATOM_9999 = 9999;
+ ATOM_ATOM_99999 = 99999;
+ ATOM_SCREEN_OFF_REPORTED = 776;
+ ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED = 836;
+ ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED = 837;
+ ATOM_SCREEN_DIM_REPORTED = 867;
+ ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
+ ATOM_BAL_ALLOWED = 632;
+ ATOM_IN_TASK_ACTIVITY_STARTED = 685;
+ ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
+ ATOM_STYLUS_PREDICTION_METRICS_REPORTED = 718;
+ ATOM_USER_RISK_EVENT_REPORTED = 725;
+ ATOM_MEDIA_PROJECTION_STATE_CHANGED = 729;
+ ATOM_MEDIA_PROJECTION_TARGET_CHANGED = 730;
+ ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED = 853;
+ ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG = 10200;
+ ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE = 10204;
+ ATOM_BIOMETRIC_FRR_NOTIFICATION = 817;
+ ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION = 830;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION = 831;
+ ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED = 832;
+ ATOM_SENSITIVE_NOTIFICATION_REDACTION = 833;
+ ATOM_SENSITIVE_CONTENT_APP_PROTECTION = 835;
+ ATOM_APP_RESTRICTION_STATE_CHANGED = 866;
+ ATOM_DREAM_SETTING_CHANGED = 705;
+ ATOM_DREAM_SETTING_SNAPSHOT = 10192;
+ ATOM_BOOT_INTEGRITY_INFO_REPORTED = 775;
ATOM_WIFI_AWARE_NDP_REPORTED = 638;
ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
@@ -2747,39 +2909,99 @@
ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
ATOM_WIFI_STATE_CHANGED = 700;
+ ATOM_PNO_SCAN_STARTED = 719;
+ ATOM_PNO_SCAN_STOPPED = 720;
+ ATOM_WIFI_IS_UNUSABLE_REPORTED = 722;
+ ATOM_WIFI_AP_CAPABILITIES_REPORTED = 723;
+ ATOM_SOFT_AP_STATE_CHANGED = 805;
+ ATOM_SCORER_PREDICTION_RESULT_REPORTED = 884;
ATOM_WIFI_AWARE_CAPABILITIES = 10190;
ATOM_WIFI_MODULE_INFO = 10193;
- ATOM_SETTINGS_SPA_REPORTED = 622;
+ ATOM_WIFI_SETTING_INFO = 10194;
+ ATOM_WIFI_COMPLEX_SETTING_INFO = 10195;
+ ATOM_WIFI_CONFIGURED_NETWORK_INFO = 10198;
+ ATOM_MTE_STATE = 10181;
+ ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED = 761;
+ ATOM_SANDBOX_API_CALLED = 488;
+ ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
+ ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION = 796;
+ ATOM_SANDBOX_SDK_STORAGE = 10159;
ATOM_EXPRESS_EVENT_REPORTED = 528;
ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
- ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
- ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
- ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
- ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
- ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
- ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
- ATOM_WS_CALL_DURATION_REPORTED = 628;
- ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
- ATOM_WS_CALL_INTERACTION_REPORTED = 630;
- ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
- ATOM_BAL_ALLOWED = 632;
- ATOM_IN_TASK_ACTIVITY_STARTED = 685;
- ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
- ATOM_ODREFRESH_REPORTED = 366;
- ATOM_ODSIGN_REPORTED = 548;
- ATOM_ART_DATUM_REPORTED = 332;
- ATOM_ART_DEVICE_DATUM_REPORTED = 550;
- ATOM_ART_DATUM_DELTA_REPORTED = 565;
- ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
- ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
- ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
- ATOM_EMERGENCY_STATE_CHANGED = 633;
- ATOM_DND_STATE_CHANGED = 657;
- ATOM_MTE_STATE = 10181;
+ ATOM_IKE_SESSION_TERMINATED = 678;
+ ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
+ ATOM_NEGOTIATED_SECURITY_ASSOCIATION = 821;
+ ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
+ ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED = 825;
+ ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED = 826;
+ ATOM_DEVICE_POLICY_MANAGEMENT_MODE = 10216;
+ ATOM_DEVICE_POLICY_STATE = 10217;
+ ATOM_DESKTOP_MODE_UI_CHANGED = 818;
+ ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE = 819;
+ ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
+ ATOM_MEDIA_CODEC_STARTED = 641;
+ ATOM_MEDIA_CODEC_STOPPED = 642;
+ ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_MEDIA_EDITING_ENDED_REPORTED = 798;
+ ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED = 852;
+ ATOM_PLUGIN_INITIALIZED = 655;
+ ATOM_CAR_RECENTS_EVENT_REPORTED = 770;
+ ATOM_CAR_CALM_MODE_EVENT_REPORTED = 797;
+ ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT = 900;
+ ATOM_THERMAL_STATUS_CALLED = 772;
+ ATOM_THERMAL_HEADROOM_CALLED = 773;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED = 774;
+ ATOM_ADPF_HINT_SESSION_TID_CLEANUP = 839;
+ ATOM_THERMAL_HEADROOM_THRESHOLDS = 10201;
+ ATOM_ADPF_SESSION_SNAPSHOT = 10218;
+ ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
+ ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
+ ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
+ ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
+ ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
+ ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
+ ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED = 781;
+ ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED = 782;
+ ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID = 862;
+ ATOM_LE_APP_SCAN_STATE_CHANGED = 870;
+ ATOM_LE_RADIO_SCAN_STOPPED = 871;
+ ATOM_LE_SCAN_RESULT_RECEIVED = 872;
+ ATOM_LE_SCAN_ABUSED = 873;
+ ATOM_LE_ADV_STATE_CHANGED = 874;
+ ATOM_LE_ADV_ERROR_REPORTED = 875;
+ ATOM_A2DP_SESSION_REPORTED = 904;
+ ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED = 916;
+ ATOM_BROADCAST_AUDIO_SESSION_REPORTED = 927;
+ ATOM_BROADCAST_AUDIO_SYNC_REPORTED = 928;
+ ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED = 726;
+ ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED = 727;
+ ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED = 728;
+ ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED = 789;
+ ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED = 790;
+ ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED = 791;
+ ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED = 584;
+ ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED = 816;
+ ATOM_EMERGENCY_NUMBER_DIALED = 637;
+ ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
+ ATOM_AD_SERVICES_API_CALLED = 435;
+ ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
+ ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
+ ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
+ ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
+ ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
+ ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
+ ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
+ ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
+ ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
+ ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
+ ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
+ ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
+ ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED = 598;
ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 599;
ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS = 640;
@@ -2789,68 +3011,68 @@
ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION = 674;
ATOM_AD_SERVICES_MEASUREMENT_JOBS = 675;
ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT = 676;
+ ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS = 695;
+ ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED = 697;
+ ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED = 698;
+ ATOM_AD_SERVICES_ENROLLMENT_MATCHED = 699;
ATOM_AD_SERVICES_CONSENT_MIGRATED = 702;
- ATOM_RKPD_POOL_STATS = 664;
- ATOM_RKPD_CLIENT_OPERATION = 665;
- ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
- ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
- ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
- ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
- ATOM_AUTOFILL_SESSION_COMMITTED = 607;
- ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
+ ATOM_AD_SERVICES_ENROLLMENT_FAILED = 714;
+ ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION = 756;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED = 765;
+ ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED = 766;
+ ATOM_DESTINATION_REGISTERED_BEACONS = 767;
+ ATOM_REPORT_INTERACTION_API_CALLED = 768;
+ ATOM_INTERACTION_REPORTING_TABLE_CLEARED = 769;
+ ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED = 788;
+ ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED = 793;
+ ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED = 794;
+ ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED = 795;
+ ATOM_SIGNATURE_VERIFICATION = 807;
+ ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED = 808;
+ ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED = 809;
+ ATOM_K_ANON_INITIALIZE_STATUS_REPORTED = 810;
+ ATOM_K_ANON_SIGN_STATUS_REPORTED = 811;
+ ATOM_K_ANON_JOIN_STATUS_REPORTED = 812;
+ ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED = 813;
+ ATOM_GET_AD_SELECTION_DATA_API_CALLED = 814;
+ ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED = 815;
+ ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED = 834;
+ ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED = 840;
+ ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED = 841;
+ ATOM_ADSERVICES_SHELL_COMMAND_CALLED = 842;
+ ATOM_UPDATE_SIGNALS_API_CALLED = 843;
+ ATOM_ENCODING_JOB_RUN = 844;
+ ATOM_ENCODING_JS_FETCH = 845;
+ ATOM_ENCODING_JS_EXECUTION = 846;
+ ATOM_PERSIST_AD_SELECTION_RESULT_CALLED = 847;
+ ATOM_SERVER_AUCTION_KEY_FETCH_CALLED = 848;
+ ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED = 849;
+ ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION = 864;
+ ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP = 865;
+ ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED = 876;
+ ATOM_REPORT_IMPRESSION_API_CALLED = 877;
+ ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS = 885;
+ ATOM_EXTERNAL_DISPLAY_STATE_CHANGED = 806;
+ ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED = 792;
ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
- ATOM_PLUGIN_INITIALIZED = 655;
- ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
+ ATOM_NFC_OBSERVE_MODE_STATE_CHANGED = 855;
+ ATOM_NFC_FIELD_CHANGED = 856;
+ ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED = 857;
+ ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED = 858;
ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
- ATOM_EMERGENCY_NUMBERS_INFO = 10180;
- ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
- ATOM_QNS_IMS_CALL_DROP_STATS = 635;
- ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
- ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
- ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
- ATOM_QNS_HANDOVER_PINGPONG = 10179;
- ATOM_SATELLITE_CONTROLLER = 10182;
- ATOM_SATELLITE_SESSION = 10183;
- ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
- ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
- ATOM_SATELLITE_PROVISION = 10186;
- ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
- ATOM_IKE_SESSION_TERMINATED = 678;
- ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
- ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
- ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
- ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
- ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
- ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
- ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
- ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
- ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
- ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
- ATOM_HEALTH_CONNECT_API_CALLED = 616;
- ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
- ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
- ATOM_HEALTH_CONNECT_API_INVOKED = 643;
- ATOM_EXERCISE_ROUTE_API_CALLED = 654;
- ATOM_ATOM_9999 = 9999;
- ATOM_ATOM_99999 = 99999;
- ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
- ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
- ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
- ATOM_EMERGENCY_NUMBER_DIALED = 637;
- ATOM_SANDBOX_API_CALLED = 488;
- ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
- ATOM_SANDBOX_SDK_STORAGE = 10159;
- ATOM_CRONET_ENGINE_CREATED = 703;
- ATOM_CRONET_TRAFFIC_REPORTED = 704;
- ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
- ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
- ATOM_CRONET_INITIALIZED = 764;
- ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
- ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
- ATOM_APF_SESSION_INFO_REPORTED = 777;
+ ATOM_LAUNCHER_IMPRESSION_EVENT_V2 = 716;
+ ATOM_DISPLAY_SWITCH_LATENCY_TRACKED = 753;
+ ATOM_NOTIFICATION_LISTENER_SERVICE = 829;
+ ATOM_NAV_HANDLE_TOUCH_POINTS = 869;
+ ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
+ ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
+ ATOM_APEX_INSTALLATION_REQUESTED = 732;
+ ATOM_APEX_INSTALLATION_STAGED = 733;
+ ATOM_APEX_INSTALLATION_ENDED = 734;
ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
@@ -2861,12 +3083,7 @@
ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
ATOM_UWB_ACTIVITY_INFO = 10188;
- ATOM_MEDIA_ACTION_REPORTED = 608;
- ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
- ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
- ATOM_MEDIA_CODEC_STARTED = 641;
- ATOM_MEDIA_CODEC_STOPPED = 642;
- ATOM_MEDIA_CODEC_RENDERED = 684;
+ ATOM_DND_STATE_CHANGED = 657;
}
// End of protos/perfetto/config/statsd/atom_ids.proto
@@ -14620,6 +14837,9 @@
// The SoC model from which trace is collected
optional string android_soc_model = 9;
+ // The guest SoC model from which trace is collected in case of VMs
+ optional string android_guest_soc_model = 13;
+
// The hardware reversion from android device
optional string android_hardware_revision = 10;
diff --git a/protos/perfetto/trace/system_info.proto b/protos/perfetto/trace/system_info.proto
index 32cf887..cdb952f 100644
--- a/protos/perfetto/trace/system_info.proto
+++ b/protos/perfetto/trace/system_info.proto
@@ -32,6 +32,9 @@
// The SoC model from which trace is collected
optional string android_soc_model = 9;
+ // The guest SoC model from which trace is collected in case of VMs
+ optional string android_guest_soc_model = 13;
+
// The hardware reversion from android device
optional string android_hardware_revision = 10;
diff --git a/protos/perfetto/trace/track_event/BUILD.gn b/protos/perfetto/trace/track_event/BUILD.gn
index abb9a76..0d2749b 100644
--- a/protos/perfetto/trace/track_event/BUILD.gn
+++ b/protos/perfetto/trace/track_event/BUILD.gn
@@ -46,9 +46,42 @@
]
}
+config("descriptor_inputs_config") {
+ inputs = [
+ "debug_annotation.proto",
+ "log_message.proto",
+ "task_execution.proto",
+ "chrome_active_processes.proto",
+ "chrome_application_state_info.proto",
+ "chrome_compositor_scheduler_state.proto",
+ "chrome_content_settings_event_info.proto",
+ "chrome_frame_reporter.proto",
+ "chrome_histogram_sample.proto",
+ "chrome_keyed_service.proto",
+ "chrome_latency_info.proto",
+ "chrome_legacy_ipc.proto",
+ "chrome_message_pump.proto",
+ "chrome_mojo_event_info.proto",
+ "chrome_renderer_scheduler_state.proto",
+ "chrome_user_event.proto",
+ "chrome_window_handle_event_info.proto",
+ "screenshot.proto",
+ "source_location.proto",
+ ]
+}
+
+group("descriptor_inputs") {
+ public_configs = [ ":descriptor_inputs_config" ]
+}
+
perfetto_proto_library("descriptor") {
proto_generators = [ "descriptor" ]
generate_descriptor = "track_event.descriptor"
sources = [ "track_event.proto" ]
+
+ # TODO(lalitm): remove this target when we found better way to propagate
+ # indirect input deps.
+ proto_deps = [ ":descriptor_inputs" ]
+
link_deps = [ ":source_set" ]
}
diff --git a/protos/third_party/chromium/BUILD.gn b/protos/third_party/chromium/BUILD.gn
index ef1e18a..4cd5d12 100644
--- a/protos/third_party/chromium/BUILD.gn
+++ b/protos/third_party/chromium/BUILD.gn
@@ -7,10 +7,44 @@
public_deps = [ "../../perfetto/trace/track_event:@TYPE@" ]
}
+config("descriptor_inputs_config") {
+ inputs = [
+ "../../perfetto/trace/track_event/track_event.proto",
+ "../../perfetto/trace/track_event/debug_annotation.proto",
+ "../../perfetto/trace/track_event/source_location.proto",
+ "../../perfetto/trace/track_event/log_message.proto",
+ "../../perfetto/trace/track_event/task_execution.proto",
+ "../../perfetto/trace/track_event/chrome_active_processes.proto",
+ "../../perfetto/trace/track_event/chrome_application_state_info.proto",
+ "../../perfetto/trace/track_event/chrome_compositor_scheduler_state.proto",
+ "../../perfetto/trace/track_event/chrome_content_settings_event_info.proto",
+ "../../perfetto/trace/track_event/chrome_frame_reporter.proto",
+ "../../perfetto/trace/track_event/chrome_histogram_sample.proto",
+ "../../perfetto/trace/track_event/chrome_keyed_service.proto",
+ "../../perfetto/trace/track_event/chrome_latency_info.proto",
+ "../../perfetto/trace/track_event/chrome_legacy_ipc.proto",
+ "../../perfetto/trace/track_event/chrome_message_pump.proto",
+ "../../perfetto/trace/track_event/chrome_mojo_event_info.proto",
+ "../../perfetto/trace/track_event/chrome_renderer_scheduler_state.proto",
+ "../../perfetto/trace/track_event/chrome_user_event.proto",
+ "../../perfetto/trace/track_event/chrome_window_handle_event_info.proto",
+ "../../perfetto/trace/track_event/screenshot.proto",
+ ]
+}
+
+group("descriptor_inputs") {
+ public_configs = [ ":descriptor_inputs_config" ]
+}
+
perfetto_proto_library("@TYPE@") {
proto_generators = [ "descriptor" ]
sources = chrome_track_event_sources
generate_descriptor = "chrome_track_event.descriptor"
+
+ # TODO(lalitm): remove this target when we found better way to propagate
+ # indirect input deps.
+ proto_deps = [ ":descriptor_inputs" ]
+
link_deps = [ ":source_set" ]
# When rolled into Chrome, extension descriptor is going to be linked into
diff --git a/python/perfetto/trace_processor/protos.py b/python/perfetto/trace_processor/protos.py
index ea13297..b2ac388 100644
--- a/python/perfetto/trace_processor/protos.py
+++ b/python/perfetto/trace_processor/protos.py
@@ -43,9 +43,7 @@
def create_message_factory(message_type):
message_desc = self.descriptor_pool.FindMessageTypeByName(message_type)
- if hasattr(message_factory, 'GetMessageClass'):
- return message_factory.GetMessageClass(message_desc)
- return message_factory.MessageFactory().GetPrototype(message_desc)
+ return message_factory.GetMessageClass(message_desc)
# Create proto messages to correctly communicate with the RPC API by sending
# and receiving data as protos
diff --git a/src/trace_processor/importers/proto/atoms.descriptor b/src/trace_processor/importers/proto/atoms.descriptor
index 923f583..b318814 100644
--- a/src/trace_processor/importers/proto/atoms.descriptor
+++ b/src/trace_processor/importers/proto/atoms.descriptor
Binary files differ
diff --git a/src/trace_processor/importers/proto/system_probes_parser.cc b/src/trace_processor/importers/proto/system_probes_parser.cc
index 94f624f..63bbdfe 100644
--- a/src/trace_processor/importers/proto/system_probes_parser.cc
+++ b/src/trace_processor/importers/proto/system_probes_parser.cc
@@ -824,6 +824,13 @@
context_->storage->InternString(packet.android_soc_model())));
}
+ if (packet.has_android_guest_soc_model()) {
+ context_->metadata_tracker->SetMetadata(
+ metadata::android_guest_soc_model,
+ Variadic::String(
+ context_->storage->InternString(packet.android_guest_soc_model())));
+ }
+
if (packet.has_android_hardware_revision()) {
context_->metadata_tracker->SetMetadata(
metadata::android_hardware_revision,
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
index 14a1560..4f0208c 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright (C) 2022 The Android Open Source Project
+# Copyright (C) 2024 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.
@@ -17,6 +17,7 @@
perfetto_sql_source_set("android") {
deps = [
"auto",
+ "battery",
"cpu",
"frames",
"gpu",
@@ -41,6 +42,7 @@
"input.sql",
"io.sql",
"job_scheduler.sql",
+ "job_scheduler_states.sql",
"monitor_contention.sql",
"network_packets.sql",
"oom_adjuster.sql",
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/battery/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/android/battery/BUILD.gn
new file mode 100644
index 0000000..828c10b
--- /dev/null
+++ b/src/trace_processor/perfetto_sql/stdlib/android/battery/BUILD.gn
@@ -0,0 +1,19 @@
+# Copyright (C) 2024 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.
+
+import("../../../../../../gn/perfetto_sql.gni")
+
+perfetto_sql_source_set("battery") {
+ sources = [ "charging_states.sql" ]
+}
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/battery/charging_states.sql b/src/trace_processor/perfetto_sql/stdlib/android/battery/charging_states.sql
new file mode 100644
index 0000000..6629fe4
--- /dev/null
+++ b/src/trace_processor/perfetto_sql/stdlib/android/battery/charging_states.sql
@@ -0,0 +1,71 @@
+--
+-- Copyright 2024 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
+--
+-- https://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.
+INCLUDE PERFETTO MODULE counters.intervals;
+
+-- Device charging states.
+CREATE PERFETTO TABLE android_charging_states(
+ -- Alias of counter.id if a slice with charging state exists otherwise
+ -- there will be a single row where id = 1.
+ id INT,
+ -- Timestamp at which the device charging state began.
+ ts INT,
+ -- Duration of the device charging state.
+ dur INT,
+ -- Device charging state, one of: Charging, Discharging, Not charging
+ -- (when the charger is present but battery is not charging),
+ -- Full, Unknown
+ charging_state STRING
+) AS SELECT
+ id,
+ ts,
+ dur,
+ charging_state
+ FROM (
+ WITH
+ _counter AS (
+ SELECT counter.id, ts, 0 AS track_id, value
+ FROM counter
+ JOIN counter_track
+ ON counter_track.id = counter.track_id
+ WHERE counter_track.name = 'BatteryStatus'
+ )
+ SELECT
+ id,
+ ts,
+ dur,
+ CASE
+ value
+ -- 0 and 1 are both 'Unknown'
+ WHEN 2 THEN 'Charging'
+ WHEN 3 THEN 'Discharging'
+ -- special case when charger is present but battery isn't charging
+ WHEN 4 THEN 'Not charging'
+ WHEN 5 THEN 'Full'
+ ELSE 'Unknown'
+ END AS charging_state
+ FROM counter_leading_intervals !(_counter)
+ WHERE dur > 0
+ -- Either the above select statement is populated or the
+ -- select statement after the union is populated but not both.
+ UNION
+ -- When the trace does not have a slice in the charging state track then
+ -- we will assume that the charging state for the entire trace is Unknown.
+ -- This ensures that we still have job data even if the charging state is
+ -- not known. The following statement will only ever return a single row.
+ SELECT 1, TRACE_START(), TRACE_DUR(), 'Unknown'
+ WHERE NOT EXISTS (
+ SELECT * FROM _counter
+ ) AND TRACE_DUR() > 0
+ );
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql b/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
index de4729b..6ab75d8 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/desktop_mode.sql
@@ -35,21 +35,21 @@
atoms AS (
SELECT
ts,
- extract_arg(arg_set_id, 'field_1') AS type,
- extract_arg(arg_set_id, 'field_2') AS instance_id,
- extract_arg(arg_set_id, 'field_3') AS uid
+ extract_arg(arg_set_id, 'desktop_mode_session_task_update.task_event') AS type,
+ extract_arg(arg_set_id, 'desktop_mode_session_task_update.instance_id') AS instance_id,
+ extract_arg(arg_set_id, 'desktop_mode_session_task_update.uid') AS uid
FROM android_statsd_atoms
- WHERE name = 'atom_819'),
+ WHERE name = 'desktop_mode_session_task_update'),
dw_statsd_events_add AS (
SELECT *
FROM atoms
- WHERE type = 1),
+ WHERE type = 'TASK_ADDED'),
dw_statsd_events_remove AS (
SELECT * FROM atoms
- WHERE type = 2),
+ WHERE type = 'TASK_REMOVED'),
dw_statsd_events_update_by_instance AS (
SELECT instance_id, min(uid) AS uid FROM atoms
- WHERE type = 3 GROUP BY instance_id),
+ WHERE type = 'TASK_INFO_CHANGED' GROUP BY instance_id),
dw_windows AS (
SELECT
a.ts AS raw_add_ts,
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql b/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql
index dc222bf..98f65e0 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler.sql
@@ -15,6 +15,18 @@
--
-- All scheduled jobs and their latencies.
+--
+-- The table is populated by ATrace using the system server ATrace category
+-- (`atrace_categories: "ss"`). You can also set the `atrace_apps` of interest.
+--
+-- This differs from the `android_job_scheduler_states` table
+-- in the `android.job_scheduler_states` module which is populated
+-- by the `ScheduledJobStateChanged` atom.
+--
+-- Using `android_job_scheduler_states` is preferred when the
+-- `ATOM_SCHEDULED_JOB_STATE_CHANGED` is available in the trace since
+-- it includes the constraint, screen, or charging state changes for
+-- each job in a trace.
CREATE PERFETTO TABLE android_job_scheduler_events (
-- Id of the scheduled job assigned by the app developer.
job_id INT,
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler_states.sql b/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler_states.sql
new file mode 100644
index 0000000..ea3f8cb
--- /dev/null
+++ b/src/trace_processor/perfetto_sql/stdlib/android/job_scheduler_states.sql
@@ -0,0 +1,438 @@
+--
+-- Copyright 2024 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
+--
+-- https://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.
+
+INCLUDE PERFETTO MODULE counters.intervals;
+INCLUDE PERFETTO MODULE android.battery.charging_states;
+INCLUDE PERFETTO MODULE intervals.intersect;
+
+CREATE PERFETTO TABLE _screen_states AS
+SELECT
+ id,
+ ts,
+ dur,
+ screen_state
+FROM (
+ WITH _screen_state_span AS (
+ SELECT *
+ FROM counter_leading_intervals!((
+ SELECT counter.id, ts, 0 AS track_id, value
+ FROM counter
+ JOIN counter_track ON counter_track.id = counter.track_id
+ WHERE name = 'ScreenState'
+ ))) SELECT
+ id,
+ ts,
+ dur,
+ CASE value
+ WHEN 1 THEN 'Screen off'
+ WHEN 2 THEN 'Screen on'
+ WHEN 3 THEN 'Always-on display (doze)'
+ ELSE 'Unknown'
+ END AS screen_state
+ FROM _screen_state_span
+ WHERE dur > 0
+ -- Either the above select statement is populated or the
+ -- select statement after the union is populated but not both.
+ UNION
+ -- When the trace does not have a slice in the screen state track then
+ -- we will assume that the screen state for the entire trace is Unknown.
+ -- This ensures that we still have job data even if the screen state is
+ -- not known. The following statement will only ever return a single row.
+ SELECT 1, TRACE_START() as ts, TRACE_DUR() as dur, 'Unknown'
+ WHERE NOT EXISTS (
+ SELECT * FROM _screen_state_span
+ ) AND TRACE_DUR() > 0
+);
+
+CREATE PERFETTO TABLE _job_states AS
+SELECT
+ t.id as track_id,
+ s.ts,
+ s.id AS slice_id,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.job_name') AS job_name,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.state') AS state,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.internal_stop_reason')
+ AS internal_stop_reason,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.public_stop_reason')
+ AS public_stop_reason,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.effective_priority')
+ AS effective_priority,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_battery_not_low_constraint')
+ AS has_battery_not_low_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_charging_constraint')
+ AS has_charging_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_connectivity_constraint')
+ AS has_connectivity_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_content_trigger_constraint')
+ AS has_content_trigger_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_deadline_constraint')
+ AS has_deadline_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_idle_constraint')
+ AS has_idle_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_storage_not_low_constraint')
+ AS has_storage_not_low_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.has_timing_delay_constraint')
+ AS has_timing_delay_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_prefetch') == 1
+ AS is_prefetch,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_requested_expedited_job')
+ AS is_requested_expedited_job,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_running_as_expedited_job')
+ AS is_running_as_expedited_job,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.job_id') AS job_id,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.num_previous_attempts')
+ AS num_previous_attempts,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.requested_priority')
+ AS requested_priority,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.standby_bucket')
+ AS standby_bucket,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_periodic')
+ AS is_periodic,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_periodic')
+ AS has_flex_constraint,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_requested_as_user_initiated_job')
+ AS is_requested_as_user_initiated_job,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.is_running_as_user_initiated_job')
+ AS is_running_as_user_initiated_job,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.deadline_ms')
+ AS deadline_ms,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.job_start_latency_ms')
+ AS job_start_latency_ms,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.num_uncompleted_work_items')
+ AS num_uncompleted_work_items,
+ extract_arg(arg_set_id, 'scheduled_job_state_changed.proc_state')
+ AS proc_state
+FROM
+ track t
+JOIN slice s
+ ON (s.track_id = t.id)
+WHERE
+ t.name = 'Statsd Atoms' AND s.name = 'scheduled_job_state_changed';
+
+CREATE PERFETTO TABLE _job_started AS
+WITH cte AS (
+ SELECT
+ *,
+ LEAD(state, 1)
+ OVER (PARTITION BY job_name, job_id ORDER BY job_name, job_id, ts) AS lead_state,
+ LEAD(ts, 1, TRACE_END())
+ OVER (PARTITION BY job_name, job_id ORDER BY job_name, job_id, ts) AS ts_lead,
+ --- Filter out statsd lossy issue.
+ LEAD(ts, 1)
+ OVER (PARTITION BY job_name, job_id ORDER BY job_name, job_id, ts) IS NULL AS is_end_slice,
+ LEAD(internal_stop_reason, 1, 'INTERNAL_STOP_REASON_UNKNOWN')
+ OVER (
+ PARTITION BY job_name, job_id
+ ORDER BY job_name, job_id, ts
+ ) AS lead_internal_stop_reason,
+ LEAD(public_stop_reason, 1, 'PUBLIC_STOP_REASON_UNKNOWN')
+ OVER (
+ PARTITION BY job_name, job_id
+ ORDER BY job_name, job_id, ts
+ ) AS lead_public_stop_reason
+ FROM _job_states
+ WHERE state != 'CANCELLED'
+)
+SELECT
+ -- Job name is based on whether the tag and/or namespace are present:
+ -- 1. Both tag and namespace are present: @<namespace>@<tag>:<package name>
+ -- 2. Only tag is present: <tag>:<package name>
+ -- 3. Only namespace is present: @<namespace>@<package name>/<class name>
+ CASE
+ WHEN substr(job_name, 1, 1) = '@'
+ THEN
+ CASE
+ WHEN substr(STR_SPLIT(job_name, '/', 1), 1, 3) = 'com' THEN STR_SPLIT(job_name, '/', 1)
+ ELSE STR_SPLIT(STR_SPLIT(job_name, '/', 0), '@', 2)
+ END
+ ELSE STR_SPLIT(job_name, '/', 0)
+ END AS package_name,
+ CASE
+ WHEN substr(job_name, 1, 1) = '@' THEN STR_SPLIT(job_name, '@', 1)
+ ELSE STR_SPLIT(job_name, '/', 1)
+ END AS job_namespace,
+ ts_lead - ts AS dur,
+ IIF(lead_state = 'SCHEDULED', TRUE, FALSE) AS is_rescheduled,
+ *
+FROM cte
+WHERE
+ is_end_slice = FALSE
+ AND (ts_lead - ts) > 0
+ AND state = 'STARTED'
+ AND lead_state IN ('FINISHED', 'SCHEDULED');
+
+CREATE PERFETTO TABLE _charging_screen_states AS
+SELECT
+ ROW_NUMBER() OVER () AS id,
+ ii.ts,
+ ii.dur,
+ c.charging_state,
+ s.screen_state
+FROM _interval_intersect!(
+ (android_charging_states, _screen_states),
+ ()
+) ii
+JOIN android_charging_states c ON c.id = ii.id_0
+JOIN _screen_states s ON s.id = ii.id_1;
+
+-- This table returns constraint changes that a
+-- job will go through in a single trace.
+--
+-- Values in this table are derived from the the `ScheduledJobStateChanged`
+-- atom. This table differs from the
+-- `android_job_scheduler_with_screen_charging_states` in this module
+-- (`android.job_scheduler_states`) by only having job constraint information.
+--
+-- See documentation for the `android_job_scheduler_with_screen_charging_states`
+-- for how tables in this module differ from `android_job_scheduler_events`
+-- table in the `android.job_scheduler` module and how to populate this table.
+CREATE PERFETTO TABLE android_job_scheduler_states(
+ -- Unique identifier for row.
+ id INT,
+ -- Timestamp of job state slice.
+ ts INT,
+ -- Duration of job state slice.
+ dur INT,
+ -- Id of the slice.
+ slice_id INT,
+ -- Name of the job (as named by the app).
+ job_name STRING,
+ -- Id of job (assigned by app for T- builds and system generated in U+
+ -- builds).
+ job_id INT,
+ -- Package that the job belongs (ex: associated app).
+ package_name STRING,
+ -- Namespace of job.
+ job_namespace STRING,
+ -- Priority at which JobScheduler ran the job.
+ effective_priority INT,
+ -- True if app requested job should run when the device battery is not low.
+ has_battery_not_low_constraint BOOL,
+ -- True if app requested job should run when the device is charging.
+ has_charging_constraint BOOL,
+ -- True if app requested job should run when device has connectivity.
+ has_connectivity_constraint BOOL,
+ -- True if app requested job should run when there is a content trigger.
+ has_content_trigger_constraint BOOL,
+ -- True if app requested there is a deadline by which the job should run.
+ has_deadline_constraint BOOL,
+ -- True if app requested job should run when device is idle.
+ has_idle_constraint BOOL,
+ -- True if app requested job should run when device storage is not low.
+ has_storage_not_low_constraint BOOL,
+ -- True if app requested job has a timing delay.
+ has_timing_delay_constraint BOOL,
+ -- True if app requested job should run within hours of app launch.
+ is_prefetch BOOL,
+ -- True if app requested that the job is run as an expedited job.
+ is_requested_expedited_job BOOL,
+ -- The job is run as an expedited job.
+ is_running_as_expedited_job BOOL,
+ -- Number of previous attempts at running job.
+ num_previous_attempts INT,
+ -- The requested priority at which the job should run.
+ requested_priority INT,
+ -- The job's standby bucket (one of: Active, Working Set, Frequent, Rare,
+ -- Never, Restricted, Exempt).
+ standby_bucket STRING,
+ -- Job should run in intervals.
+ is_periodic BOOL,
+ -- True if the job should run as a flex job.
+ has_flex_constraint BOOL,
+ -- True is app has requested that a job be run as a user initiated job.
+ is_requested_as_user_initiated_job BOOL,
+ -- True if job is running as a user initiated job.
+ is_running_as_user_initiated_job BOOL,
+ -- Deadline that job has requested and valid if has_deadline_constraint is
+ -- true.
+ deadline_ms INT,
+ -- The latency in ms between when a job is scheduled and when it actually
+ -- starts.
+ job_start_latency_ms INT,
+ -- Number of uncompleted job work items.
+ num_uncompleted_work_items INT,
+ -- Process state of the process responsible for running the job.
+ proc_state STRING
+) AS
+SELECT
+ ROW_NUMBER() OVER (ORDER BY ts) AS id,
+ ts,
+ dur,
+ slice_id,
+ job_name,
+ job_id,
+ package_name,
+ job_namespace,
+ effective_priority,
+ has_battery_not_low_constraint,
+ has_charging_constraint,
+ has_connectivity_constraint,
+ has_content_trigger_constraint,
+ has_deadline_constraint,
+ has_idle_constraint,
+ has_storage_not_low_constraint,
+ has_timing_delay_constraint,
+ is_prefetch,
+ is_requested_expedited_job,
+ is_running_as_expedited_job,
+ num_previous_attempts,
+ requested_priority,
+ standby_bucket,
+ is_periodic,
+ has_flex_constraint,
+ is_requested_as_user_initiated_job,
+ is_running_as_user_initiated_job,
+ deadline_ms,
+ job_start_latency_ms,
+ num_uncompleted_work_items,
+ proc_state
+FROM _job_started;
+
+-- This table returns the constraint, charging,
+-- and screen state changes that a job will go through
+-- in a single trace.
+--
+-- Values from this table are derived from
+-- the `ScheduledJobStateChanged` atom. This differs from the
+-- `android_job_scheduler_events` table in the `android.job_scheduler` module
+-- which is derived from ATrace the system server category
+-- (`atrace_categories: "ss"`).
+--
+-- This also differs from the `android_job_scheduler_states` in this module
+-- (`android.job_scheduler_states`) by providing charging and screen state
+-- changes.
+--
+-- To populate this table, enable the Statsd Tracing Config with the
+-- ATOM_SCHEDULED_JOB_STATE_CHANGED push atom id.
+-- https://perfetto.dev/docs/reference/trace-config-proto#StatsdTracingConfig
+--
+-- This table is preferred over `android_job_scheduler_events`
+-- since it contains more information and should be used whenever
+-- `ATOM_SCHEDULED_JOB_STATE_CHANGED` is available in a trace.
+CREATE PERFETTO TABLE android_job_scheduler_with_screen_charging_states(
+ -- Timestamp of job.
+ ts INT,
+ -- Duration of job in ns.
+ dur INT,
+ -- Id of the slice.
+ slice_id INT,
+ -- Name of the job (as named by the app).
+ job_name STRING,
+ -- Id of job (assigned by app for T- builds and system generated in U+
+ -- builds).
+ job_id INT,
+ -- Duration of job in ns.
+ job_dur INT,
+ -- Package that the job belongs (ex: associated app).
+ package_name STRING,
+ -- Namespace of job.
+ job_namespace STRING,
+ -- Device charging state during job (one of: Charging, Discharging, Not charging,
+ -- Full, Unknown).
+ charging_state STRING,
+ -- Device screen state during job (one of: Screen off, Screen on, Always-on display
+ -- (doze), Unknown).
+ screen_state STRING,
+ -- Priority at which JobScheduler ran the job.
+ effective_priority INT,
+ -- True if app requested job should run when the device battery is not low.
+ has_battery_not_low_constraint BOOL,
+ -- True if app requested job should run when the device is charging.
+ has_charging_constraint BOOL,
+ -- True if app requested job should run when device has connectivity.
+ has_connectivity_constraint BOOL,
+ -- True if app requested job should run when there is a content trigger.
+ has_content_trigger_constraint BOOL,
+ -- True if app requested there is a deadline by which the job should run.
+ has_deadline_constraint BOOL,
+ -- True if app requested job should run when device is idle.
+ has_idle_constraint BOOL,
+ -- True if app requested job should run when device storage is not low.
+ has_storage_not_low_constraint BOOL,
+ -- True if app requested job has a timing delay.
+ has_timing_delay_constraint BOOL,
+ -- True if app requested job should run within hours of app launch.
+ is_prefetch BOOL,
+ -- True if app requested that the job is run as an expedited job.
+ is_requested_expedited_job BOOL,
+ -- The job is run as an expedited job.
+ is_running_as_expedited_job BOOL,
+ -- Number of previous attempts at running job.
+ num_previous_attempts INT,
+ -- The requested priority at which the job should run.
+ requested_priority INT,
+ -- The job's standby bucket (one of: Active, Working Set, Frequent, Rare,
+ -- Never, Restricted, Exempt).
+ standby_bucket STRING,
+ -- Job should run in intervals.
+ is_periodic BOOL,
+ -- True if the job should run as a flex job.
+ has_flex_constraint BOOL,
+ -- True is app has requested that a job be run as a user initiated job.
+ is_requested_as_user_initiated_job BOOL,
+ -- True if job is running as a user initiated job.
+ is_running_as_user_initiated_job BOOL,
+ -- Deadline that job has requested and valid if has_deadline_constraint is
+ -- true.
+ deadline_ms INT,
+ -- The latency in ms between when a job is scheduled and when it actually
+ -- starts.
+ job_start_latency_ms INT,
+ -- Number of uncompleted job work items.
+ num_uncompleted_work_items INT,
+ -- Process state of the process responsible for running the job.
+ proc_state STRING
+) AS
+SELECT
+ ii.ts,
+ ii.dur,
+ js.slice_id,
+ js.job_name || '_' || js.job_id AS job_name,
+ js.job_id,
+ js.dur AS job_dur,
+ js.package_name,
+ js.job_namespace,
+ c.charging_state,
+ c.screen_state,
+ js.effective_priority,
+ js.has_battery_not_low_constraint,
+ js.has_charging_constraint,
+ js.has_connectivity_constraint,
+ js.has_content_trigger_constraint,
+ js.has_deadline_constraint,
+ js.has_idle_constraint,
+ js.has_storage_not_low_constraint,
+ js.has_timing_delay_constraint,
+ js.is_prefetch,
+ js.is_requested_expedited_job,
+ js.is_running_as_expedited_job,
+ js.num_previous_attempts,
+ js.requested_priority,
+ js.standby_bucket,
+ js.is_periodic,
+ js.has_flex_constraint,
+ js.is_requested_as_user_initiated_job,
+ js.is_running_as_user_initiated_job,
+ js.deadline_ms,
+ js.job_start_latency_ms,
+ js.num_uncompleted_work_items,
+ js.proc_state
+ FROM _interval_intersect!(
+ (_charging_screen_states,
+ android_job_scheduler_states),
+ ()
+ ) ii
+ JOIN _charging_screen_states c ON c.id = ii.id_0
+ JOIN android_job_scheduler_states js ON js.id = ii.id_1;
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/startup/startup_breakdowns.sql b/src/trace_processor/perfetto_sql/stdlib/android/startup/startup_breakdowns.sql
index c6b972a..9f3f321 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/startup/startup_breakdowns.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/startup/startup_breakdowns.sql
@@ -150,4 +150,19 @@
AS
SELECT b.ts, b.dur, startup.startup_id, b.slice_id, b.thread_state_id, _startup_breakdown_reason(name, state, io_wait, irq_context) AS reason
FROM _startup_thread_states_and_slices_breakdown_sp b
-JOIN _startup_root_slices startup ON startup.id = b.root_id;
+JOIN _startup_root_slices startup ON startup.id = b.root_id
+UNION ALL
+-- Augment the existing startup breakdown with an artificial slice accounting for
+-- any launch delays before the app starts handling startup on its main thread
+SELECT
+ _startup_root_slices.ts,
+ MIN(_startup_thread_states_breakdown.ts) - _startup_root_slices.ts AS dur,
+ startup_id,
+ NULL AS slice_id,
+ NULL AS thread_state_id,
+ 'launch_delay' AS reason
+FROM _startup_thread_states_breakdown
+JOIN _startup_root_slices
+ ON _startup_root_slices.id = root_id
+GROUP BY root_id
+HAVING MIN(_startup_thread_states_breakdown.ts) - _startup_root_slices.ts > 0;
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/suspend.sql b/src/trace_processor/perfetto_sql/stdlib/android/suspend.sql
index 1551ea6..8d2c88c 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/suspend.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/suspend.sql
@@ -49,11 +49,11 @@
AND NOT EXISTS(SELECT * FROM suspend_slice_from_minimal)
),
awake_slice AS (
- -- If we don't have any rows, use the trace bounds.
+ -- If we don't have any rows, use the trace bounds if bounds are defined.
SELECT
trace_start() AS ts,
trace_dur() AS dur
- WHERE (SELECT COUNT(*) FROM suspend_slice) = 0
+ WHERE (SELECT COUNT(*) FROM suspend_slice) = 0 AND dur > 0
UNION ALL
-- If we do have rows, create one slice from the trace start to the first suspend.
SELECT
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
index dfeb3fd..3d35a94 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/cpu_split.sql
@@ -13,6 +13,7 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
+INCLUDE PERFETTO MODULE android.suspend;
INCLUDE PERFETTO MODULE intervals.intersect;
INCLUDE PERFETTO MODULE time.conversion;
INCLUDE PERFETTO MODULE wattson.arm_dsu;
@@ -79,20 +80,25 @@
CREATE PERFETTO TABLE _stats_cpu7 AS
SELECT * FROM _stats_w_policy_subquery!(7, policy_7, cpu7_curve, freq_7, idle_7);
-CREATE PERFETTO TABLE _stats_cpu0123 AS
+CREATE PERFETTO TABLE _stats_cpu0123_suspend AS
SELECT
ii.ts,
ii.dur,
- id_0 as cpu0_id, id_1 as cpu1_id, id_2 as cpu2_id, id_3 as cpu3_id
+ id_0 as cpu0_id, id_1 as cpu1_id, id_2 as cpu2_id, id_3 as cpu3_id,
+ ss.power_state = 'suspended' as suspended
FROM _interval_intersect!(
(
_ii_subquery!(_stats_cpu0),
_ii_subquery!(_stats_cpu1),
_ii_subquery!(_stats_cpu2),
- _ii_subquery!(_stats_cpu3)
+ _ii_subquery!(_stats_cpu3),
+ -- Includes suspend AND awake portions, which will cover entire trace and
+ -- allows us to use _interval_intersect instead of SPAN_OUTER_JOIN()
+ _ii_subquery!(android_suspend_state)
),
()
-) as ii;
+) as ii
+JOIN android_suspend_state AS ss ON ss._auto_id = id_4;
CREATE PERFETTO TABLE _stats_cpu4567 AS
SELECT
@@ -110,26 +116,14 @@
) as ii;
-- SPAN OUTER JOIN because sometimes CPU4/5/6/7 are empty tables
-CREATE VIRTUAL TABLE _stats_cpu01234567
+CREATE VIRTUAL TABLE _stats_cpu01234567_suspend
USING
- SPAN_OUTER_JOIN(_stats_cpu0123, _stats_cpu4567);
-
--- get suspend resume state as logged by ftrace.
-CREATE PERFETTO TABLE _suspend_slice AS
-SELECT
- ts, dur, TRUE AS suspended
-FROM slice
-WHERE name GLOB "timekeeping_freeze(0)";
-
--- Combine suspend information with CPU idle and frequency system states.
-CREATE VIRTUAL TABLE _idle_freq_suspend_slice
-USING
- SPAN_OUTER_JOIN(_stats_cpu01234567, _suspend_slice);
+ SPAN_OUTER_JOIN(_stats_cpu0123_suspend, _stats_cpu4567);
-- Combine system state so that it has idle, freq, and L3 hit info.
CREATE VIRTUAL TABLE _idle_freq_l3_hit_slice
USING
- SPAN_OUTER_JOIN(_idle_freq_suspend_slice, _arm_l3_hit_rate);
+ SPAN_OUTER_JOIN(_stats_cpu01234567_suspend, _arm_l3_hit_rate);
-- Combine system state so that it has idle, freq, L3 hit, and L3 miss info.
CREATE VIRTUAL TABLE _idle_freq_l3_hit_l3_miss_slice
@@ -166,7 +160,7 @@
policy_6,
policy_7,
IIF(
- suspended = 1,
+ suspended,
1,
MIN(
IFNULL(idle_0, 1),
@@ -175,14 +169,14 @@
IFNULL(idle_3, 1)
)
) as no_static,
- IIF(suspended = 1, 0.0, cpu0_curve) as cpu0_curve,
- IIF(suspended = 1, 0.0, cpu1_curve) as cpu1_curve,
- IIF(suspended = 1, 0.0, cpu2_curve) as cpu2_curve,
- IIF(suspended = 1, 0.0, cpu3_curve) as cpu3_curve,
- IIF(suspended = 1, 0.0, cpu4_curve) as cpu4_curve,
- IIF(suspended = 1, 0.0, cpu5_curve) as cpu5_curve,
- IIF(suspended = 1, 0.0, cpu6_curve) as cpu6_curve,
- IIF(suspended = 1, 0.0, cpu7_curve) as cpu7_curve,
+ IIF(suspended, 0.0, cpu0_curve) as cpu0_curve,
+ IIF(suspended, 0.0, cpu1_curve) as cpu1_curve,
+ IIF(suspended, 0.0, cpu2_curve) as cpu2_curve,
+ IIF(suspended, 0.0, cpu3_curve) as cpu3_curve,
+ IIF(suspended, 0.0, cpu4_curve) as cpu4_curve,
+ IIF(suspended, 0.0, cpu5_curve) as cpu5_curve,
+ IIF(suspended, 0.0, cpu6_curve) as cpu6_curve,
+ IIF(suspended, 0.0, cpu7_curve) as cpu7_curve,
-- If dependency CPUs are active, then that CPU could contribute static power
IIF(idle_4 = -1, lut4.curve_value, -1) as static_4,
IIF(idle_5 = -1, lut5.curve_value, -1) as static_5,
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/curves/estimates.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/curves/estimates.sql
index 3a10fba..1c81f49 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/curves/estimates.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/curves/estimates.sql
@@ -156,3 +156,28 @@
) + static_curve as dsu_scu_mw
FROM _system_state_curves;
+-- API to get power from each system state in an arbitrary time window
+CREATE PERFETTO FUNCTION _windowed_system_state_mw(ts LONG, dur LONG)
+RETURNS TABLE(
+ cpu0_mw FLOAT,
+ cpu1_mw FLOAT,
+ cpu2_mw FLOAT,
+ cpu3_mw FLOAT,
+ cpu4_mw FLOAT,
+ cpu5_mw FLOAT,
+ cpu6_mw FLOAT,
+ cpu7_mw FLOAT,
+ dsu_scu_mw FLOAT
+) AS
+SELECT
+ SUM(ss.cpu0_mw * ss.dur) / SUM(ss.dur) AS cpu0_mw,
+ SUM(ss.cpu1_mw * ss.dur) / SUM(ss.dur) AS cpu1_mw,
+ SUM(ss.cpu2_mw * ss.dur) / SUM(ss.dur) AS cpu2_mw,
+ SUM(ss.cpu3_mw * ss.dur) / SUM(ss.dur) AS cpu3_mw,
+ SUM(ss.cpu4_mw * ss.dur) / SUM(ss.dur) AS cpu4_mw,
+ SUM(ss.cpu5_mw * ss.dur) / SUM(ss.dur) AS cpu5_mw,
+ SUM(ss.cpu6_mw * ss.dur) / SUM(ss.dur) AS cpu6_mw,
+ SUM(ss.cpu7_mw * ss.dur) / SUM(ss.dur) AS cpu7_mw,
+ SUM(ss.dsu_scu_mw * ss.dur) / SUM(ss.dur) AS dsu_scu_mw
+FROM _interval_intersect_single!($ts, $dur, _ii_subquery!(_system_state_mw)) ii
+JOIN _system_state_mw AS ss ON ss._auto_id = id;
diff --git a/src/trace_processor/perfetto_sql/stdlib/wattson/device_infos.sql b/src/trace_processor/perfetto_sql/stdlib/wattson/device_infos.sql
index 6af3c85..6b8cda5 100644
--- a/src/trace_processor/perfetto_sql/stdlib/wattson/device_infos.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/wattson/device_infos.sql
@@ -58,6 +58,8 @@
CREATE PERFETTO TABLE _wattson_device AS
WITH soc_model AS (
SELECT COALESCE(
+ -- Get guest model from metadata, which takes precedence if set
+ (SELECT str_value FROM metadata WHERE name = 'android_guest_soc_model'),
-- Get model from metadata
(SELECT str_value FROM metadata WHERE name = 'android_soc_model'),
-- Get device name from metadata and map it to model
diff --git a/src/trace_processor/storage/metadata.h b/src/trace_processor/storage/metadata.h
index 7183b0f..9c73c83 100644
--- a/src/trace_processor/storage/metadata.h
+++ b/src/trace_processor/storage/metadata.h
@@ -33,6 +33,7 @@
F(android_build_fingerprint, KeyType::kSingle, Variadic::kString), \
F(android_sdk_version, KeyType::kSingle, Variadic::kInt), \
F(android_soc_model, KeyType::kSingle, Variadic::kString), \
+ F(android_guest_soc_model, KeyType::kSingle, Variadic::kString), \
F(android_hardware_revision, KeyType::kSingle, Variadic::kString), \
F(android_storage_model, KeyType::kSingle, Variadic::kString), \
F(android_ram_model, KeyType::kSingle, Variadic::kString), \
diff --git a/src/tracing/service/tracing_service_impl.cc b/src/tracing/service/tracing_service_impl.cc
index c6c07a6..262e352 100644
--- a/src/tracing/service/tracing_service_impl.cc
+++ b/src/tracing/service/tracing_service_impl.cc
@@ -3751,6 +3751,13 @@
PERFETTO_ELOG("Unable to read ro.soc.model");
}
+ // guest_soc model is not always present
+ std::string guest_soc_model_value =
+ base::GetAndroidProp("ro.guest_soc.model");
+ if (!guest_soc_model_value.empty()) {
+ info->set_android_guest_soc_model(guest_soc_model_value);
+ }
+
std::string hw_rev_value = base::GetAndroidProp("ro.boot.hardware.revision");
if (!hw_rev_value.empty()) {
info->set_android_hardware_revision(hw_rev_value);
diff --git a/test/data/android_job_scheduler.perfetto-trace.sha256 b/test/data/android_job_scheduler.perfetto-trace.sha256
new file mode 100644
index 0000000..f3779ec
--- /dev/null
+++ b/test/data/android_job_scheduler.perfetto-trace.sha256
@@ -0,0 +1 @@
+9941708f26c9dddfb250f8fdbef94a160302e3020c677f86287a3c061a430738
\ No newline at end of file
diff --git a/test/data/wattson_syscore_suspend.pb.sha256 b/test/data/wattson_syscore_suspend.pb.sha256
new file mode 100644
index 0000000..6a6d34e
--- /dev/null
+++ b/test/data/wattson_syscore_suspend.pb.sha256
@@ -0,0 +1 @@
+611b1824b4c5a26c7cf9e0bf06c4af32a5e30149ecd07ca2cd10160a0872108d
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/stdlib/android/startups_tests.py b/test/trace_processor/diff_tests/stdlib/android/startups_tests.py
index acce2d7..c44bca7 100644
--- a/test/trace_processor/diff_tests/stdlib/android/startups_tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/startups_tests.py
@@ -184,6 +184,7 @@
"dur","reason"
28663023,"choreographer_do_frame"
22564487,"binder"
+ 22011252,"launch_delay"
16351925,"Running"
13212137,"activity_start"
10264635,"io"
diff --git a/test/trace_processor/diff_tests/stdlib/android/tests.py b/test/trace_processor/diff_tests/stdlib/android/tests.py
index 7a649e1..f559091 100644
--- a/test/trace_processor/diff_tests/stdlib/android/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/tests.py
@@ -1302,3 +1302,111 @@
"binder",4174605447
"S",5144384456
"""))
+
+ def test_android_charging_states_output(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_job_scheduler.perfetto-trace'),
+ query="""
+ INCLUDE PERFETTO MODULE android.battery.charging_states;
+ SELECT ts, dur, charging_state FROM android_charging_states;
+ """,
+ out=Csv("""
+ "ts","dur","charging_state"
+ 368604749651,59806073237,"Charging"
+ """))
+
+ def test_android_job_scheduler_states_output(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_job_scheduler.perfetto-trace'),
+ query="""
+ INCLUDE PERFETTO MODULE android.job_scheduler_states;
+ SELECT
+ id,
+ ts,
+ dur,
+ slice_id,
+ job_name || '_' || job_id AS job_name,
+ job_id,
+ package_name,
+ job_namespace,
+ effective_priority,
+ has_battery_not_low_constraint,
+ has_charging_constraint,
+ has_connectivity_constraint,
+ has_content_trigger_constraint,
+ has_deadline_constraint,
+ has_idle_constraint,
+ has_storage_not_low_constraint,
+ has_timing_delay_constraint,
+ is_prefetch,
+ is_requested_expedited_job,
+ is_running_as_expedited_job,
+ num_previous_attempts,
+ requested_priority,
+ standby_bucket,
+ is_periodic,
+ has_flex_constraint,
+ is_requested_as_user_initiated_job,
+ is_running_as_user_initiated_job,
+ deadline_ms,
+ job_start_latency_ms,
+ num_uncompleted_work_items,
+ proc_state
+ FROM android_job_scheduler_states;
+ """,
+ out=Csv("""
+ "id","ts","dur","slice_id","job_name","job_id","package_name","job_namespace","effective_priority","has_battery_not_low_constraint","has_charging_constraint","has_connectivity_constraint","has_content_trigger_constraint","has_deadline_constraint","has_idle_constraint","has_storage_not_low_constraint","has_timing_delay_constraint","is_prefetch","is_requested_expedited_job","is_running_as_expedited_job","num_previous_attempts","requested_priority","standby_bucket","is_periodic","has_flex_constraint","is_requested_as_user_initiated_job","is_running_as_user_initiated_job","deadline_ms","job_start_latency_ms","num_uncompleted_work_items","proc_state"
+1,377089754138,83200835,10,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286783",-2746960329031286783,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT"
+2,385507499374,111746552,17,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286782",-2746960329031286782,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,6,0,"PROCESS_STATE_PERSISTENT"
+3,416753734715,129444346,53,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286781",-2746960329031286781,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,5,0,"PROCESS_STATE_PERSISTENT"
+4,422530232411,86735906,59,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286780",-2746960329031286780,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT"
+ """))
+
+ def test_android_job_scheduler_with_screen_charging_output(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_job_scheduler.perfetto-trace'),
+ query="""
+ INCLUDE PERFETTO MODULE android.job_scheduler_states;
+ SELECT
+ ts,
+ dur,
+ slice_id,
+ job_name,
+ job_id,
+ job_dur,
+ package_name,
+ job_namespace,
+ charging_state,
+ screen_state,
+ effective_priority,
+ has_battery_not_low_constraint,
+ has_charging_constraint,
+ has_connectivity_constraint,
+ has_content_trigger_constraint,
+ has_deadline_constraint,
+ has_idle_constraint,
+ has_storage_not_low_constraint,
+ has_timing_delay_constraint,
+ is_prefetch,
+ is_requested_expedited_job,
+ is_running_as_expedited_job,
+ num_previous_attempts,
+ requested_priority,
+ standby_bucket,
+ is_periodic,
+ has_flex_constraint,
+ is_requested_as_user_initiated_job,
+ is_running_as_user_initiated_job,
+ deadline_ms,
+ job_start_latency_ms,
+ num_uncompleted_work_items,
+ proc_state
+ from android_job_scheduler_with_screen_charging_states;
+ """,
+ out=Csv("""
+ "ts","dur","slice_id","job_name","job_id","job_dur","package_name","job_namespace","charging_state","screen_state","effective_priority","has_battery_not_low_constraint","has_charging_constraint","has_connectivity_constraint","has_content_trigger_constraint","has_deadline_constraint","has_idle_constraint","has_storage_not_low_constraint","has_timing_delay_constraint","is_prefetch","is_requested_expedited_job","is_running_as_expedited_job","num_previous_attempts","requested_priority","standby_bucket","is_periodic","has_flex_constraint","is_requested_as_user_initiated_job","is_running_as_user_initiated_job","deadline_ms","job_start_latency_ms","num_uncompleted_work_items","proc_state"
+377089754138,83200835,10,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286783",-2746960329031286783,83200835,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT"
+385507499374,111746552,17,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286782",-2746960329031286782,111746552,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,6,0,"PROCESS_STATE_PERSISTENT"
+416753734715,129444346,53,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286781",-2746960329031286781,129444346,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,5,0,"PROCESS_STATE_PERSISTENT"
+422530232411,86735906,59,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286780",-2746960329031286780,86735906,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT"
+ """))
diff --git a/test/trace_processor/diff_tests/stdlib/wattson/tests.py b/test/trace_processor/diff_tests/stdlib/wattson/tests.py
index d00a305..b5c9cae 100644
--- a/test/trace_processor/diff_tests/stdlib/wattson/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/wattson/tests.py
@@ -410,3 +410,45 @@
4108587746105,12451,2.670000,2.670000,2.670000,205.600000,674.240000,674.240000,674.240000,3327.560000,1166.556475
4108587758556,28524,2.670000,2.670000,205.600000,205.600000,674.240000,674.240000,674.240000,3327.560000,1166.680924
"""))
+
+ def test_wattson_time_window_api(self):
+ return DiffTestBlueprint(
+ trace=DataPath('wattson_dsu_pmu.pb'),
+ query="""
+ INCLUDE PERFETTO MODULE wattson.curves.estimates;
+
+ SELECT
+ cpu0_mw,
+ cpu1_mw,
+ cpu2_mw,
+ cpu3_mw,
+ cpu4_mw,
+ cpu5_mw,
+ cpu6_mw,
+ cpu7_mw,
+ dsu_scu_mw
+ FROM _windowed_system_state_mw(362426061658, 5067704349)
+ """,
+ out=Csv("""
+ "cpu0_mw","cpu1_mw","cpu2_mw","cpu3_mw","cpu4_mw","cpu5_mw","cpu6_mw","cpu7_mw","dsu_scu_mw"
+ 13.025673,6.270190,5.448549,8.796540,8.937174,10.717942,29.482823,30.239208,26.121213
+ """))
+
+ # Tests that suspend calculations are correct on 8 CPU device where suspend
+ # indication comes from "syscore" command
+ def test_wattson_syscore_suspend(self):
+ return DiffTestBlueprint(
+ trace=DataPath('wattson_syscore_suspend.pb'),
+ query=("""
+ INCLUDE PERFETTO MODULE wattson.curves.estimates;
+ SELECT ts, dur, cpu0_id, cpu1_id, cpu2_id, cpu3_id, suspended
+ FROM _stats_cpu0123_suspend
+ WHERE suspended
+ """),
+ out=Csv("""
+ "ts","dur","cpu0_id","cpu1_id","cpu2_id","cpu3_id","suspended"
+ 385019771468,61975407053,12041,12218,10488,8910,1
+ 448320364476,3674872885,13005,12954,11166,9272,1
+ 452415394221,69579176303,13654,13361,11651,9609,1
+ 564873995228,135118729231,45223,37594,22798,20132,1
+ """))
diff --git a/ui/src/common/recordingV2/recording_page_controller.ts b/ui/src/common/recordingV2/recording_page_controller.ts
index 19257e2..5bbe067 100644
--- a/ui/src/common/recordingV2/recording_page_controller.ts
+++ b/ui/src/common/recordingV2/recording_page_controller.ts
@@ -426,7 +426,7 @@
const target = this.getTarget();
const targetInfo = target.getInfo();
- globals.logging.logEvent(
+ AppImpl.instance.analytics.logEvent(
'Record Trace',
`Record trace (${targetInfo.targetType})`,
);
diff --git a/ui/src/frontend/analytics.ts b/ui/src/core/analytics_impl.ts
similarity index 86%
rename from ui/src/frontend/analytics.ts
rename to ui/src/core/analytics_impl.ts
index a453010..be785ca 100644
--- a/ui/src/frontend/analytics.ts
+++ b/ui/src/core/analytics_impl.ts
@@ -13,12 +13,11 @@
// limitations under the License.
import {ErrorDetails} from '../base/logging';
-import {getCurrentChannel} from '../common/channels';
+import {getCurrentChannel} from './channels';
import {VERSION} from '../gen/perfetto_version';
-import {globals} from './globals';
-import {Router} from '../core/router';
+import {Router} from './router';
+import {Analytics, TraceCategories} from '../public/analytics';
-type TraceCategories = 'Trace Actions' | 'Record Trace' | 'User Actions';
const ANALYTICS_ID = 'G-BD89KT2P3C';
const PAGE_TITLE = 'no-page-title';
@@ -61,7 +60,15 @@
}
}
-export function initAnalytics() {
+// Interface exposed only to core (for the initialize method).
+export interface AnalyticsInternal extends Analytics {
+ initialize(isInternalUser: boolean): void;
+}
+
+export function initAnalytics(
+ testingMode: boolean,
+ embeddedMode: boolean,
+): AnalyticsInternal {
// Only initialize logging on the official site and on localhost (to catch
// analytics bugs when testing locally).
// Skip analytics is the fragment has "testing=1", this is used by UI tests.
@@ -70,8 +77,8 @@
if (
(window.location.origin.startsWith('http://localhost:') ||
window.location.origin.endsWith('.perfetto.dev')) &&
- !globals.testing &&
- !globals.embeddedMode
+ !testingMode &&
+ !embeddedMode
) {
return new AnalyticsImpl();
}
@@ -84,17 +91,8 @@
gtag: (command: string, event: string | Date, args?: {}) => void;
};
-export interface Analytics {
- initialize(): void;
- updatePath(_: string): void;
- logEvent(category: TraceCategories | null, event: string): void;
- logError(err: ErrorDetails): void;
- isEnabled(): boolean;
-}
-
-class NullAnalytics implements Analytics {
- initialize() {}
- updatePath(_: string) {}
+class NullAnalytics implements AnalyticsInternal {
+ initialize(_: boolean) {}
logEvent(_category: TraceCategories | null, _event: string) {}
logError(_err: ErrorDetails) {}
isEnabled(): boolean {
@@ -102,7 +100,7 @@
}
}
-class AnalyticsImpl implements Analytics {
+class AnalyticsImpl implements AnalyticsInternal {
private initialized_ = false;
constructor() {
@@ -128,7 +126,7 @@
// This is callled only after the script that sets isInternalUser loads.
// It is fine to call updatePath() and log*() functions before initialize().
// The gtag() function internally enqueues all requests into |dataLayer|.
- initialize() {
+ initialize(isInternalUser: boolean) {
if (this.initialized_) return;
this.initialized_ = true;
const script = document.createElement('script');
@@ -138,7 +136,7 @@
const route = window.location.href;
console.log(
`GA initialized. route=${route}`,
- `isInternalUser=${globals.isInternalUser}`,
+ `isInternalUser=${isInternalUser}`,
);
// GA's recommendation for SPAs is to disable automatic page views and
// manually send page_view events. See:
@@ -151,19 +149,16 @@
page_referrer: getReferrer(),
send_page_view: false,
page_title: PAGE_TITLE,
- perfetto_is_internal_user: globals.isInternalUser ? '1' : '0',
+ perfetto_is_internal_user: isInternalUser ? '1' : '0',
perfetto_version: VERSION,
// Release channel (canary, stable, autopush)
perfetto_channel: getCurrentChannel(),
// Referrer *if overridden* via the query string else empty string.
perfetto_referrer_override: getReferrerOverride() ?? '',
});
- this.updatePath(route);
- }
- updatePath(path: string) {
gtagGlobals.gtag('event', 'page_view', {
- page_path: path,
+ page_path: route,
page_title: PAGE_TITLE,
});
}
diff --git a/ui/src/core/app_impl.ts b/ui/src/core/app_impl.ts
index 304e659..073f506 100644
--- a/ui/src/core/app_impl.ts
+++ b/ui/src/core/app_impl.ts
@@ -28,6 +28,7 @@
import {loadTrace} from './load_trace';
import {CORE_PLUGIN_ID} from './plugin_manager';
import {Router} from './router';
+import {AnalyticsInternal, initAnalytics} from './analytics_impl';
// The args that frontend/index.ts passes when calling AppImpl.initialize().
// This is to deal with injections that would otherwise cause circular deps.
@@ -51,12 +52,15 @@
export class AppContext {
readonly commandMgr = new CommandManagerImpl();
readonly omniboxMgr = new OmniboxManagerImpl();
- readonly sidebarMgr = new SidebarManagerImpl();
+ readonly sidebarMgr: SidebarManagerImpl;
readonly pluginMgr: PluginManager;
+ readonly analytics: AnalyticsInternal;
newEngineMode: NewEngineMode = 'USE_HTTP_RPC_IF_AVAILABLE';
initialRouteArgs: RouteArgs;
isLoadingTrace = false; // Set when calling openTrace().
readonly initArgs: AppInitArgs;
+ readonly embeddedMode: boolean;
+ readonly testingMode: boolean;
// This is normally empty and is injected with extra google-internal packages
// via is_internal_user.js
@@ -67,7 +71,12 @@
constructor(initArgs: AppInitArgs) {
this.initArgs = initArgs;
this.initialRouteArgs = initArgs.initialRouteArgs;
-
+ this.sidebarMgr = new SidebarManagerImpl(this.initialRouteArgs.hideSidebar);
+ this.embeddedMode = this.initialRouteArgs.mode === 'embedded';
+ this.testingMode =
+ self.location !== undefined &&
+ self.location.search.indexOf('testing=1') >= 0;
+ this.analytics = initAnalytics(this.testingMode, this.embeddedMode);
// The rootUrl should point to 'https://ui.perfetto.dev/v1.2.3/'. It's
// allowed to be empty only in unittests, because there there is no bundle
// hence no concrete root.
@@ -136,6 +145,10 @@
return this.appCtx.pluginMgr;
}
+ get analytics(): AnalyticsInternal {
+ return this.appCtx.analytics;
+ }
+
get trace(): TraceImpl | undefined {
return this.currentTrace;
}
@@ -205,6 +218,14 @@
}
}
+ get embeddedMode(): boolean {
+ return this.appCtx.embeddedMode;
+ }
+
+ get testingMode(): boolean {
+ return this.appCtx.testingMode;
+ }
+
closeCurrentTrace() {
// This method should be called only on the core instance, plugins don't
// have access to openTrace*() methods.
diff --git a/ui/src/common/channels.ts b/ui/src/core/channels.ts
similarity index 97%
rename from ui/src/common/channels.ts
rename to ui/src/core/channels.ts
index d071628..22cf8e0 100644
--- a/ui/src/common/channels.ts
+++ b/ui/src/core/channels.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import {raf} from '../core/raf_scheduler';
+import {raf} from './raf_scheduler';
export const DEFAULT_CHANNEL = 'stable';
const CHANNEL_KEY = 'perfettoUiChannel';
diff --git a/ui/src/core/sidebar_manager.ts b/ui/src/core/sidebar_manager.ts
index 96d492b..18743af 100644
--- a/ui/src/core/sidebar_manager.ts
+++ b/ui/src/core/sidebar_manager.ts
@@ -14,11 +14,26 @@
import {Registry} from '../base/registry';
import {SidebarManager, SidebarMenuItem} from '../public/sidebar';
+import {raf} from './raf_scheduler';
export class SidebarManagerImpl implements SidebarManager {
+ private _sidebarHidden = false;
readonly menuItems = new Registry<SidebarMenuItem>((m) => m.commandId);
+ constructor(sidebarHidden?: boolean) {
+ this._sidebarHidden = sidebarHidden ?? false;
+ }
+
addMenuItem(menuItem: SidebarMenuItem): Disposable {
return this.menuItems.register(menuItem);
}
+
+ get sidebarHidden() {
+ return this._sidebarHidden;
+ }
+
+ set sidebarHidden(value: boolean) {
+ this._sidebarHidden = value;
+ raf.scheduleFullRedraw();
+ }
}
diff --git a/ui/src/core/trace_impl.ts b/ui/src/core/trace_impl.ts
index 06a9245..d8a14cc 100644
--- a/ui/src/core/trace_impl.ts
+++ b/ui/src/core/trace_impl.ts
@@ -42,6 +42,7 @@
import {ThreadDesc, ThreadMap} from '../public/threads';
import {RouteArgs} from '../public/route_schema';
import {CORE_PLUGIN_ID} from './plugin_manager';
+import {Analytics} from '../public/analytics';
/**
* Handles the per-trace state of the UI
@@ -349,6 +350,10 @@
return this.appImpl.plugins;
}
+ get analytics(): Analytics {
+ return this.appImpl.analytics;
+ }
+
get initialRouteArgs(): RouteArgs {
return this.appImpl.initialRouteArgs;
}
diff --git a/ui/src/core_plugins/commands/index.ts b/ui/src/core_plugins/commands/index.ts
index ecf31f3..f539cd3 100644
--- a/ui/src/core_plugins/commands/index.ts
+++ b/ui/src/core_plugins/commands/index.ts
@@ -336,13 +336,16 @@
return;
}
- globals.logging.logEvent('Trace Actions', 'Open trace from file');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Open trace from file');
AppImpl.instance.openTraceFromFile(file);
}
async function openWithLegacyUi(file: File) {
// Switch back to the old catapult UI.
- globals.logging.logEvent('Trace Actions', 'Open trace in Legacy UI');
+ AppImpl.instance.analytics.logEvent(
+ 'Trace Actions',
+ 'Open trace in Legacy UI',
+ );
if (await isLegacyTrace(file)) {
openFileWithLegacyTraceViewer(file);
return;
diff --git a/ui/src/core_plugins/example_traces/index.ts b/ui/src/core_plugins/example_traces/index.ts
index 782ddad..bcbb875 100644
--- a/ui/src/core_plugins/example_traces/index.ts
+++ b/ui/src/core_plugins/example_traces/index.ts
@@ -13,7 +13,6 @@
// limitations under the License.
import {AppImpl} from '../../core/app_impl';
-import {globals} from '../../frontend/globals';
import {App} from '../../public/app';
import {PerfettoPlugin, PluginDescriptor} from '../../public/plugin';
@@ -23,8 +22,8 @@
const EXAMPLE_CHROME_TRACE_URL =
'https://storage.googleapis.com/perfetto-misc/chrome_example_wikipedia.perfetto_trace.gz';
-function openTraceUrl(url: string): void {
- globals.logging.logEvent('Trace Actions', 'Open example trace');
+function openTraceUrl(app: App, url: string): void {
+ app.analytics.logEvent('Trace Actions', 'Open example trace');
AppImpl.instance.openTraceFromUrl(url);
}
@@ -36,7 +35,7 @@
id: OPEN_EXAMPLE_ANDROID_TRACE_COMMAND_ID,
name: 'Open Android example',
callback: () => {
- openTraceUrl(EXAMPLE_ANDROID_TRACE_URL);
+ openTraceUrl(ctx, EXAMPLE_ANDROID_TRACE_URL);
},
});
ctx.sidebar.addMenuItem({
@@ -51,7 +50,7 @@
id: OPEN_EXAMPLE_CHROME_TRACE_COMMAND_ID,
name: 'Open Chrome example',
callback: () => {
- openTraceUrl(EXAMPLE_CHROME_TRACE_URL);
+ openTraceUrl(ctx, EXAMPLE_CHROME_TRACE_URL);
},
});
ctx.sidebar.addMenuItem({
diff --git a/ui/src/frontend/cookie_consent.ts b/ui/src/frontend/cookie_consent.ts
index a869466..d7cfd84 100644
--- a/ui/src/frontend/cookie_consent.ts
+++ b/ui/src/frontend/cookie_consent.ts
@@ -14,7 +14,7 @@
import m from 'mithril';
import {raf} from '../core/raf_scheduler';
-import {globals} from './globals';
+import {AppImpl} from '../core/app_impl';
const COOKIE_ACK_KEY = 'cookieAck';
@@ -24,7 +24,7 @@
oninit() {
this.showCookieConsent = true;
if (
- !globals.logging.isEnabled() ||
+ !AppImpl.instance.analytics.isEnabled() ||
localStorage.getItem(COOKIE_ACK_KEY) === 'true'
) {
this.showCookieConsent = false;
diff --git a/ui/src/frontend/explore_page.ts b/ui/src/frontend/explore_page.ts
new file mode 100644
index 0000000..6a53323
--- /dev/null
+++ b/ui/src/frontend/explore_page.ts
@@ -0,0 +1,22 @@
+// Copyright (C) 2024 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.
+
+import m from 'mithril';
+import {PageWithTraceAttrs} from './pages';
+
+export class ExplorePage implements m.ClassComponent<PageWithTraceAttrs> {
+ view() {
+ return m('.explore-page');
+ }
+}
diff --git a/ui/src/frontend/flags_page.ts b/ui/src/frontend/flags_page.ts
index c5033ab..cac670d 100644
--- a/ui/src/frontend/flags_page.ts
+++ b/ui/src/frontend/flags_page.ts
@@ -13,7 +13,7 @@
// limitations under the License.
import m from 'mithril';
-import {channelChanged, getNextChannel, setChannel} from '../common/channels';
+import {channelChanged, getNextChannel, setChannel} from '../core/channels';
import {featureFlags, Flag, OverrideState} from '../core/feature_flags';
import {raf} from '../core/raf_scheduler';
import {PageAttrs} from '../core/router';
diff --git a/ui/src/frontend/globals.ts b/ui/src/frontend/globals.ts
index 44a9895..347bb91 100644
--- a/ui/src/frontend/globals.ts
+++ b/ui/src/frontend/globals.ts
@@ -26,7 +26,6 @@
import {raf} from '../core/raf_scheduler';
import {ServiceWorkerController} from './service_worker_controller';
import {HttpRpcState} from '../trace_processor/http_rpc_engine';
-import type {Analytics} from './analytics';
import {getServingRoot} from '../base/http_utils';
import {Workspace} from '../public/workspace';
import {TraceImpl} from '../core/trace_impl';
@@ -41,11 +40,9 @@
*/
class Globals {
private _initialFakeTrace?: TraceImpl;
- private _testing = false;
private _dispatchMultiple?: DispatchMultiple = undefined;
private _store = createStore<State>(createEmptyState());
private _serviceWorkerController?: ServiceWorkerController = undefined;
- private _logging?: Analytics = undefined;
private _isInternalUser: boolean | undefined = undefined;
// TODO(hjd): Unify trackDataStore, queryResults, overviewStore, threads.
@@ -53,8 +50,6 @@
private _bufferUsage?: number = undefined;
private _recordingLog?: string = undefined;
private _jobStatus?: Map<ConversionJobName, ConversionJobStatus> = undefined;
- private _embeddedMode?: boolean = undefined;
- private _hideSidebar?: boolean = undefined;
httpRpcState: HttpRpcState = {connected: false};
showPanningHint = false;
permalinkHash?: string;
@@ -62,10 +57,7 @@
// TODO(hjd): Remove once we no longer need to update UUID on redraw.
private _publishRedraw?: () => void = undefined;
- initialize(
- dispatchMultiple: DispatchMultiple,
- initAnalytics: () => Analytics,
- ) {
+ initialize(dispatchMultiple: DispatchMultiple) {
this._dispatchMultiple = dispatchMultiple;
// TODO(primiano): we do this to avoid making all our members possibly
@@ -82,17 +74,6 @@
this._serviceWorkerController = new ServiceWorkerController(
getServingRoot(),
);
- this._testing =
- /* eslint-disable @typescript-eslint/strict-boolean-expressions */
- self.location && self.location.search.indexOf('testing=1') >= 0;
- /* eslint-enable */
-
- // TODO(stevegolton): This is a mess. We should just inject this object in,
- // instead of passing in a function. The only reason this is done like this
- // is because the current implementation of initAnalytics depends on the
- // state of globals.testing, so this needs to be set before we run the
- // function.
- this._logging = initAnalytics();
// TODO(hjd): Unify trackDataStore, queryResults, overviewStore, threads.
// TODO(primiano): for posterity: these assignments below are completely
@@ -143,10 +124,6 @@
return this.trace.search;
}
- get logging() {
- return assertExists(this._logging);
- }
-
get serviceWorkerController() {
return assertExists(this._serviceWorkerController);
}
@@ -196,22 +173,6 @@
return this._jobStatus;
}
- get embeddedMode(): boolean {
- return !!this._embeddedMode;
- }
-
- set embeddedMode(value: boolean) {
- this._embeddedMode = value;
- }
-
- get hideSidebar(): boolean {
- return !!this._hideSidebar;
- }
-
- set hideSidebar(value: boolean) {
- this._hideSidebar = value;
- }
-
setBufferUsage(bufferUsage: number) {
this._bufferUsage = bufferUsage;
}
@@ -247,10 +208,6 @@
raf.scheduleFullRedraw();
}
- get testing() {
- return this._testing;
- }
-
// Used when switching to the legacy TraceViewer UI.
// Most resources are cleaned up by replacing the current |window| object,
// however pending RAFs and workers seem to outlive the |window| and need to
diff --git a/ui/src/frontend/help_modal.ts b/ui/src/frontend/help_modal.ts
index 603d6df..bc1a4dd 100644
--- a/ui/src/frontend/help_modal.ts
+++ b/ui/src/frontend/help_modal.ts
@@ -25,9 +25,10 @@
import {KeyMapping} from './pan_and_zoom_handler';
import {HotkeyGlyphs} from '../widgets/hotkey_glyphs';
import {assertExists} from '../base/logging';
+import {AppImpl} from '../core/app_impl';
export function toggleHelp() {
- globals.logging.logEvent('User Actions', 'Show help');
+ AppImpl.instance.analytics.logEvent('User Actions', 'Show help');
showHelp();
}
@@ -76,31 +77,6 @@
}
view(_: m.Vnode): m.Children {
- const queryPageInstructions = globals.hideSidebar
- ? []
- : [
- m('h2', 'Making SQL queries from the query page'),
- m(
- 'table',
- m(
- 'tr',
- m('td', keycap('Ctrl'), ' + ', keycap('Enter')),
- m('td', 'Execute query'),
- ),
- m(
- 'tr',
- m(
- 'td',
- keycap('Ctrl'),
- ' + ',
- keycap('Enter'),
- ' (with selection)',
- ),
- m('td', 'Execute selection'),
- ),
- ),
- ];
-
return m(
'.help',
m('h2', 'Navigation'),
@@ -163,7 +139,20 @@
),
),
),
- ...queryPageInstructions,
+ m('h2', 'Making SQL queries from the query page'),
+ m(
+ 'table',
+ m(
+ 'tr',
+ m('td', keycap('Ctrl'), ' + ', keycap('Enter')),
+ m('td', 'Execute query'),
+ ),
+ m(
+ 'tr',
+ m('td', keycap('Ctrl'), ' + ', keycap('Enter'), ' (with selection)'),
+ m('td', 'Execute selection'),
+ ),
+ ),
m('h2', 'Command Hotkeys'),
m(
'table',
diff --git a/ui/src/frontend/home_page.ts b/ui/src/frontend/home_page.ts
index 4c7d265..a5f3ac9 100644
--- a/ui/src/frontend/home_page.ts
+++ b/ui/src/frontend/home_page.ts
@@ -13,7 +13,7 @@
// limitations under the License.
import m from 'mithril';
-import {channelChanged, getNextChannel, setChannel} from '../common/channels';
+import {channelChanged, getNextChannel, setChannel} from '../core/channels';
import {Anchor} from '../widgets/anchor';
import {HotkeyGlyphs} from '../widgets/hotkey_glyphs';
import {globals} from './globals';
diff --git a/ui/src/frontend/index.ts b/ui/src/frontend/index.ts
index 3e4d963..93f0c71 100644
--- a/ui/src/frontend/index.ts
+++ b/ui/src/frontend/index.ts
@@ -36,6 +36,7 @@
import {initCssConstants} from './css_constants';
import {registerDebugGlobals} from './debug';
import {maybeShowErrorDialog} from './error_dialog';
+import {ExplorePage} from './explore_page';
import {installFileDropHandler} from './file_drop_handler';
import {FlagsPage} from './flags_page';
import {globals} from './globals';
@@ -56,7 +57,6 @@
import {WidgetsPage} from './widgets_page';
import {HttpRpcEngine} from '../trace_processor/http_rpc_engine';
import {showModal} from '../widgets/modal';
-import {initAnalytics} from './analytics';
import {IdleDetector} from './idle_detector';
import {IdleDetectorWindow} from './idle_detector_interface';
import {pageWithTrace} from './pages';
@@ -238,19 +238,22 @@
// Load the script to detect if this is a Googler (see comments on globals.ts)
// and initialize GA after that (or after a timeout if something goes wrong).
+ function initAnalyticsOnScriptLoad() {
+ AppImpl.instance.analytics.initialize(globals.isInternalUser);
+ }
const script = document.createElement('script');
script.src =
'https://storage.cloud.google.com/perfetto-ui-internal/is_internal_user.js';
script.async = true;
- script.onerror = () => globals.logging.initialize();
- script.onload = () => globals.logging.initialize();
- setTimeout(() => globals.logging.initialize(), 5000);
+ script.onerror = () => initAnalyticsOnScriptLoad();
+ script.onload = () => initAnalyticsOnScriptLoad();
+ setTimeout(() => initAnalyticsOnScriptLoad(), 5000);
document.head.append(script, css);
// Route errors to both the UI bugreport dialog and Analytics (if enabled).
addErrorHandler(maybeShowErrorDialog);
- addErrorHandler((e) => globals.logging.logError(e));
+ addErrorHandler((e) => AppImpl.instance.analytics.logError(e));
// Add Error handlers for JS error and for uncaught exceptions in promises.
window.addEventListener('error', (e) => reportError(e));
@@ -262,11 +265,7 @@
initController(extensionLocalChannel.port1);
// These need to be set before globals.initialize.
- const route = Router.parseUrl(window.location.href);
- globals.embeddedMode = route.args.mode === 'embedded';
- globals.hideSidebar = route.args.hideSidebar === true;
-
- globals.initialize(stateActionDispatcher, initAnalytics);
+ globals.initialize(stateActionDispatcher);
globals.serviceWorkerController.install();
@@ -289,7 +288,7 @@
cssLoadPromise.then(() => onCssLoaded());
- if (globals.testing) {
+ if (AppImpl.instance.testingMode) {
document.body.classList.add('testing');
}
@@ -306,6 +305,7 @@
const router = new Router({
'/': HomePage,
+ '/explore': ExplorePage,
'/flags': FlagsPage,
'/info': pageWithTrace(TraceInfoPage),
'/insights': pageWithTrace(InsightsPage),
@@ -326,8 +326,8 @@
if (
(location.origin.startsWith('http://localhost:') ||
location.origin.startsWith('http://127.0.0.1:')) &&
- !globals.embeddedMode &&
- !globals.testing
+ !AppImpl.instance.embeddedMode &&
+ !AppImpl.instance.testingMode
) {
initLiveReload();
}
@@ -355,7 +355,7 @@
maybeChangeRpcPortFromFragment();
CheckHttpRpcConnection().then(() => {
const route = Router.parseUrl(window.location.href);
- if (!globals.embeddedMode) {
+ if (!AppImpl.instance.embeddedMode) {
installFileDropHandler();
}
diff --git a/ui/src/frontend/record_page.ts b/ui/src/frontend/record_page.ts
index 91d38c9..49f2f75 100644
--- a/ui/src/frontend/record_page.ts
+++ b/ui/src/frontend/record_page.ts
@@ -56,6 +56,7 @@
import {RecordingSettings} from './recording/recording_settings';
import {EtwSettings} from './recording/etw_settings';
import {createPermalink} from './permalink';
+import {AppImpl} from '../core/app_impl';
export const PERSIST_CONFIG_FLAG = featureFlags.register({
id: 'persistConfigsUI',
@@ -598,7 +599,10 @@
isChromeTarget(target) ||
isWindowsTarget(target)
) {
- globals.logging.logEvent('Record Trace', `Record trace (${target.os})`);
+ AppImpl.instance.analytics.logEvent(
+ 'Record Trace',
+ `Record trace (${target.os})`,
+ );
globals.dispatch(Actions.startRecording({}));
}
}
diff --git a/ui/src/frontend/sidebar.ts b/ui/src/frontend/sidebar.ts
index 0a5537a..0218d65 100644
--- a/ui/src/frontend/sidebar.ts
+++ b/ui/src/frontend/sidebar.ts
@@ -15,7 +15,7 @@
import m from 'mithril';
import {assertExists, assertTrue} from '../base/logging';
import {isString} from '../base/object_utils';
-import {getCurrentChannel} from '../common/channels';
+import {getCurrentChannel} from '../core/channels';
import {TRACE_SUFFIX} from '../common/constants';
import {ConversionJobStatus} from '../common/conversion_jobs';
import {
@@ -95,6 +95,13 @@
defaultValue: true,
});
+const EXPLORE_PAGE_IN_NAV_FLAG = featureFlags.register({
+ id: 'showExplorePageInNav',
+ name: 'Show explore page',
+ description: 'Show a link to the explore page in the side bar.',
+ defaultValue: false,
+});
+
export interface OptionalTraceAttrs {
trace?: Trace;
}
@@ -161,22 +168,25 @@
expanded: true,
items: [
...insertSidebarMenuitems('navigation'),
- {t: 'Record new trace', a: navigateRecord, i: 'fiber_smart_record'},
+ {
+ t: 'Record new trace',
+ a: (e: Event) => navigateToPage(e, 'record'),
+ i: 'fiber_smart_record',
+ },
{
t: 'Widgets',
- a: navigateWidgets,
+ a: (e: Event) => navigateToPage(e, 'widgets'),
i: 'widgets',
isVisible: () => WIDGETS_PAGE_IN_NAV_FLAG.get(),
},
{
t: 'Plugins',
- a: navigatePlugins,
+ a: (e: Event) => navigateToPage(e, 'plugins'),
i: 'extension',
isVisible: () => PLUGINS_PAGE_IN_NAV_FLAG.get(),
},
],
},
-
{
title: 'Current Trace',
summary: 'Actions on the current trace',
@@ -184,7 +194,11 @@
hideIfNoTraceLoaded: true,
appendOpenedTraceTitle: true,
items: [
- {t: 'Show timeline', a: navigateViewer, i: 'line_style'},
+ {
+ t: 'Show timeline',
+ a: (e: Event) => navigateToPage(e, 'viewer'),
+ i: 'line_style',
+ },
{
t: 'Share',
a: handleShareTrace,
@@ -200,21 +214,39 @@
i: 'file_download',
checkDownloadDisabled: true,
},
- {t: 'Query (SQL)', a: navigateQuery, i: 'database'},
+ {
+ t: 'Query (SQL)',
+ a: (e: Event) => navigateToPage(e, 'query'),
+ i: 'database',
+ },
+ {
+ t: 'Explore',
+ a: (e: Event) => navigateToPage(e, 'explore'),
+ i: 'data_exploration',
+ isVisible: () => EXPLORE_PAGE_IN_NAV_FLAG.get(),
+ },
{
t: 'Insights',
- a: navigateInsights,
+ a: (e: Event) => navigateToPage(e, 'insights'),
i: 'insights',
isVisible: () => INSIGHTS_PAGE_IN_NAV_FLAG.get(),
},
{
t: 'Viz',
- a: navigateViz,
+ a: (e: Event) => navigateToPage(e, 'viz'),
i: 'area_chart',
isVisible: () => VIZ_PAGE_IN_NAV_FLAG.get(),
},
- {t: 'Metrics', a: navigateMetrics, i: 'speed'},
- {t: 'Info and stats', a: navigateInfo, i: 'info'},
+ {
+ t: 'Metrics',
+ a: (e: Event) => navigateToPage(e, 'metrics'),
+ i: 'speed',
+ },
+ {
+ t: 'Info and stats',
+ a: (e: Event) => navigateToPage(e, 'info'),
+ i: 'info',
+ },
],
},
@@ -269,7 +301,11 @@
items: [
{t: 'Keyboard shortcuts', a: openHelp, i: 'help'},
{t: 'Documentation', a: 'https://perfetto.dev/docs', i: 'find_in_page'},
- {t: 'Flags', a: navigateFlags, i: 'emoji_flags'},
+ {
+ t: 'Flags',
+ a: (e: Event) => navigateToPage(e, 'flags'),
+ i: 'emoji_flags',
+ },
{
t: 'Report a bug',
a: getBugReportUrl(),
@@ -338,7 +374,10 @@
function openCurrentTraceWithOldUI(e: Event) {
e.preventDefault();
assertTrue(isTraceLoaded());
- globals.logging.logEvent('Trace Actions', 'Open current trace in legacy UI');
+ AppImpl.instance.analytics.logEvent(
+ 'Trace Actions',
+ 'Open current trace in legacy UI',
+ );
if (!isTraceLoaded()) return;
getCurrentTrace()
.then((file) => {
@@ -352,7 +391,7 @@
function convertTraceToSystrace(e: Event) {
e.preventDefault();
assertTrue(isTraceLoaded());
- globals.logging.logEvent('Trace Actions', 'Convert to .systrace');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Convert to .systrace');
if (!isTraceLoaded()) return;
getCurrentTrace()
.then((file) => {
@@ -366,7 +405,7 @@
function convertTraceToJson(e: Event) {
e.preventDefault();
assertTrue(isTraceLoaded());
- globals.logging.logEvent('Trace Actions', 'Convert to .json');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Convert to .json');
if (!isTraceLoaded()) return;
getCurrentTrace()
.then((file) => {
@@ -377,54 +416,9 @@
});
}
-function navigateRecord(e: Event) {
+function navigateToPage(e: Event, pageName: string) {
e.preventDefault();
- Router.navigate('#!/record');
-}
-
-function navigateWidgets(e: Event) {
- e.preventDefault();
- Router.navigate('#!/widgets');
-}
-
-function navigatePlugins(e: Event) {
- e.preventDefault();
- Router.navigate('#!/plugins');
-}
-
-function navigateQuery(e: Event) {
- e.preventDefault();
- Router.navigate('#!/query');
-}
-
-function navigateInsights(e: Event) {
- e.preventDefault();
- Router.navigate('#!/insights');
-}
-
-function navigateViz(e: Event) {
- e.preventDefault();
- Router.navigate('#!/viz');
-}
-
-function navigateFlags(e: Event) {
- e.preventDefault();
- Router.navigate('#!/flags');
-}
-
-function navigateMetrics(e: Event) {
- e.preventDefault();
- Router.navigate('#!/metrics');
-}
-
-function navigateInfo(e: Event) {
- e.preventDefault();
- Router.navigate('#!/info');
-}
-
-function navigateViewer(e: Event) {
- e.preventDefault();
- Router.navigate('#!/viewer');
+ Router.navigate(`#!/${pageName}`);
}
function handleShareTrace(e: Event) {
@@ -435,7 +429,7 @@
function downloadTrace(e: Event, trace: Trace) {
e.preventDefault();
if (!isDownloadable() || !isTraceLoaded()) return;
- globals.logging.logEvent('Trace Actions', 'Download trace');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Download trace');
let url = '';
let fileName = `trace${TRACE_SUFFIX}`;
@@ -475,7 +469,7 @@
function recordMetatrace(e: Event, engine: Engine) {
e.preventDefault();
- globals.logging.logEvent('Trace Actions', 'Record metatrace');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Record metatrace');
if (!highPrecisionTimersAvailable()) {
const PROMPT = `High-precision timers are not available to WASM trace processor yet.
@@ -513,7 +507,7 @@
async function finaliseMetatrace(e: Event, engine: Engine) {
e.preventDefault();
- globals.logging.logEvent('Trace Actions', 'Finalise metatrace');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Finalise metatrace');
const jsEvents = disableMetatracingAndGetTrace();
@@ -699,7 +693,7 @@
export class Sidebar implements m.ClassComponent<OptionalTraceAttrs> {
private _redrawWhileAnimating = new Animation(() => raf.scheduleFullRedraw());
view({attrs}: m.CVnode<OptionalTraceAttrs>) {
- if (globals.hideSidebar) return null;
+ if (AppImpl.instance.sidebar.sidebarHidden) return null;
const vdomSections = [];
for (const section of getSections(attrs.trace)) {
if (section.hideIfNoTraceLoaded && !isTraceLoaded()) continue;
diff --git a/ui/src/frontend/topbar.ts b/ui/src/frontend/topbar.ts
index 6a02655..50a00e8 100644
--- a/ui/src/frontend/topbar.ts
+++ b/ui/src/frontend/topbar.ts
@@ -44,7 +44,7 @@
// does not persist for iFrames. The host is responsible for communicating
// to users that they can press '?' for help.
if (
- globals.embeddedMode ||
+ AppImpl.instance.embeddedMode ||
dismissed === 'true' ||
!globals.showPanningHint
) {
@@ -77,7 +77,7 @@
view({attrs}: m.CVnode<TraceImplAttrs>) {
const trace = attrs.trace;
- if (globals.embeddedMode) return;
+ if (AppImpl.instance.embeddedMode) return;
const mode = AppImpl.instance.omnibox.mode;
const totErrors = trace.traceInfo.importErrors + trace.loadingErrors.length;
diff --git a/ui/src/frontend/trace_attrs.ts b/ui/src/frontend/trace_attrs.ts
index 785b327..b996265 100644
--- a/ui/src/frontend/trace_attrs.ts
+++ b/ui/src/frontend/trace_attrs.ts
@@ -73,7 +73,7 @@
`The trace will be accessible by anybody with the permalink.`,
);
if (result) {
- globals.logging.logEvent('Trace Actions', 'Create permalink');
+ AppImpl.instance.analytics.logEvent('Trace Actions', 'Create permalink');
createPermalink({mode: 'APP_STATE'});
}
}
diff --git a/ui/src/frontend/ui_main.ts b/ui/src/frontend/ui_main.ts
index 8bab2f8..c1d1050 100644
--- a/ui/src/frontend/ui_main.ts
+++ b/ui/src/frontend/ui_main.ts
@@ -744,7 +744,7 @@
if (
!isJsonTrace ||
window.localStorage.getItem(SHOWN_JSON_WARNING_KEY) === 'true' ||
- globals.embeddedMode
+ AppImpl.instance.embeddedMode
) {
// When in embedded mode, the host app will control which trace format
// it passes to Perfetto, so we don't need to show this warning.
diff --git a/ui/src/public/analytics.ts b/ui/src/public/analytics.ts
new file mode 100644
index 0000000..653b1ea
--- /dev/null
+++ b/ui/src/public/analytics.ts
@@ -0,0 +1,23 @@
+// Copyright (C) 2024 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.
+
+import {ErrorDetails} from '../base/logging';
+
+export type TraceCategories = 'Trace Actions' | 'Record Trace' | 'User Actions';
+
+export interface Analytics {
+ logEvent(category: TraceCategories | null, event: string): void;
+ logError(err: ErrorDetails): void;
+ isEnabled(): boolean;
+}
diff --git a/ui/src/public/app.ts b/ui/src/public/app.ts
index 511d0d7..7b23753 100644
--- a/ui/src/public/app.ts
+++ b/ui/src/public/app.ts
@@ -16,6 +16,7 @@
import {CommandManager} from './command';
import {OmniboxManager} from './omnibox';
import {SidebarManager} from './sidebar';
+import {Analytics} from './analytics';
/**
* The API endpoint to interact programmaticaly with the UI before a trace has
@@ -30,6 +31,7 @@
readonly commands: CommandManager;
readonly sidebar: SidebarManager;
readonly omnibox: OmniboxManager;
+ readonly analytics: Analytics;
/**
* The parsed querystring passed when starting the app, before any navigation
diff --git a/ui/src/public/lib/query_table/query_table.ts b/ui/src/public/lib/query_table/query_table.ts
index a06657d..86afec1 100644
--- a/ui/src/public/lib/query_table/query_table.ts
+++ b/ui/src/public/lib/query_table/query_table.ts
@@ -27,6 +27,7 @@
import {globals} from '../../../frontend/globals';
import {Router} from '../../../core/router';
import {scrollTo} from '../../scroll_helper';
+import {AppImpl} from '../../../core/app_impl';
interface QueryTableRowAttrs {
row: Row;
@@ -232,7 +233,7 @@
return 'Query - running';
}
const result = resp.error ? 'error' : `${resp.rows.length} rows`;
- if (globals.testing) {
+ if (AppImpl.instance.testingMode) {
// Omit the duration in tests, they cause screenshot diff failures.
return `Query result (${result})`;
}