Snap for 11268588 from c6ec9c76d5b90161454dcb6e91ea2064a090fc96 to mainline-art-release

Change-Id: I2bd2690f69f24672ee2cc1e741d149e36d88313c
diff --git a/stats/Android.bp b/stats/Android.bp
index f07af11..e5e9317 100644
--- a/stats/Android.bp
+++ b/stats/Android.bp
@@ -145,6 +145,7 @@
     "atoms/ondevicepersonalization/*.proto",
     "atoms/federatedcompute/*.proto",
     "atoms/sdksandbox/*.proto",
+    "atoms/threadnetwork/*.proto",
 ]
 
 cc_library_host_shared {
diff --git a/stats/atoms.proto b/stats/atoms.proto
index 6972b32..788a369 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -1051,6 +1051,9 @@
     extensions 722; // WifiIsUnusableReported wifi_is_unusable_reported
     extensions 723; // WifiApCapabilitiesReported wifi_ap_capabilities_reported
     extensions 735; // SandboxActivityEventOccurred sandbox_activity_event_occurred
+    extensions 738; // ThreadnetworkTelemetryDataReported threadnetwork_telemetry_data_reported
+    extensions 739; // ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated
+    extensions 740; // ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported
     extensions 752; // StatsSocketLossReported stats_socket_loss_reported
     extensions 756; // AdServicesMeasurementClickVerification ad_services_measurement_click_verification
     extensions 762; // CronetEngineBuilderInitialized cronet_engine_builder_initialized
@@ -1064,6 +1067,10 @@
     extensions 771; // FederatedComputeTrainingEventReported federated_compute_training_event_reported
     extensions 777; // ApfSessionInfoReported apf_session_info_reported
     extensions 778; // IpClientRaInfoReported ip_client_ra_info_reported
+    extensions 779; // NetworkRequestStateChanged network_request_state_changed
+    extensions 783; // NetworkStatsRecorderFileOperated network_stats_recorder_file_operated
+    extensions 784; // MediaProviderDatabaseRollbackReported media_provider_database_rollback_reported
+    extensions 785; // BackupSetupStatusReported backup_setup_status_reported
     extensions 9999; // Atom9999 atom_9999
     // StatsdStats tracks platform atoms with ids up to 900.
     // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
@@ -22501,6 +22508,12 @@
     // values on a given device is determined by how many remotely provisioned
     // component HALs are on a given device. Typically, this is 2-3 HALs.
     optional string remotely_provisioned_component = 6;
+
+    // Cause of the attempt which resulted in these timings.
+    optional RemoteKeyProvisioningAttempt.Cause cause = 7;
+
+    // Indicates success or failure of the provisioning attempt.
+    optional com.android.remoteprovisioner.RemoteKeyProvisioningStatus status = 8;
 }
 
 // Deprecated in U.
diff --git a/stats/atoms/corenetworking/connectivity/connectivity_extension_atoms.proto b/stats/atoms/corenetworking/connectivity/connectivity_extension_atoms.proto
index aec8fe7..ae89113 100644
--- a/stats/atoms/corenetworking/connectivity/connectivity_extension_atoms.proto
+++ b/stats/atoms/corenetworking/connectivity/connectivity_extension_atoms.proto
@@ -23,9 +23,11 @@
 
 import "frameworks/proto_logging/stats/atoms.proto";
 import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/corenetworking/connectivity/enums.proto";
 
 extend Atom {
     optional DailykeepaliveInfoReported daily_keepalive_info_reported = 650 [(module) = "connectivity"];
+    optional NetworkRequestStateChanged network_request_state_changed = 779 [(module) = "connectivity"];
 }
 
 /**
@@ -112,3 +114,32 @@
     // The duration for which the keepalive was active (not suspended)
     optional int32 active_lifetime_msec = 5;
 }
+
+/**
+ * Logs when network request is received and removed, app uid which sent the
+ * request, request capabilities and duration since the request was received.
+ *
+ * For the moment only Wear non Listen network requests are logged.
+ *
+ * Logs from: packages/modules/Connectivity/service/src/com/android/
+ *            server/ConnectivityService.java
+ */
+message NetworkRequestStateChanged {
+    // Uid of the app that sent the request
+    optional int32 uid = 1 [(is_uid) = true];
+
+    // Network request capabilities transport types bitmask
+    optional int32 transport_types = 2;
+
+    // Network request NET_CAPABILITY_NOT_METERED capability
+    optional bool net_capability_not_metered = 3;
+
+    // Network request NET_CAPABILITY_INTERNET capability
+    optional bool net_capability_internet = 4;
+
+    // State of the network request at the point of time the atom was pushed
+    optional android.corenetworking.connectivity.NetworkRequestState state = 5;
+
+    // Duration in millis of the network request since it was received
+    optional int32 duration_ms = 6;
+}
diff --git a/stats/atoms/corenetworking/connectivity/netstats_extension_atoms.proto b/stats/atoms/corenetworking/connectivity/netstats_extension_atoms.proto
new file mode 100644
index 0000000..b07c620
--- /dev/null
+++ b/stats/atoms/corenetworking/connectivity/netstats_extension_atoms.proto
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.corenetworking.connectivity;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/corenetworking/connectivity/enums.proto";
+
+option java_package = "com.android.os.corenetworking.connectivity";
+option java_multiple_files = true;
+
+extend Atom {
+    optional NetworkStatsRecorderFileOperated network_stats_recorder_file_operated = 783 [(module) = "connectivity"];
+}
+
+/**
+ * Logs NetworkStatsRecorder file operation statistics.
+ * Logged from:
+ * packages/modules/Connectivity/service-t/src/com/android/server/net/NetworkStatsRecorder.java
+ */
+message NetworkStatsRecorderFileOperated {
+    // The operation type.
+    optional android.corenetworking.connectivity.RecorderOperationType operation_type = 1;
+
+    // The recorder type.
+    optional android.corenetworking.connectivity.RecorderPrefix recorder_prefix = 2;
+
+    // Index of the file operation since boot.
+    optional int32 operation_index = 3;
+
+    // The operation latency in milli-seconds.
+    optional int32 operation_latency_milli_seconds = 4;
+
+    // The number of files.
+    optional int32 file_count = 5;
+
+    // The total file size in bytes.
+    optional int32 total_file_size_bytes = 6;
+
+    // The number of keys in the files.
+    optional int32 key_count = 7;
+
+    // The number of uids in this files.
+    optional int32 uid_count = 8;
+
+    // The total number of buckets in all NetworkStatsHistory objects.
+    optional int32 total_history_bucket_count = 9;
+
+    // Whether FastDataInput is used.
+    optional android.corenetworking.connectivity.FastDataInputState fast_data_input_state = 10;
+}
diff --git a/stats/atoms/corenetworking/networkstack/apf_extension_atoms.proto b/stats/atoms/corenetworking/networkstack/apf_extension_atoms.proto
index 1bb6cfb..4467d72 100644
--- a/stats/atoms/corenetworking/networkstack/apf_extension_atoms.proto
+++ b/stats/atoms/corenetworking/networkstack/apf_extension_atoms.proto
@@ -37,7 +37,7 @@
     optional android.stats.connectivity.CounterName counter_name = 1;
 
     // The value of APF counter.
-    optional int32 counter_value = 2;
+    optional int64 counter_value = 2;
 }
 
 
@@ -61,8 +61,8 @@
     // The values of all APF counters.
     optional ApfCounterList apf_counter_list = 3 [(log_mode) = MODE_BYTES];
 
-    // The duration of ip client in milliseconds.
-    optional int32 ip_client_session_duration_ms = 4;
+    // The duration of APF session in seconds.
+    optional int32 apf_session_duration_seconds = 4;
 
     // Number of times APF program updated.
     optional int32 num_of_times_apf_program_updated = 5;
diff --git a/stats/atoms/corenetworking/networkstack/ipclient_extension_atoms.proto b/stats/atoms/corenetworking/networkstack/ipclient_extension_atoms.proto
index 63d1047..a984c36 100644
--- a/stats/atoms/corenetworking/networkstack/ipclient_extension_atoms.proto
+++ b/stats/atoms/corenetworking/networkstack/ipclient_extension_atoms.proto
@@ -43,15 +43,15 @@
     // The number of parsing error for RAs (Router Advertisements).
     optional int32 number_of_parsing_error_ras = 3;
 
-    // The lowest router lifetime in seconds.
+    // The lowest router lifetime in seconds, excluding 0.
     optional int32 lowest_router_lifetime_seconds = 4;
 
-    // The lowest valid lifetime of PIO (Prefix Information Option) in seconds.
-    optional int32 lowest_pio_valid_lifetime_seconds = 5;
+    // The lowest valid lifetime of PIO (Prefix Information Option) in seconds, excluding 0.
+    optional int64 lowest_pio_valid_lifetime_seconds = 5;
 
-    // The lowest route lifetime of RIO (Route Information Option) in seconds.
-    optional int32 lowest_rio_route_lifetime_seconds = 6;
+    // The lowest route lifetime of RIO (Route Information Option) in seconds, excluding 0.
+    optional int64 lowest_rio_route_lifetime_seconds = 6;
 
-    // The lowest lifetime of RDNSS (Recursive DNS Server Option) in seconds.
-    optional int32 lowest_rdnss_lifetime_seconds = 7;
+    // The lowest lifetime of RDNSS (Recursive DNS Server Option) in seconds, excluding 0.
+    optional int64 lowest_rdnss_lifetime_seconds = 7;
 }
diff --git a/stats/atoms/providers/mediaprovider/rollback_extension_atoms.proto b/stats/atoms/providers/mediaprovider/rollback_extension_atoms.proto
new file mode 100644
index 0000000..d5e749b
--- /dev/null
+++ b/stats/atoms/providers/mediaprovider/rollback_extension_atoms.proto
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.providers.mediaprovider;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.providers.mediaprovider";
+option java_multiple_files = true;
+
+extend Atom {
+
+    optional MediaProviderDatabaseRollbackReported media_provider_database_rollback_reported = 784 [(module) = "mediaprovider"];
+    optional BackupSetupStatusReported backup_setup_status_reported = 785 [(module) = "mediaprovider"];
+}
+
+/**
+ * Logs when MediaProvider goes through a DB rollback.
+ * Logged from:
+ *   packages/providers/MediaProvider/src/com/android/providers/media/DatabaseHelper.java
+ */
+message MediaProviderDatabaseRollbackReported {
+    enum Database {
+        UNKNOWN = 0;
+        INTERNAL = 1;
+        EXTERNAL = 2;
+    }
+
+    // DB name
+    optional Database database_name = 1;
+}
+
+message BackupSetupStatusReported {
+  enum Status {
+    UNKNOWN = 0;
+    ATTEMPTED = 1;
+    SUCCESS = 2;
+    FAILURE = 3;
+  }
+
+  // Backup status
+  optional Status status = 1;
+
+  enum Volume {
+    UNKNOWN_VOLUME = 0;
+    INTERNAL = 1;
+    EXTERNAL_PRIMARY = 2;
+    PUBLIC = 3;
+  }
+
+  // Volume for which status is captured
+  optional Volume volume = 2;
+}
+
diff --git a/stats/atoms/threadnetwork/threadnetwork_extension_atoms.proto b/stats/atoms/threadnetwork/threadnetwork_extension_atoms.proto
new file mode 100644
index 0000000..24d2d10
--- /dev/null
+++ b/stats/atoms/threadnetwork/threadnetwork_extension_atoms.proto
@@ -0,0 +1,470 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.threadnetwork;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.threadnetwork";
+option java_multiple_files = true;
+
+extend Atom {
+    optional ThreadnetworkTelemetryDataReported threadnetwork_telemetry_data_reported = 738
+    [(module) = "threadnetwork"];
+    optional ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated = 739
+    [(module) = "threadnetwork"];
+    optional ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported = 740
+    [(module) = "threadnetwork"];
+}
+
+// Thread Telemetry data definition.
+message ThreadnetworkTelemetryDataReported {
+  message WpanStats {
+    optional int32 phy_rx = 1;
+    optional int32 phy_tx = 2;
+    optional int32 mac_unicast_rx = 3;
+    optional int32 mac_unicast_tx = 4;
+    optional int32 mac_broadcast_rx = 5;
+    optional int32 mac_broadcast_tx = 6;
+    optional int32 mac_tx_ack_req = 7;
+    optional int32 mac_tx_no_ack_req = 8;
+    optional int32 mac_tx_acked = 9;
+    optional int32 mac_tx_data = 10;
+    optional int32 mac_tx_data_poll = 11;
+    optional int32 mac_tx_beacon = 12;
+    optional int32 mac_tx_beacon_req = 13;
+    optional int32 mac_tx_other_pkt = 14;
+    optional int32 mac_tx_retry = 15;
+    optional int32 mac_rx_data = 16;
+    optional int32 mac_rx_data_poll = 17;
+    optional int32 mac_rx_beacon = 18;
+    optional int32 mac_rx_beacon_req = 19;
+    optional int32 mac_rx_other_pkt = 20;
+    optional int32 mac_rx_filter_whitelist = 21;
+    optional int32 mac_rx_filter_dest_addr = 22;
+    optional int32 mac_tx_fail_cca = 23;
+    optional int32 mac_rx_fail_decrypt = 24;
+    optional int32 mac_rx_fail_no_frame = 25;
+    optional int32 mac_rx_fail_unknown_neighbor = 26;
+    optional int32 mac_rx_fail_invalid_src_addr = 27;
+    optional int32 mac_rx_fail_fcs = 28;
+    optional int32 mac_rx_fail_other = 29;
+    optional int32 ip_tx_success = 30;
+    optional int32 ip_rx_success = 31;
+    optional int32 ip_tx_failure = 32;
+    optional int32 ip_rx_failure = 33;
+    optional uint32 node_type = 34;
+    optional uint32 channel = 35;
+    optional int32 radio_tx_power = 36;
+    optional float mac_cca_fail_rate = 37;
+  }
+
+  message WpanTopoFull {
+    optional uint32 rloc16 = 1;
+    optional uint32 router_id = 2;
+    optional uint32 leader_router_id = 3;
+    optional uint32 leader_rloc16 = 4; // replaced optional bytes leader_address = 5;
+    optional uint32 leader_weight = 5;
+    optional uint32 leader_local_weight = 6;
+    optional uint32 preferred_router_id = 7;
+    optional uint32 partition_id = 8;
+    optional uint32 child_table_size = 9;
+    optional uint32 neighbor_table_size = 10;
+    optional int32 instant_rssi = 11;
+    optional bool has_extended_pan_id = 12;
+    optional bool is_active_br = 13;
+    optional bool is_active_srp_server = 14;
+    optional uint32 sum_on_link_prefix_changes = 15;
+  }
+
+  enum NodeType {
+    NODE_TYPE_UNSPECIFIED = 0;
+    NODE_TYPE_ROUTER = 1;
+    NODE_TYPE_END = 2;
+    NODE_TYPE_SLEEPY_END = 3;
+    NODE_TYPE_MINIMAL_END = 4;
+
+    NODE_TYPE_OFFLINE = 5;
+    NODE_TYPE_DISABLED = 6;
+    NODE_TYPE_DETACHED = 7;
+
+    NODE_TYPE_NL_LURKER = 0x10;
+    NODE_TYPE_COMMISSIONER = 0x20;
+    NODE_TYPE_LEADER = 0x40;
+  }
+
+  message PacketsAndBytes {
+    optional int64 packet_count = 1;
+    optional int64 byte_count = 2;
+  }
+
+  message Nat64TrafficCounters {
+    optional int64 ipv4_to_ipv6_packets = 1;
+    optional int64 ipv4_to_ipv6_bytes = 2;
+    optional int64 ipv6_to_ipv4_packets = 3;
+    optional int64 ipv6_to_ipv4_bytes = 4;
+  }
+
+  message Nat64ProtocolCounters {
+    optional Nat64TrafficCounters tcp = 1;
+    optional Nat64TrafficCounters udp = 2;
+    optional Nat64TrafficCounters icmp = 3;
+  }
+
+  message Nat64PacketCounters {
+    optional int64 ipv4_to_ipv6_packets = 1;
+    optional int64 ipv6_to_ipv4_packets = 2;
+  }
+
+  message Nat64ErrorCounters {
+    optional Nat64PacketCounters unknown = 1;
+    optional Nat64PacketCounters illegal_packet = 2;
+    optional Nat64PacketCounters unsupported_protocol = 3;
+    optional Nat64PacketCounters no_mapping = 4;
+  }
+
+  message BorderRoutingCounters {
+    // The number of Router Advertisement packets received by otbr-agent on the
+    // infra link
+    optional int64 ra_rx = 1;
+
+    // The number of Router Advertisement packets successfully transmitted by
+    // otbr-agent on the infra link.
+    optional int64 ra_tx_success = 2;
+
+    // The number of Router Advertisement packets failed to transmit by
+    // otbr-agent on the infra link.
+    optional int64 ra_tx_failure = 3;
+
+    // The number of Router Solicitation packets received by otbr-agent on the
+    // infra link
+    optional int64 rs_rx = 4;
+
+    // The number of Router Solicitation packets successfully transmitted by
+    // otbr-agent on the infra link.
+    optional int64 rs_tx_success = 5;
+
+    // The number of Router Solicitation packets failed to transmit by
+    // otbr-agent on the infra link.
+    optional int64 rs_tx_failure = 6;
+
+    // The counters for inbound unicast packets
+    optional PacketsAndBytes inbound_unicast = 7;
+
+    // The counters for inbound multicast packets
+    optional PacketsAndBytes inbound_multicast = 8;
+
+    // The counters for outbound unicast packets
+    optional PacketsAndBytes outbound_unicast = 9;
+
+    // The counters for outbound multicast packets
+    optional PacketsAndBytes outbound_multicast = 10;
+
+    // The inbound and outbound NAT64 traffic through the border router
+    optional Nat64ProtocolCounters nat64_protocol_counters = 11;
+
+    // Error counters for NAT64 translator on the border router
+    optional Nat64ErrorCounters nat64_error_counters = 12;
+  }
+
+  message SrpServerRegistrationInfo {
+    // The number of active hosts/services registered on the SRP server.
+    optional uint32 fresh_count = 1;
+
+    // The number of hosts/services in 'Deleted' state on the SRP server.
+    optional uint32 deleted_count = 2;
+
+    // The sum of lease time in milliseconds of all active hosts/services on the
+    // SRP server.
+    optional uint64 lease_time_total_ms = 3;
+
+    // The sum of key lease time in milliseconds of all active hosts/services on
+    // the SRP server.
+    optional uint64 key_lease_time_total_ms = 4;
+
+    // The sum of remaining lease time in milliseconds of all active
+    // hosts/services on the SRP server.
+    optional uint64 remaining_lease_time_total_ms = 5;
+
+    // The sum of remaining key lease time in milliseconds of all active
+    // hosts/services on the SRP server.
+    optional uint64 remaining_key_lease_time_total_ms = 6;
+  }
+
+  message SrpServerResponseCounters {
+    // The number of successful responses
+    optional uint32 success_count = 1;
+
+    // The number of server failure responses
+    optional uint32 server_failure_count = 2;
+
+    // The number of format error responses
+    optional uint32 format_error_count = 3;
+
+    // The number of 'name exists' responses
+    optional uint32 name_exists_count = 4;
+
+    // The number of refused responses
+    optional uint32 refused_count = 5;
+
+    // The number of other responses
+    optional uint32 other_count = 6;
+  }
+
+  enum SrpServerState {
+    SRP_SERVER_STATE_UNSPECIFIED = 0;
+    SRP_SERVER_STATE_DISABLED = 1;
+    SRP_SERVER_STATE_RUNNING = 2;
+    SRP_SERVER_STATE_STOPPED = 3;
+  }
+
+  // The address mode used by the SRP server
+  enum SrpServerAddressMode {
+    SRP_SERVER_ADDRESS_MODE_UNSPECIFIED = 0;
+    SRP_SERVER_ADDRESS_MODE_UNICAST = 1;
+    SRP_SERVER_ADDRESS_MODE_STATE_ANYCAST = 2;
+  }
+
+  message SrpServerInfo {
+    // The state of the SRP server
+    optional SrpServerState state = 1;
+
+    // Listening port number
+    optional uint32 port = 2;
+    // The address mode {unicast, anycast} of the SRP server
+    optional SrpServerAddressMode address_mode = 3;
+
+    // The registration information of hosts on the SRP server
+    optional SrpServerRegistrationInfo hosts = 4;
+
+    // The registration information of services on the SRP server
+    optional SrpServerRegistrationInfo services = 5;
+
+    // The counters of response codes sent by the SRP server
+    optional SrpServerResponseCounters response_counters = 6;
+  }
+
+  message DnsServerResponseCounters {
+    // The number of successful responses
+    optional uint32 success_count = 1;
+
+    // The number of server failure responses
+    optional uint32 server_failure_count = 2;
+
+    // The number of format error responses
+    optional uint32 format_error_count = 3;
+
+    // The number of name error responses
+    optional uint32 name_error_count = 4;
+
+    // The number of 'not implemented' responses
+    optional uint32 not_implemented_count = 5;
+
+    // The number of other responses
+    optional uint32 other_count = 6;
+  }
+
+  message DnsServerInfo {
+    // The counters of response codes sent by the DNS server
+    optional DnsServerResponseCounters response_counters = 1;
+
+    // The number of DNS queries resolved at the local SRP server
+    optional uint32 resolved_by_local_srp_count = 2;
+  }
+
+  message MdnsResponseCounters {
+    // The number of successful responses
+    optional uint32 success_count = 1;
+
+    // The number of 'not found' responses
+    optional uint32 not_found_count = 2;
+
+    // The number of 'invalid arg' responses
+    optional uint32 invalid_args_count = 3;
+
+    // The number of 'duplicated' responses
+    optional uint32 duplicated_count = 4;
+
+    // The number of 'not implemented' responses
+    optional uint32 not_implemented_count = 5;
+
+    // The number of unknown error responses
+    optional uint32 unknown_error_count = 6;
+
+    // The number of aborted responses
+    optional uint32 aborted_count = 7;
+
+    // The number of invalid state responses
+    optional uint32 invalid_state_count = 8;
+  }
+
+  message MdnsInfo {
+    // The response counters of host registrations
+    optional MdnsResponseCounters host_registration_responses = 1;
+
+    // The response counters of service registrations
+    optional MdnsResponseCounters service_registration_responses = 2;
+
+    // The response counters of host resolutions
+    optional MdnsResponseCounters host_resolution_responses = 3;
+
+    // The response counters of service resolutions
+    optional MdnsResponseCounters service_resolution_responses = 4;
+
+    // The EMA (Exponential Moving Average) latencies of mDNS operations
+
+    // The EMA latency of host registrations in milliseconds
+    optional uint32 host_registration_ema_latency_ms = 5;
+
+    // The EMA latency of service registrations in milliseconds
+    optional uint32 service_registration_ema_latency_ms = 6;
+
+    // The EMA latency of host resolutions in milliseconds
+    optional uint32 host_resolution_ema_latency_ms = 7;
+
+    // The EMA latency of service resolutions in milliseconds
+    optional uint32 service_resolution_ema_latency_ms = 8;
+  }
+
+  enum Nat64State {
+    NAT64_STATE_UNSPECIFIED = 0;
+    NAT64_STATE_DISABLED = 1;
+    NAT64_STATE_NOT_RUNNING = 2;
+    NAT64_STATE_IDLE = 3;
+    NAT64_STATE_ACTIVE = 4;
+  }
+
+  message BorderRoutingNat64State {
+    optional Nat64State prefix_manager_state = 1;
+    optional Nat64State translator_state = 2;
+  }
+
+  message WpanBorderRouter {
+    // Border routing counters
+    optional BorderRoutingCounters border_routing_counters = 1;
+
+    // Information about the SRP server
+    optional SrpServerInfo srp_server = 2;
+
+    // Information about the DNS server
+    optional DnsServerInfo dns_server = 3;
+
+    // Information about the mDNS publisher
+    optional MdnsInfo mdns = 4;
+
+    // Information about the state of components of NAT64
+    optional BorderRoutingNat64State nat64_state = 5;
+  }
+
+  message RcpStabilityStatistics {
+    optional uint32 rcp_timeout_count = 1;
+    optional uint32 rcp_reset_count = 2;
+    optional uint32 rcp_restoration_count = 3;
+    optional uint32 spinel_parse_error_count = 4;
+    optional int32 rcp_firmware_update_count = 5;
+    optional uint32 thread_stack_uptime = 6;
+  }
+
+  message RcpInterfaceStatistics {
+    optional uint32 rcp_interface_type = 1;
+    optional uint64 transferred_frames_count = 2;
+    optional uint64 transferred_valid_frames_count = 3;
+    optional uint64 transferred_garbage_frames_count = 4;
+    optional uint64 rx_frames_count = 5;
+    optional uint64 rx_bytes_count = 6;
+    optional uint64 tx_frames_count = 7;
+    optional uint64 tx_bytes_count = 8;
+  }
+
+  message WpanRcp {
+    optional RcpStabilityStatistics rcp_stability_statistics = 1;
+    optional RcpInterfaceStatistics rcp_interface_statistics = 2;
+  }
+
+  message CoexMetrics {
+    optional uint32 count_tx_request = 1;
+    optional uint32 count_tx_grant_immediate = 2;
+    optional uint32 count_tx_grant_wait = 3;
+    optional uint32 count_tx_grant_wait_activated = 4;
+    optional uint32 count_tx_grant_wait_timeout = 5;
+    optional uint32 count_tx_grant_deactivated_during_request = 6;
+    optional uint32 tx_average_request_to_grant_time_us = 7;
+    optional uint32 count_rx_request = 8;
+    optional uint32 count_rx_grant_immediate = 9;
+    optional uint32 count_rx_grant_wait = 10;
+    optional uint32 count_rx_grant_wait_activated = 11;
+    optional uint32 count_rx_grant_wait_timeout = 12;
+    optional uint32 count_rx_grant_deactivated_during_request = 13;
+    optional uint32 count_rx_grant_none = 14;
+    optional uint32 rx_average_request_to_grant_time_us = 15;
+  }
+
+  optional WpanStats wpan_stats = 1 [(log_mode) = MODE_BYTES];
+  optional WpanTopoFull wpan_topo_full = 2 [(log_mode) = MODE_BYTES];
+  optional WpanBorderRouter wpan_border_router = 3 [(log_mode) = MODE_BYTES];
+  optional WpanRcp wpan_rcp = 4 [(log_mode) = MODE_BYTES];
+  optional CoexMetrics coex_metrics = 5 [(log_mode) = MODE_BYTES];
+}
+
+message ThreadnetworkTopoEntryRepeated {
+  message TopoEntry {
+    // 0~15: uint16_t rloc_16
+    // 16~31: uint16_t version Thread version of the neighbor
+    optional uint32 combo_telemetry1 = 1;
+    // 0~7: uint8_t link_quality_in
+    // 8~15: int8_t average_rssi
+    // 16~23: int8_t last_rssi
+    // 24~31: uint8_t network_data_version
+    optional uint32 combo_telemetry2 = 2;
+    optional uint32 age_sec = 3;
+    // Each bit on the flag represents a bool flag
+    // 0: rx_on_when_idle
+    // 1: full_function
+    // 2: secure_data_request
+    // 3: full_network_data
+    // 4: is_child
+    optional uint32 topo_entry_flags = 4;
+    optional uint32 link_frame_counter = 5;
+    optional uint32 mle_frame_counter = 6;
+    optional uint32 timeout_sec = 7;
+    // 0~15: uint16_t frame_error_rate. Frame error rate (0xffff->100%). Requires error tracking feature.
+    // 16~31: uint16_t message_error_rate. (IPv6) msg error rate (0xffff->100%). Requires error tracking feature.
+    optional uint32 combo_telemetry3 = 8;
+  }
+
+  message TopoEntryRepeated {
+    repeated TopoEntry topo_entries = 1;
+  }
+
+  optional TopoEntryRepeated topo_entry_repeated = 1 [(log_mode) = MODE_BYTES];
+}
+
+message ThreadnetworkDeviceInfoReported {
+  // OpenThread host build version.
+  optional string ot_host_version = 1;
+
+  // OpenThread RCP build version.
+  optional string ot_rcp_version = 2;
+
+  // Thread protocol version.
+  optional int32 thread_version = 3;
+
+  // Thread Daemon version.
+  optional string thread_daemon_version = 4;
+}
diff --git a/stats/enums/adservices/common/adservices_enums.proto b/stats/enums/adservices/common/adservices_enums.proto
index 60bf324..f8c35bf 100644
--- a/stats/enums/adservices/common/adservices_enums.proto
+++ b/stats/enums/adservices/common/adservices_enums.proto
@@ -77,6 +77,7 @@
  * - UX errors: 4001-5000
  * - FederatedCompute errors: 5001-6000
  * - AdExtDataServiceErrors: 6001-7000
+ * - IAPC errors: 7001 - 8000
  *
  * NOTE: AdId / AdSetId don't have a range yet (because they're just using common codes)
  */
@@ -111,6 +112,9 @@
   // Generic exception when dealing with shared prefs.
   SHARED_PREF_EXCEPTION = 11;
 
+  // Error logging an API check using  Adservices Config XML provided by an app.
+  APP_MANIFEST_CONFIG_LOGGING_ERROR = 12;
+
   // Topics errors: 1001-2000
   // Remote exception when calling get topics.
   GET_TOPICS_REMOTE_EXCEPTION = 1001;
@@ -262,6 +266,9 @@
   // Topics encryption public key is missing.
   TOPICS_ENCRYPTION_KEY_MISSING = 1049;
 
+  // Topics API request has empty sdk name.
+  TOPICS_REQUEST_EMPTY_SDK_NAME = 1050;
+
   // Measurement errors: 2001-3000
   // Error occurred when inserting enrollment data to DB.
   ENROLLMENT_DATA_INSERT_ERROR = 2001;
@@ -290,6 +297,18 @@
   // Failure to save seed in SharedPreferences
   ENROLLMENT_SHARED_PREFERENCES_SEED_SAVE_FAILURE = 2009;
 
+  // When report deliver fails due to a network issue (IOException).
+  MEASUREMENT_REPORTING_NETWORK_ERROR = 2010;
+
+  // When report delivery fails due to report building as JSON.
+  MEASUREMENT_REPORTING_PARSING_ERROR = 2011;
+
+  // When encryption of aggregate report fails.
+  MEASUREMENT_REPORTING_ENCRYPTION_ERROR = 2012;
+
+  // Reporting errors should have specific error codes.
+  MEASUREMENT_REPORTING_UNKNOWN_ERROR = 2013;
+
   // UX errors: 4001-5000
   CONSENT_REVOKED_ERROR = 4001;
 
@@ -363,6 +382,12 @@
 
   // AdExtDataService put failed
   PUT_ADEXT_DATA_SERVICE_ERROR = 6002;
+
+  // IAPC errors: 7001-8000
+  // AdIdProviderService is not available.
+  IAPC_AD_ID_PROVIDER_NOT_AVAILABLE = 7001;
+  // Exception when calling UpdateAdId API in service side.
+  IAPC_UPDATE_AD_ID_API_ERROR = 7002;
 }
 
 /**
diff --git a/stats/enums/corenetworking/connectivity/enums.proto b/stats/enums/corenetworking/connectivity/enums.proto
index 7e15bfb..8b338ff 100644
--- a/stats/enums/corenetworking/connectivity/enums.proto
+++ b/stats/enums/corenetworking/connectivity/enums.proto
@@ -42,3 +42,36 @@
     RT_5G = 5;
 }
 
+// Network request states
+// * Network request is in the NETWORK_REQUEST_STATE_RECEIVED state when it
+// was just registered by the Connectivity service;
+// * Network request is in the NETWORK_REQUEST_STATE_REMOVED state when it was
+// just removed by the Connectivity service;
+enum NetworkRequestState {
+  NETWORK_REQUEST_STATE_UNKNOWN = 0;
+  NETWORK_REQUEST_STATE_RECEIVED = 1;
+  NETWORK_REQUEST_STATE_REMOVED = 2;
+}
+
+// Prefix as enum of NetworkStatsRecorder, as defined in
+// android.net.netstats.NetworkStatsDataMigrationUtils#PREFIX_*.
+enum RecorderPrefix {
+  PREFIX_UNKNOWN = 0;
+  PREFIX_XT = 1;
+  PREFIX_UID = 2;
+  PREFIX_UIDTAG = 3;
+}
+
+// Type of NetworkStatsRecorder file operations.
+enum RecorderOperationType {
+  ROT_UNKNOWN = 0;
+  ROT_READ = 1;
+  ROT_WRITE = 2;
+}
+
+// State of applying FastDataInput feature.
+enum FastDataInputState {
+  FDIS_UNKNOWN = 0;
+  FDIS_ENABLED= 1;
+  FDIS_DISABLED = 2;
+}
diff --git a/stats/enums/healthfitness/ui/enums.proto b/stats/enums/healthfitness/ui/enums.proto
index 670795d..a86d0e5 100644
--- a/stats/enums/healthfitness/ui/enums.proto
+++ b/stats/enums/healthfitness/ui/enums.proto
@@ -239,7 +239,21 @@
     MIGRATION_RESUME_BANNER = 146;
     MIGRATION_RESUME_BANNER_BUTTON = 147;
     MIGRATION_APP_UPDATE_BANNER = 148;
+    // Banner buttons
     MIGRATION_APP_UPDATE_BUTTON = 149;
+    MIGRATION_APP_UPDATE_LEARN_MORE_BUTTON = 174;
+    MIGRATION_APP_UPDATE_APP_BUTTON = 173;
+
+    // Data restore
+    DATA_RESTORE_UPDATE_NEEDED_BANNER = 164;
+    DATA_RESTORE_UPDATE_NEEDED_BANNER_UPDATE_BUTTON = 165;
+    DATA_RESTORE_UPDATE_NEEDED_CANCEL_RESTORE_BUTTON = 166;
+    DATA_RESTORE_FAILED_BANNER = 167;
+    DATA_RESTORE_FAILED_BANNER_BUTTON = 168;
+    DATA_RESTORE_CANCEL_DIALOG = 169;
+    DATA_RESTORE_CANCEL_DIALOG_CANCEL_BUTTON = 170;
+    DATA_RESTORE_CANCEL_DIALOG_CONTINUE_BUTTON = 171;
+    DATA_RESTORE_SUCCESS_SNACKBAR = 172;
 
     // Loading and error page states
     LOADING_PAGE_STATE = 150;
@@ -263,7 +277,7 @@
     // Add an app page
     POTENTIAL_PRIORITY_APP_BUTTON = 161;
 
-    // Next available: 162;
+    // Next available: 175;
 
 }
 
@@ -303,6 +317,7 @@
     MANAGE_DATA_PAGE = 26;
     DATA_SOURCES_PAGE = 27;
     ADD_AN_APP_PAGE = 28;
+    DATA_RESTORE_IN_PROGRESS_PAGE = 29;
 }
 
 enum Action {