Merge "Add logs to help with debugging for DesktopRepository and DesktopTaskChangeListener." into main
diff --git a/apct-tests/perftests/core/src/android/os/TracePerfTest.java b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
index bf7c96a..0b941c9 100644
--- a/apct-tests/perftests/core/src/android/os/TracePerfTest.java
+++ b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
@@ -139,6 +139,30 @@
         }
     }
 
+    @Test
+    public void testInstantPerfettoWithProto() {
+        PerfettoTrace.begin(FOO_CATEGORY, "message_queue_receive")
+                .beginProto()
+                .beginNested(2004 /* message_queue */)
+                .addField(1 /* sending_thread_name */, "foo")
+                .endNested()
+                .endProto()
+                .addTerminatingFlow(5)
+                .emit();
+
+        BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            PerfettoTrace.begin(FOO_CATEGORY, "message_queue_receive")
+                    .beginProto()
+                    .beginNested(2004 /* message_queue */)
+                    .addField(1 /* sending_thread_name */, "foo")
+                    .endNested()
+                    .endProto()
+                    .addTerminatingFlow(5)
+                    .emit();
+        }
+    }
+
     private static TraceConfig getTraceConfig(String cat) {
         BufferConfig bufferConfig = BufferConfig.newBuilder().setSizeKb(1024).build();
         TrackEventConfig trackEventConfig = TrackEventConfig
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java
index ebfda52..010006e 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java
@@ -809,7 +809,11 @@
                 if (!verifyCallerLocked(cb)) {
                     return;
                 }
-
+                if (mVerb != VERB_EXECUTING) {
+                    // Any state other than executing means the
+                    // job is in transient or stopped state
+                    return;
+                }
                 executing = getRunningJobLocked();
             }
             if (executing != null && jobId == executing.getJobId()) {
diff --git a/cmds/idmap2/include/idmap2/Idmap.h b/cmds/idmap2/include/idmap2/Idmap.h
index 1f15daf..335dc97 100644
--- a/cmds/idmap2/include/idmap2/Idmap.h
+++ b/cmds/idmap2/include/idmap2/Idmap.h
@@ -178,8 +178,8 @@
 };
 
 struct IdmapConstraint {
-  // Constraint type can be TYPE_DISPLAY_ID or TYP_DEVICE_ID, please refer
-  // to ConstraintType in OverlayConstraint.java
+  // Constraint type can be android::kOverlayConstraintTypeDisplayId or
+  // android::kOverlayConstraintTypeDeviceId
   uint32_t constraint_type;
   uint32_t constraint_value;
 
diff --git a/core/api/current.txt b/core/api/current.txt
index 5c0ecf72..9ebb506 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -18112,6 +18112,7 @@
     method public void setThickness(@Px int);
     method public void setThicknessRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
     method public void setUseLevel(boolean);
+    field @FlaggedApi("com.android.graphics.flags.gradient_drawable_shape_rounded_cap") public static final int ARC = 4; // 0x4
     field public static final int LINE = 2; // 0x2
     field public static final int LINEAR_GRADIENT = 0; // 0x0
     field public static final int OVAL = 1; // 0x1
@@ -38342,7 +38343,7 @@
     field @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") public static final String ACTION_REQUEST_MEDIA_ROUTING_CONTROL = "android.settings.REQUEST_MEDIA_ROUTING_CONTROL";
     field public static final String ACTION_REQUEST_SCHEDULE_EXACT_ALARM = "android.settings.REQUEST_SCHEDULE_EXACT_ALARM";
     field public static final String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String ACTION_SATELLITE_SETTING = "android.settings.SATELLITE_SETTING";
+    field public static final String ACTION_SATELLITE_SETTING = "android.settings.SATELLITE_SETTING";
     field public static final String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
     field public static final String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
     field public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
@@ -44990,7 +44991,7 @@
     field public static final String KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING = "carrier_settings_activity_component_name_string";
     field public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_CARRIER_SUPPORTED_SATELLITE_NOTIFICATION_HYSTERESIS_SEC_INT = "carrier_supported_satellite_notification_hysteresis_sec_int";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE = "carrier_supported_satellite_services_per_provider_bundle";
+    field public static final String KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE = "carrier_supported_satellite_services_per_provider_bundle";
     field public static final String KEY_CARRIER_SUPPORTS_OPP_DATA_AUTO_PROVISIONING_BOOL = "carrier_supports_opp_data_auto_provisioning_bool";
     field public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool";
     field public static final String KEY_CARRIER_SUPPORTS_TETHERING_BOOL = "carrier_supports_tethering_bool";
@@ -45123,9 +45124,9 @@
     field public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
     field public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
     field public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_NTN_LTE_RSRP_THRESHOLDS_INT_ARRAY = "ntn_lte_rsrp_thresholds_int_array";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_NTN_LTE_RSRQ_THRESHOLDS_INT_ARRAY = "ntn_lte_rsrq_thresholds_int_array";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_NTN_LTE_RSSNR_THRESHOLDS_INT_ARRAY = "ntn_lte_rssnr_thresholds_int_array";
+    field public static final String KEY_NTN_LTE_RSRP_THRESHOLDS_INT_ARRAY = "ntn_lte_rsrp_thresholds_int_array";
+    field public static final String KEY_NTN_LTE_RSRQ_THRESHOLDS_INT_ARRAY = "ntn_lte_rsrq_thresholds_int_array";
+    field public static final String KEY_NTN_LTE_RSSNR_THRESHOLDS_INT_ARRAY = "ntn_lte_rssnr_thresholds_int_array";
     field public static final String KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL = "only_auto_select_in_home_network";
     field public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
     field public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
@@ -45141,7 +45142,7 @@
     field public static final String KEY_OPPORTUNISTIC_NETWORK_MAX_BACKOFF_TIME_LONG = "opportunistic_network_max_backoff_time_long";
     field public static final String KEY_OPPORTUNISTIC_NETWORK_PING_PONG_TIME_LONG = "opportunistic_network_ping_pong_time_long";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_OVERRIDE_WFC_ROAMING_MODE_WHILE_USING_NTN_BOOL = "override_wfc_roaming_mode_while_using_ntn_bool";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_PARAMETERS_USED_FOR_NTN_LTE_SIGNAL_BAR_INT = "parameters_used_for_ntn_lte_signal_bar_int";
+    field public static final String KEY_PARAMETERS_USED_FOR_NTN_LTE_SIGNAL_BAR_INT = "parameters_used_for_ntn_lte_signal_bar_int";
     field public static final String KEY_PING_TEST_BEFORE_DATA_SWITCH_BOOL = "ping_test_before_data_switch_bool";
     field public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.hide_prefer_3g_item") public static final String KEY_PREFER_3G_VISIBILITY_BOOL = "prefer_3g_visibility_bool";
@@ -45170,14 +45171,14 @@
     field public static final String KEY_RTT_SUPPORTED_WHILE_ROAMING_BOOL = "rtt_supported_while_roaming_bool";
     field public static final String KEY_RTT_UPGRADE_SUPPORTED_BOOL = "rtt_upgrade_supported_bool";
     field public static final String KEY_RTT_UPGRADE_SUPPORTED_FOR_DOWNGRADED_VT_CALL_BOOL = "rtt_upgrade_supported_for_downgraded_vt_call";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_SATELLITE_ATTACH_SUPPORTED_BOOL = "satellite_attach_supported_bool";
+    field public static final String KEY_SATELLITE_ATTACH_SUPPORTED_BOOL = "satellite_attach_supported_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_25q4_apis") public static final String KEY_SATELLITE_CONNECTED_NOTIFICATION_THROTTLE_MILLIS_INT = "satellite_connected_notification_throttle_millis_int";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_SATELLITE_CONNECTION_HYSTERESIS_SEC_INT = "satellite_connection_hysteresis_sec_int";
+    field public static final String KEY_SATELLITE_CONNECTION_HYSTERESIS_SEC_INT = "satellite_connection_hysteresis_sec_int";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_SATELLITE_DATA_SUPPORT_MODE_INT = "satellite_data_support_mode_int";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_SATELLITE_DISPLAY_NAME_STRING = "satellite_display_name_string";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_SATELLITE_ENTITLEMENT_APP_NAME_STRING = "satellite_entitlement_app_name_string";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT = "satellite_entitlement_status_refresh_days_int";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL = "satellite_entitlement_supported_bool";
+    field public static final String KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT = "satellite_entitlement_status_refresh_days_int";
+    field public static final String KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL = "satellite_entitlement_supported_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn") public static final String KEY_SATELLITE_ESOS_SUPPORTED_BOOL = "satellite_esos_supported_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_25q4_apis") public static final String KEY_SATELLITE_IGNORE_DATA_ROAMING_SETTING_BOOL = "satellite_ignore_data_roaming_setting_bool";
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String KEY_SATELLITE_INFORMATION_REDIRECT_URL_STRING = "satellite_information_redirect_url_string";
@@ -46484,7 +46485,7 @@
     method public boolean isNetworkRegistered();
     method public boolean isNetworkRoaming();
     method public boolean isNetworkSearching();
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public boolean isNonTerrestrialNetwork();
+    method public boolean isNonTerrestrialNetwork();
     method @Deprecated public boolean isRegistered();
     method @Deprecated public boolean isRoaming();
     method @Deprecated public boolean isSearching();
@@ -46500,7 +46501,7 @@
     field public static final int NR_STATE_RESTRICTED = 1; // 0x1
     field public static final int SERVICE_TYPE_DATA = 2; // 0x2
     field public static final int SERVICE_TYPE_EMERGENCY = 5; // 0x5
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final int SERVICE_TYPE_MMS = 6; // 0x6
+    field public static final int SERVICE_TYPE_MMS = 6; // 0x6
     field public static final int SERVICE_TYPE_SMS = 3; // 0x3
     field public static final int SERVICE_TYPE_UNKNOWN = 0; // 0x0
     field public static final int SERVICE_TYPE_VIDEO = 4; // 0x4
@@ -46721,7 +46722,7 @@
     method public boolean getRoaming();
     method public int getState();
     method public boolean isSearching();
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public boolean isUsingNonTerrestrialNetwork();
+    method public boolean isUsingNonTerrestrialNetwork();
     method public void setIsManualSelection(boolean);
     method public void setOperatorName(String, String, String);
     method public void setRoaming(boolean);
@@ -47860,7 +47861,7 @@
     field public static final int TYPE_MMS = 2; // 0x2
     field @FlaggedApi("com.android.internal.telephony.flags.oem_paid_private") public static final int TYPE_OEM_PAID = 65536; // 0x10000
     field @FlaggedApi("com.android.internal.telephony.flags.oem_paid_private") public static final int TYPE_OEM_PRIVATE = 131072; // 0x20000
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final int TYPE_RCS = 32768; // 0x8000
+    field public static final int TYPE_RCS = 32768; // 0x8000
     field public static final int TYPE_SUPL = 4; // 0x4
     field public static final int TYPE_VSIM = 4096; // 0x1000
     field public static final int TYPE_XCAP = 2048; // 0x800
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 7d40888..137c967 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -15285,7 +15285,7 @@
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @NonNull public android.telephony.NetworkRegistrationInfo.Builder setIsNonTerrestrialNetwork(boolean);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setIsNonTerrestrialNetwork(boolean);
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
     method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
@@ -16422,7 +16422,7 @@
     field public static final String TYPE_MMS_STRING = "mms";
     field @FlaggedApi("com.android.internal.telephony.flags.oem_paid_private") public static final String TYPE_OEM_PAID_STRING = "oem_paid";
     field @FlaggedApi("com.android.internal.telephony.flags.oem_paid_private") public static final String TYPE_OEM_PRIVATE_STRING = "oem_private";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final String TYPE_RCS_STRING = "rcs";
+    field public static final String TYPE_RCS_STRING = "rcs";
     field public static final String TYPE_SUPL_STRING = "supl";
     field public static final String TYPE_VSIM_STRING = "vsim";
     field public static final String TYPE_XCAP_STRING = "xcap";
@@ -18589,13 +18589,13 @@
   }
 
   @FlaggedApi("com.android.internal.telephony.flags.satellite_state_change_listener") public final class SatelliteManager {
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void addAttachRestrictionForCarrier(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void addAttachRestrictionForCarrier(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void deprovisionSatellite(@NonNull java.util.List<android.telephony.satellite.SatelliteSubscriberInfo>, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void deprovisionService(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.Set<java.lang.Integer> getAttachRestrictionReasonsForCarrier(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.Set<java.lang.Integer> getAttachRestrictionReasonsForCarrier(int);
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_25q4_apis") @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.List<java.lang.String> getSatelliteDataOptimizedApps();
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public int[] getSatelliteDisallowedReasons();
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.List<java.lang.String> getSatellitePlmnsForCarrier(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.List<java.lang.String> getSatellitePlmnsForCarrier(int);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void pollPendingDatagrams(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void provisionSatellite(@NonNull java.util.List<android.telephony.satellite.SatelliteSubscriberInfo>, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void provisionService(@NonNull String, @NonNull byte[], @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
@@ -18608,11 +18608,11 @@
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void registerForSatelliteDisallowedReasonsChanged(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.satellite.SatelliteDisallowedReasonsCallback);
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public int registerForSelectedNbIotSatelliteSubscriptionChanged(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.satellite.SelectedNbIotSatelliteSubscriptionCallback);
     method @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public int registerForSupportedStateChanged(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void removeAttachRestrictionForCarrier(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestAttachEnabledForCarrier(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void removeAttachRestrictionForCarrier(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestAttachEnabledForCarrier(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestCapabilities(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.telephony.satellite.SatelliteCapabilities,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestEnabled(@NonNull android.telephony.satellite.EnableRequestAttributes, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestIsAttachEnabledForCarrier(int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,android.telephony.satellite.SatelliteManager.SatelliteException>);
+    method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestIsAttachEnabledForCarrier(int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestIsCommunicationAllowedForCurrentLocation(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestIsDemoModeEnabled(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,android.telephony.satellite.SatelliteManager.SatelliteException>);
     method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestIsEmergencyModeEnabled(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,android.telephony.satellite.SatelliteManager.SatelliteException>);
@@ -18656,15 +18656,15 @@
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int DISPLAY_MODE_OPENED = 2; // 0x2
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int DISPLAY_MODE_UNKNOWN = 0; // 0x0
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS = 1; // 0x1
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final int EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911 = 2; // 0x2
+    field public static final int EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911 = 2; // 0x2
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int NT_RADIO_TECHNOLOGY_EMTC_NTN = 3; // 0x3
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int NT_RADIO_TECHNOLOGY_NB_IOT_NTN = 1; // 0x1
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int NT_RADIO_TECHNOLOGY_NR_NTN = 2; // 0x2
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int NT_RADIO_TECHNOLOGY_PROPRIETARY = 4; // 0x4
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int NT_RADIO_TECHNOLOGY_UNKNOWN = 0; // 0x0
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final String PROPERTY_SATELLITE_MANUAL_CONNECT_P2P_SUPPORT = "android.telephony.satellite.PROPERTY_SATELLITE_MANUAL_CONNECT_P2P_SUPPORT";
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_ENTITLEMENT = 2; // 0x2
-    field @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION = 1; // 0x1
+    field public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_ENTITLEMENT = 2; // 0x2
+    field public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION = 1; // 0x1
     field @FlaggedApi("com.android.internal.telephony.flags.satellite_system_apis") public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER = 0; // 0x0
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE = 0; // 0x0
     field @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED = 7; // 0x7
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 975c2c2..89b3773 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1915,6 +1915,10 @@
 
 package android.hardware.usb {
 
+  public class UsbManager {
+    method public boolean isUvcGadgetSupportEnabled();
+  }
+
   public final class UsbPort {
     method @FlaggedApi("android.hardware.usb.flags.enable_is_mode_change_supported_api") @RequiresPermission(android.Manifest.permission.MANAGE_USB) public boolean isModeChangeSupported();
   }
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 588ca1d..c765298 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -101,6 +101,7 @@
 import android.content.pm.ProviderInfo;
 import android.content.pm.ProviderInfoList;
 import android.content.pm.ServiceInfo;
+import android.content.pm.SystemFeaturesCache;
 import android.content.res.AssetManager;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
@@ -1342,6 +1343,10 @@
                 ApplicationSharedMemory instance =
                         ApplicationSharedMemory.fromFileDescriptor(
                                 applicationSharedMemoryFd, /* mutable= */ false);
+                if (android.content.pm.Flags.cacheSdkSystemFeatures()) {
+                    SystemFeaturesCache.setInstance(
+                            new SystemFeaturesCache(instance.readSystemFeaturesCache()));
+                }
                 instance.closeFileDescriptor();
                 ApplicationSharedMemory.setInstance(instance);
             }
@@ -4771,6 +4776,7 @@
         // frame.
         final SurfaceControl.Transaction transaction = new SurfaceControl.Transaction();
         transaction.hide(startingWindowLeash);
+        startingWindowLeash.release();
 
         view.syncTransferSurfaceOnDraw();
 
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index f2e7e85..1ed64f9 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -78,6 +78,7 @@
 import android.content.pm.ServiceInfo;
 import android.content.pm.SharedLibraryInfo;
 import android.content.pm.SuspendDialogInfo;
+import android.content.pm.SystemFeaturesCache;
 import android.content.pm.VerifierDeviceIdentity;
 import android.content.pm.VersionedPackage;
 import android.content.pm.dex.ArtManager;
@@ -803,16 +804,6 @@
                 @Override
                 public Boolean recompute(HasSystemFeatureQuery query) {
                     try {
-                        // As an optimization, check first to see if the feature was defined at
-                        // compile-time as either available or unavailable.
-                        // TODO(b/203143243): Consider hoisting this optimization out of the cache
-                        // after the trunk stable (build) flag has soaked and more features are
-                        // defined at compile-time.
-                        Boolean maybeHasSystemFeature =
-                                RoSystemFeatures.maybeHasFeature(query.name, query.version);
-                        if (maybeHasSystemFeature != null) {
-                            return maybeHasSystemFeature.booleanValue();
-                        }
                         return ActivityThread.currentActivityThread().getPackageManager().
                             hasSystemFeature(query.name, query.version);
                     } catch (RemoteException e) {
@@ -823,15 +814,28 @@
 
     @Override
     public boolean hasSystemFeature(String name, int version) {
+        // We check for system features in the following order:
+        //    * Build time-defined system features (constant, very efficient)
+        //    * SDK-defined system features (cached at process start, very efficient)
+        //    * IPC-retrieved system features (lazily cached, requires per-feature IPC)
+        // TODO(b/375000483): Refactor all of this logic, including flag queries, into
+        // the SystemFeaturesCache class after initial rollout and validation.
+        Boolean maybeHasSystemFeature = RoSystemFeatures.maybeHasFeature(name, version);
+        if (maybeHasSystemFeature != null) {
+            return maybeHasSystemFeature;
+        }
+        if (com.android.internal.os.Flags.applicationSharedMemoryEnabled()
+                && android.content.pm.Flags.cacheSdkSystemFeatures()) {
+            maybeHasSystemFeature =
+                    SystemFeaturesCache.getInstance().maybeHasFeature(name, version);
+            if (maybeHasSystemFeature != null) {
+                return maybeHasSystemFeature;
+            }
+        }
         return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version));
     }
 
     /** @hide */
-    public void disableHasSystemFeatureCache() {
-        mHasSystemFeatureCache.disableLocal();
-    }
-
-    /** @hide */
     public static void invalidateHasSystemFeatureCache() {
         mHasSystemFeatureCache.invalidateCache();
     }
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 0519695..1a6e9b0 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -2976,6 +2976,13 @@
         if (display != null) {
             updateDeviceIdIfChanged(display.getDisplayId());
         }
+        updateResourceOverlayConstraints();
+    }
+
+    private void updateResourceOverlayConstraints() {
+        if (mResources != null) {
+            mResources.getAssets().setOverlayConstraints(getDisplayId(), getDeviceId());
+        }
     }
 
     @Override
@@ -2988,9 +2995,11 @@
             }
         }
 
-        return new ContextImpl(this, mMainThread, mPackageInfo, mParams,
+        final ContextImpl context = new ContextImpl(this, mMainThread, mPackageInfo, mParams,
                 mAttributionSource.getAttributionTag(), mAttributionSource.getNext(), mSplitName,
                 mToken, mUser, mFlags, mClassLoader, null, deviceId, true);
+        context.updateResourceOverlayConstraints();
+        return context;
     }
 
     @NonNull
@@ -3285,6 +3294,7 @@
             mDeviceId = updatedDeviceId;
             mAttributionSource = createAttributionSourceWithDeviceId(mAttributionSource, mDeviceId);
             notifyOnDeviceChangedListeners(updatedDeviceId);
+            updateResourceOverlayConstraints();
         }
     }
 
@@ -3700,6 +3710,7 @@
                 mResourcesManager.setLocaleConfig(lc);
             }
         }
+        updateResourceOverlayConstraints();
     }
 
     void installSystemApplicationInfo(ApplicationInfo info, ClassLoader classLoader) {
diff --git a/core/java/android/appwidget/OWNERS b/core/java/android/appwidget/OWNERS
index 0e85d5b..1dc4cbb 100644
--- a/core/java/android/appwidget/OWNERS
+++ b/core/java/android/appwidget/OWNERS
@@ -3,5 +3,4 @@
 pinyaoting@google.com
 suprabh@google.com
 sunnygoyal@google.com
-zakcohen@google.com
 shamalip@google.com
diff --git a/core/java/android/companion/virtual/flags/flags.aconfig b/core/java/android/companion/virtual/flags/flags.aconfig
index ba1473c..67ade79 100644
--- a/core/java/android/companion/virtual/flags/flags.aconfig
+++ b/core/java/android/companion/virtual/flags/flags.aconfig
@@ -135,3 +135,11 @@
     description: "Show virtual devices in Settings"
     bug: "338974320"
 }
+
+flag {
+    name: "migrate_viewconfiguration_constants_to_resources"
+    namespace: "virtual_devices"
+    description: "Use resources instead of constants in ViewConfiguration"
+    is_fixed_read_only: true
+    bug: "370928384"
+}
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index f91b247..9e91f59 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2038,7 +2038,7 @@
     public static final int INSTALL_SCENARIO_DEFAULT = 0;
 
     /**
-     * Installation scenario providing the fastest “install button to launch" experience possible.
+     * Installation scenario providing the fastest "install button to launch" experience possible.
      */
     public static final int INSTALL_SCENARIO_FAST = 1;
 
@@ -3585,7 +3585,7 @@
 
     /**
      * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device is
-     * compatible with Android’s security model.
+     * compatible with Android's security model.
      *
      * <p>See sections 2 and 9 in the
      * <a href="https://source.android.com/compatibility/android-cdd">Android CDD</a> for more
diff --git a/core/java/android/content/pm/SystemFeaturesCache.java b/core/java/android/content/pm/SystemFeaturesCache.java
index c41a7ab..b3d70fa 100644
--- a/core/java/android/content/pm/SystemFeaturesCache.java
+++ b/core/java/android/content/pm/SystemFeaturesCache.java
@@ -16,9 +16,8 @@
 
 package android.content.pm;
 
+import android.annotation.MainThread;
 import android.annotation.NonNull;
-import android.os.Parcel;
-import android.os.Parcelable;
 import android.util.ArrayMap;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -35,16 +34,53 @@
  *
  * @hide
  */
-public final class SystemFeaturesCache implements Parcelable {
+public final class SystemFeaturesCache {
 
     // Sentinel value used for SDK-declared features that are unavailable on the current device.
     private static final int UNAVAILABLE_FEATURE_VERSION = Integer.MIN_VALUE;
 
+    // This will be initialized just once, from the process main thread, but ready from any thread.
+    private static volatile SystemFeaturesCache sInstance;
+
     // An array of versions for SDK-defined features, from [0, PackageManager.SDK_FEATURE_COUNT).
     @NonNull
     private final int[] mSdkFeatureVersions;
 
     /**
+     * Installs the process-global cache instance.
+     *
+     * <p>Note: Usage should be gated on android.content.pm.Flags.cacheSdkSystemFeature(). In
+     * practice, this should only be called from 1) SystemServer init, or 2) bindApplication.
+     */
+    @MainThread
+    public static void setInstance(SystemFeaturesCache instance) {
+        if (sInstance != null) {
+            throw new IllegalStateException("SystemFeaturesCache instance already initialized.");
+        }
+        sInstance = instance;
+    }
+
+    /**
+     * Gets the process-global cache instance.
+     *
+     * Note: Usage should be gated on android.content.pm.Flags.cacheSdkSystemFeature(), and should
+     * always occur after the instance has been installed early in the process lifecycle.
+     */
+    public static @NonNull SystemFeaturesCache getInstance() {
+        SystemFeaturesCache instance = sInstance;
+        if (instance == null) {
+            throw new IllegalStateException("SystemFeaturesCache not initialized");
+        }
+        return instance;
+    }
+
+    /** Clears the process-global cache instance for testing. */
+    @VisibleForTesting
+    public static void clearInstance() {
+        sInstance = null;
+    }
+
+    /**
      * Populates the cache from the set of all available {@link FeatureInfo} definitions.
      *
      * System features declared in {@link PackageManager} will be entered into the cache based on
@@ -69,20 +105,28 @@
         }
     }
 
-    /** Only used by @{code CREATOR.createFromParcel(...)} */
-    private SystemFeaturesCache(@NonNull Parcel parcel) {
-        final int[] featureVersions = parcel.createIntArray();
-        if (featureVersions == null) {
-            throw new IllegalArgumentException(
-                    "Parceled SDK feature versions should never be null");
-        }
-        if (featureVersions.length != PackageManager.SDK_FEATURE_COUNT) {
+    /**
+     * Populates the cache from an array of SDK feature versions originally obtained via {@link
+     * #getSdkFeatureVersions()} from another instance.
+     */
+    public SystemFeaturesCache(@NonNull int[] sdkFeatureVersions) {
+        if (sdkFeatureVersions.length != PackageManager.SDK_FEATURE_COUNT) {
             throw new IllegalArgumentException(
                     String.format(
                             "Unexpected cached SDK feature count: %d (expected %d)",
-                            featureVersions.length, PackageManager.SDK_FEATURE_COUNT));
+                            sdkFeatureVersions.length, PackageManager.SDK_FEATURE_COUNT));
         }
-        mSdkFeatureVersions = featureVersions;
+        mSdkFeatureVersions = sdkFeatureVersions;
+    }
+
+    /**
+     * Gets the raw cached feature versions.
+     *
+     * <p>Note: This should generally only be neded for (de)serialization purposes.
+     */
+    // TODO(b/375000483): Consider reusing the ApplicationSharedMemory mapping for version lookup.
+    public int[] getSdkFeatureVersions() {
+        return mSdkFeatureVersions;
     }
 
     /**
@@ -105,29 +149,4 @@
 
         return mSdkFeatureVersions[sdkFeatureIndex] >= version;
     }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel parcel, int flags) {
-        parcel.writeIntArray(mSdkFeatureVersions);
-    }
-
-    @NonNull
-    public static final Parcelable.Creator<SystemFeaturesCache> CREATOR =
-            new Parcelable.Creator<SystemFeaturesCache>() {
-
-                @Override
-                public SystemFeaturesCache createFromParcel(Parcel parcel) {
-                    return new SystemFeaturesCache(parcel);
-                }
-
-                @Override
-                public SystemFeaturesCache[] newArray(int size) {
-                    return new SystemFeaturesCache[size];
-                }
-            };
 }
diff --git a/core/java/android/content/pm/flags.aconfig b/core/java/android/content/pm/flags.aconfig
index e4b8c90..255a08c 100644
--- a/core/java/android/content/pm/flags.aconfig
+++ b/core/java/android/content/pm/flags.aconfig
@@ -391,3 +391,12 @@
     bug: "319137634"
     is_fixed_read_only: true
 }
+
+flag {
+    name: "always_load_past_certs_v4"
+    is_exported: true
+    namespace: "package_manager_service"
+    description: "Always read the corresponding v3/3.1 signature block for the current v4 to get the past rotated certificates, even when not verifying integrity."
+    bug: "378539511"
+    is_fixed_read_only: true
+}
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index 7cd2d31..bcb5088 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -148,8 +148,8 @@
      * @hide
      */
     public static class Builder {
-        private ArrayList<ApkAssets> mUserApkAssets = new ArrayList<>();
-        private ArrayList<ResourcesLoader> mLoaders = new ArrayList<>();
+        private final ArrayList<ApkAssets> mUserApkAssets = new ArrayList<>();
+        private final ArrayList<ResourcesLoader> mLoaders = new ArrayList<>();
 
         private boolean mNoInit = false;
 
@@ -1625,6 +1625,23 @@
     }
 
     /**
+     * Passes the display id and device id to AssetManager, to filter out overlays based on
+     * any {@link android.content.om.OverlayConstraint}.
+     *
+     * @hide
+     */
+    public void setOverlayConstraints(int displayId, int deviceId) {
+        if (!Flags.rroConstraints()) {
+            return;
+        }
+
+        synchronized (this) {
+            ensureValidLocked();
+            nativeSetOverlayConstraints(mObject, displayId, deviceId);
+        }
+    }
+
+    /**
      * @hide
      */
     @UnsupportedAppUsage
@@ -1717,6 +1734,7 @@
             int screenWidth, int screenHeight, int smallestScreenWidthDp, int screenWidthDp,
             int screenHeightDp, int screenLayout, int uiMode, int colorMode, int grammaticalGender,
             int majorVersion, boolean forceRefresh);
+    private static native void nativeSetOverlayConstraints(long ptr, int displayId, int deviceId);
     private static native @NonNull SparseArray<String> nativeGetAssignedPackageIdentifiers(
             long ptr, boolean includeOverlays, boolean includeLoaders);
 
diff --git a/core/java/android/hardware/contexthub/IContextHubEndpoint.aidl b/core/java/android/hardware/contexthub/IContextHubEndpoint.aidl
index eb1255c..5e6bb2d 100644
--- a/core/java/android/hardware/contexthub/IContextHubEndpoint.aidl
+++ b/core/java/android/hardware/contexthub/IContextHubEndpoint.aidl
@@ -99,5 +99,5 @@
      * Invoked when a callback from IContextHubEndpointCallback finishes.
      */
     @EnforcePermission("ACCESS_CONTEXT_HUB")
-    void onCallbackFinished();
+    oneway void onCallbackFinished();
 }
diff --git a/core/java/android/hardware/location/IContextHubService.aidl b/core/java/android/hardware/location/IContextHubService.aidl
index bb5491d..7187034 100644
--- a/core/java/android/hardware/location/IContextHubService.aidl
+++ b/core/java/android/hardware/location/IContextHubService.aidl
@@ -153,5 +153,5 @@
 
     // Called when a discovery callback is finished executing
     @EnforcePermission("ACCESS_CONTEXT_HUB")
-    void onDiscoveryCallbackFinished();
+    oneway void onDiscoveryCallbackFinished();
 }
diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl
index c0e506b..21d3ef0 100644
--- a/core/java/android/hardware/usb/IUsbManager.aidl
+++ b/core/java/android/hardware/usb/IUsbManager.aidl
@@ -126,6 +126,9 @@
     /* Returns true if the specified USB function is enabled. */
     boolean isFunctionEnabled(String function);
 
+    /* Returns true if UVC gadget support is enabled. */
+    boolean isUvcGadgetSupportEnabled();
+
     /* Sets the current USB function. */
     @EnforcePermission("MANAGE_USB")
     void setCurrentFunctions(long functions, int operationId);
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index d2e232a..a005e33 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -30,8 +30,10 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.TestApi;
 import android.app.PendingIntent;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
@@ -1437,6 +1439,21 @@
     }
 
     /**
+     * Returns true if the specified UVC gadget function support is enabled.
+     * <p>
+     * @hide
+     */
+    @TestApi
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    public boolean isUvcGadgetSupportEnabled() {
+        try {
+            return mService.isUvcGadgetSupportEnabled();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Sets the current USB functions when in device mode.
      * <p>
      * USB functions represent interfaces which are published to the host to access
@@ -1641,6 +1658,7 @@
         }
     }
 
+    // TODO: b/396680593 Deprecate to de-dup with isUvcGadgetSupportEnabled()
     /**
      * Returns whether UVC is advertised to be supported or not. SELinux
      * enforces that this function returns {@code false} when called from a
diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
index 349a2f0..3c03bb5 100644
--- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java
+++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
@@ -178,11 +178,6 @@
 
         // We can lift these restrictions in the future after we've made it possible for test
         // authors to test Looper and MessageQueue without resorting to reflection.
-
-        // Holdback study.
-        if (sIsProcessAllowedToUseConcurrent && Flags.messageQueueForceLegacy()) {
-            sIsProcessAllowedToUseConcurrent = false;
-        }
     }
 
     @RavenwoodReplace
@@ -238,9 +233,13 @@
         traceMessageCount();
         PerfettoTrace.instant(PerfettoTrace.MQ_CATEGORY, "message_queue_send")
                 .addFlow(msg.mEventId.get())
-                .addArg("receiving_thread", mThread.getName())
-                .addArg("delay", when - SystemClock.uptimeMillis())
-                .addArg("what", msg.what)
+                .beginProto()
+                .beginNested(2004 /* message_queue */)
+                .addField(2 /* receiving_thread_name */, mThread.getName())
+                .addField(3 /* message_code */, msg.what)
+                .addField(4 /* message_delay_ms */, when - SystemClock.uptimeMillis())
+                .endNested()
+                .endProto()
                 .emit();
     }
 
diff --git a/core/java/android/os/LockedMessageQueue/MessageQueue.java b/core/java/android/os/LockedMessageQueue/MessageQueue.java
deleted file mode 100644
index 2401f3d..0000000
--- a/core/java/android/os/LockedMessageQueue/MessageQueue.java
+++ /dev/null
@@ -1,1364 +0,0 @@
-/*
- * Copyright (C) 2006 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.TestApi;
-import android.compat.annotation.UnsupportedAppUsage;
-import android.ravenwood.annotation.RavenwoodKeepWholeClass;
-import android.ravenwood.annotation.RavenwoodRedirect;
-import android.ravenwood.annotation.RavenwoodRedirectionClass;
-import android.util.Log;
-import android.util.Printer;
-import android.util.SparseArray;
-import android.util.proto.ProtoOutputStream;
-
-import com.android.internal.annotations.GuardedBy;
-
-import dalvik.annotation.optimization.NeverCompile;
-
-import java.io.FileDescriptor;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Low-level class holding the list of messages to be dispatched by a
- * {@link Looper}.  Messages are not added directly to a MessageQueue,
- * but rather through {@link Handler} objects associated with the Looper.
- *
- * <p>You can retrieve the MessageQueue for the current thread with
- * {@link Looper#myQueue() Looper.myQueue()}.
- */
-@RavenwoodKeepWholeClass
-@RavenwoodRedirectionClass("MessageQueue_ravenwood")
-public final class MessageQueue {
-    private static final String TAG = "LockedMessageQueue";
-    private static final boolean DEBUG = false;
-    private static final boolean TRACE = false;
-
-    static final class MessageHeap {
-        static final int MESSAGE_HEAP_INITIAL_SIZE = 16;
-
-        Message[] mHeap = new Message[MESSAGE_HEAP_INITIAL_SIZE];
-        int mNumElements = 0;
-
-        static int parentNodeIdx(int i) {
-            return (i - 1) >>> 1;
-        }
-
-        Message getParentNode(int i) {
-            return mHeap[(i - 1) >>> 1];
-        }
-
-        static int rightNodeIdx(int i) {
-            return 2 * i + 2;
-        }
-
-        Message getRightNode(int i) {
-            return mHeap[2 * i + 2];
-        }
-
-        static int leftNodeIdx(int i) {
-            return 2 * i + 1;
-        }
-
-        Message getLeftNode(int i) {
-            return mHeap[2 * i + 1];
-        }
-
-        int size() {
-            return mHeap.length;
-        }
-
-        int numElements() {
-            return mNumElements;
-        }
-
-        boolean isEmpty() {
-            return mNumElements == 0;
-        }
-
-        Message getMessageAt(int index) {
-            return mHeap[index];
-        }
-
-        /*
-        * Returns:
-        *    0 if x==y.
-        *    A value less than 0 if x<y.
-        *    A value greater than 0 if x>y.
-        */
-        int compareMessage(Message x, Message y) {
-            int compared = Long.compare(x.when, y.when);
-            if (compared == 0) {
-                compared = Long.compare(x.mInsertSeq, y.mInsertSeq);
-            }
-            return compared;
-        }
-
-        int compareMessageByIdx(int x, int y) {
-            return compareMessage(mHeap[x], mHeap[y]);
-        }
-
-        void swap(int x, int y) {
-            Message tmp = mHeap[x];
-            mHeap[x] = mHeap[y];
-            mHeap[y] = tmp;
-        }
-
-        void siftDown(int i) {
-            int smallest = i;
-            int r, l;
-
-            while (true) {
-                r = rightNodeIdx(i);
-                l = leftNodeIdx(i);
-
-                if (r < mNumElements && compareMessageByIdx(r, smallest) < 0) {
-                    smallest = r;
-                }
-
-                if (l < mNumElements && compareMessageByIdx(l, smallest) < 0) {
-                    smallest = l;
-                }
-
-                if (smallest != i) {
-                    swap(i, smallest);
-                    i = smallest;
-                    continue;
-                }
-                break;
-            }
-        }
-
-        boolean siftUp(int i) {
-            boolean swapped = false;
-            while (i != 0 && compareMessage(mHeap[i], getParentNode(i)) < 0) {
-                int p = parentNodeIdx(i);
-
-                swap(i, p);
-                swapped = true;
-                i = p;
-            }
-
-            return swapped;
-        }
-
-        void maybeGrowHeap() {
-            if (mNumElements == mHeap.length) {
-                /* Grow by 1.5x */
-                int newSize = mHeap.length + (mHeap.length >>> 1);
-                Message[] newHeap;
-                if (DEBUG) {
-                    Log.v(TAG, "maybeGrowHeap mNumElements " + mNumElements + " mHeap.length "
-                            + mHeap.length + " newSize " + newSize);
-                }
-
-                newHeap = Arrays.copyOf(mHeap, newSize);
-                mHeap = newHeap;
-            }
-        }
-
-        void add(Message m) {
-            int i;
-
-            maybeGrowHeap();
-
-            i = mNumElements;
-            mNumElements++;
-            mHeap[i] = m;
-
-            siftUp(i);
-        }
-
-        void maybeShrinkHeap() {
-            /* Shrink by 2x */
-            int newSize = mHeap.length >>> 1;
-
-            if (newSize >= MESSAGE_HEAP_INITIAL_SIZE
-                    && mNumElements <= newSize) {
-                Message[] newHeap;
-
-                if (DEBUG) {
-                    Log.v(TAG, "maybeShrinkHeap mNumElements " + mNumElements + " mHeap.length "
-                            + mHeap.length + " newSize " + newSize);
-                }
-
-                newHeap = Arrays.copyOf(mHeap, newSize);
-                mHeap = newHeap;
-            }
-        }
-
-        Message poll() {
-            if (mNumElements > 0) {
-                Message ret = mHeap[0];
-                mNumElements--;
-                mHeap[0] = mHeap[mNumElements];
-                mHeap[mNumElements] = null;
-
-                siftDown(0);
-
-                maybeShrinkHeap();
-                return ret;
-            }
-            return null;
-        }
-
-        Message peek() {
-            if (mNumElements > 0) {
-                return mHeap[0];
-            }
-            return null;
-        }
-
-        private void remove(int i) throws IllegalArgumentException {
-            if (i > mNumElements || mNumElements == 0) {
-                throw new IllegalArgumentException("Index " + i + " out of bounds: "
-                        + mNumElements);
-            } else if (i == (mNumElements - 1)) {
-                mHeap[i] = null;
-                mNumElements--;
-            } else {
-                mNumElements--;
-                mHeap[i] = mHeap[mNumElements];
-                mHeap[mNumElements] = null;
-                if (!siftUp(i)) {
-                    siftDown(i);
-                }
-            }
-            /* Don't shink here, let the caller do this once it has removed all matching items. */
-        }
-
-        void removeAll() {
-            Message m;
-            for (int i = 0; i < mNumElements; i++) {
-                m = mHeap[i];
-                mHeap[i] = null;
-                m.recycleUnchecked();
-            }
-            mNumElements = 0;
-            maybeShrinkHeap();
-        }
-
-        abstract static class MessageHeapCompare {
-            public abstract boolean compareMessage(Message m, Handler h, int what, Object object,
-                    Runnable r, long when);
-        }
-
-        boolean findOrRemoveMessages(Handler h, int what, Object object, Runnable r, long when,
-                MessageHeapCompare compare, boolean removeMatches) {
-            boolean found = false;
-            /*
-             * Walk the heap backwards so we don't have to re-visit an array element due to
-             * sifting
-             */
-            for (int i = mNumElements - 1; i >= 0; i--) {
-                if (compare.compareMessage(mHeap[i], h, what, object, r, when)) {
-                    found = true;
-                    if (removeMatches) {
-                        Message m = mHeap[i];
-                        try {
-                            remove(i);
-                        } catch (IllegalArgumentException e) {
-                            Log.wtf(TAG, "Index out of bounds during remove " + e);
-                        }
-                        m.recycleUnchecked();
-                        continue;
-                    }
-                    break;
-                }
-            }
-            if (found && removeMatches) {
-                maybeShrinkHeap();
-            }
-            return found;
-        }
-
-        /*
-        * Keep this for manual debugging. It's easier to pepper the code with this function
-        * than MessageQueue.dump()
-        */
-        @NeverCompile
-        void print() {
-            Log.v(TAG, "heap num elem: " + mNumElements + " mHeap.length " + mHeap.length);
-            for (int i = 0; i < mNumElements; i++) {
-                Log.v(TAG, "[" + i + "]\t" + mHeap[i] + " seq: " + mHeap[i].mInsertSeq + " async: "
-                        + mHeap[i].isAsynchronous());
-            }
-        }
-
-        boolean verify(int root) {
-            int r = rightNodeIdx(root);
-            int l = leftNodeIdx(root);
-
-            if (l >= mNumElements && r >= mNumElements) {
-                return true;
-            }
-
-            if (l < mNumElements && compareMessageByIdx(l, root) < 0) {
-                Log.wtf(TAG, "Verify failure: root idx/when: " + root + "/" + mHeap[root].when
-                        + " left node idx/when: " + l + "/" + mHeap[l].when);
-                return false;
-            }
-
-            if (r < mNumElements && compareMessageByIdx(r, root) < 0) {
-                Log.wtf(TAG, "Verify failure: root idx/when: " + root + "/" + mHeap[root].when
-                        + " right node idx/when: " + r + "/" + mHeap[r].when);
-                return false;
-            }
-
-            if (!verify(r) || !verify(l)) {
-                return false;
-            }
-            return true;
-        }
-
-        boolean checkDanglingReferences(String where) {
-            /* First, let's make sure we didn't leave any dangling references */
-            for (int i = mNumElements; i < mHeap.length; i++) {
-                if (mHeap[i] != null) {
-                    Log.wtf(TAG, "[" + where
-                            + "] Verify failure: dangling reference found at index "
-                            + i + ": " + mHeap[i] + " Async " + mHeap[i].isAsynchronous()
-                            + " mNumElements " + mNumElements + " mHeap.length " + mHeap.length);
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        boolean verify() {
-            if (!checkDanglingReferences(TAG)) {
-                return false;
-            }
-            return verify(0);
-        }
-    }
-
-    // True if the message queue can be quit.
-    @UnsupportedAppUsage
-    private final boolean mQuitAllowed;
-
-    @UnsupportedAppUsage
-    @SuppressWarnings("unused")
-    private long mPtr; // used by native code
-
-    private final MessageHeap mPriorityQueue = new MessageHeap();
-    private final MessageHeap mAsyncPriorityQueue = new MessageHeap();
-
-    /*
-     * This helps us ensure that messages with the same timestamp are inserted in FIFO order.
-     * Increments on each insert, starting at 0. MessaeHeap.compareMessage() will compare sequences
-     * when delivery timestamps are identical.
-     */
-    private long mNextInsertSeq;
-
-    /*
-     * The exception to the FIFO order rule is sendMessageAtFrontOfQueue().
-     * Those messages must be in LIFO order.
-     * Decrements on each front of queue insert.
-     */
-    private long mNextFrontInsertSeq = -1;
-
-    @UnsupportedAppUsage
-    private final ArrayList<IdleHandler> mIdleHandlers = new ArrayList<IdleHandler>();
-    private SparseArray<FileDescriptorRecord> mFileDescriptorRecords;
-    private IdleHandler[] mPendingIdleHandlers;
-    private boolean mQuitting;
-
-    // Indicates whether next() is blocked waiting in pollOnce() with a non-zero timeout.
-    private boolean mBlocked;
-
-    // The next barrier token.
-    // Barriers are indicated by messages with a null target whose arg1 field carries the token.
-    @UnsupportedAppUsage
-    private int mNextBarrierToken;
-
-    @RavenwoodRedirect
-    private native static long nativeInit();
-    @RavenwoodRedirect
-    private native static void nativeDestroy(long ptr);
-    @UnsupportedAppUsage
-    @RavenwoodRedirect
-    private native void nativePollOnce(long ptr, int timeoutMillis); /*non-static for callbacks*/
-    @RavenwoodRedirect
-    private native static void nativeWake(long ptr);
-    @RavenwoodRedirect
-    private native static boolean nativeIsPolling(long ptr);
-    @RavenwoodRedirect
-    private native static void nativeSetFileDescriptorEvents(long ptr, int fd, int events);
-
-    MessageQueue(boolean quitAllowed) {
-        mQuitAllowed = quitAllowed;
-        mPtr = nativeInit();
-    }
-
-    @GuardedBy("this")
-    private void removeRootFromPriorityQueue(Message msg) {
-        Message tmp;
-        if (msg.isAsynchronous()) {
-            tmp = mAsyncPriorityQueue.poll();
-        } else {
-            tmp = mPriorityQueue.poll();
-        }
-        if (DEBUG && tmp != msg) {
-            Log.wtf(TAG, "Unexpected message at head of heap. Wanted: " + msg + " msg.isAsync "
-                    + msg.isAsynchronous() + " Found: " + tmp);
-
-            mPriorityQueue.print();
-            mAsyncPriorityQueue.print();
-        }
-    }
-
-    @GuardedBy("this")
-    private Message pickEarliestMessage(Message x, Message y) {
-        if (x != null && y != null) {
-            if (mPriorityQueue.compareMessage(x, y) < 0) {
-                return x;
-            }
-            return y;
-        }
-
-        return x != null ? x : y;
-    }
-
-    @GuardedBy("this")
-    private Message peekEarliestMessage() {
-        Message x = mPriorityQueue.peek();
-        Message y = mAsyncPriorityQueue.peek();
-
-        return pickEarliestMessage(x, y);
-    }
-
-    @GuardedBy("this")
-    private boolean priorityQueuesAreEmpty() {
-        return mPriorityQueue.isEmpty() && mAsyncPriorityQueue.isEmpty();
-    }
-
-    @GuardedBy("this")
-    private boolean priorityQueueHasBarrier() {
-        Message m = mPriorityQueue.peek();
-
-        if (m != null && m.target == null) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        try {
-            dispose();
-        } finally {
-            super.finalize();
-        }
-    }
-
-    // Disposes of the underlying message queue.
-    // Must only be called on the looper thread or the finalizer.
-    private void dispose() {
-        if (mPtr != 0) {
-            nativeDestroy(mPtr);
-            mPtr = 0;
-        }
-    }
-
-    /**
-     * Returns true if the looper has no pending messages which are due to be processed.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @return True if the looper is idle.
-     */
-    public boolean isIdle() {
-        synchronized (this) {
-            Message m = peekEarliestMessage();
-            final long now = SystemClock.uptimeMillis();
-
-            return (priorityQueuesAreEmpty() || now < m.when);
-        }
-    }
-
-    /**
-     * Add a new {@link IdleHandler} to this message queue.  This may be
-     * removed automatically for you by returning false from
-     * {@link IdleHandler#queueIdle IdleHandler.queueIdle()} when it is
-     * invoked, or explicitly removing it with {@link #removeIdleHandler}.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @param handler The IdleHandler to be added.
-     */
-    public void addIdleHandler(@NonNull IdleHandler handler) {
-        if (handler == null) {
-            throw new NullPointerException("Can't add a null IdleHandler");
-        }
-        synchronized (this) {
-            mIdleHandlers.add(handler);
-        }
-    }
-
-    /**
-     * Remove an {@link IdleHandler} from the queue that was previously added
-     * with {@link #addIdleHandler}.  If the given object is not currently
-     * in the idle list, nothing is done.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @param handler The IdleHandler to be removed.
-     */
-    public void removeIdleHandler(@NonNull IdleHandler handler) {
-        synchronized (this) {
-            mIdleHandlers.remove(handler);
-        }
-    }
-
-    /**
-     * Returns whether this looper's thread is currently polling for more work to do.
-     * This is a good signal that the loop is still alive rather than being stuck
-     * handling a callback.  Note that this method is intrinsically racy, since the
-     * state of the loop can change before you get the result back.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @return True if the looper is currently polling for events.
-     * @hide
-     */
-    public boolean isPolling() {
-        synchronized (this) {
-            return isPollingLocked();
-        }
-    }
-
-    private boolean isPollingLocked() {
-        // If the loop is quitting then it must not be idling.
-        // We can assume mPtr != 0 when mQuitting is false.
-        return !mQuitting && nativeIsPolling(mPtr);
-    }
-
-    /**
-     * Adds a file descriptor listener to receive notification when file descriptor
-     * related events occur.
-     * <p>
-     * If the file descriptor has already been registered, the specified events
-     * and listener will replace any that were previously associated with it.
-     * It is not possible to set more than one listener per file descriptor.
-     * </p><p>
-     * It is important to always unregister the listener when the file descriptor
-     * is no longer of use.
-     * </p>
-     *
-     * @param fd The file descriptor for which a listener will be registered.
-     * @param events The set of events to receive: a combination of the
-     * {@link OnFileDescriptorEventListener#EVENT_INPUT},
-     * {@link OnFileDescriptorEventListener#EVENT_OUTPUT}, and
-     * {@link OnFileDescriptorEventListener#EVENT_ERROR} event masks.  If the requested
-     * set of events is zero, then the listener is unregistered.
-     * @param listener The listener to invoke when file descriptor events occur.
-     *
-     * @see OnFileDescriptorEventListener
-     * @see #removeOnFileDescriptorEventListener
-     */
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    public void addOnFileDescriptorEventListener(@NonNull FileDescriptor fd,
-            @OnFileDescriptorEventListener.Events int events,
-            @NonNull OnFileDescriptorEventListener listener) {
-        if (fd == null) {
-            throw new IllegalArgumentException("fd must not be null");
-        }
-        if (listener == null) {
-            throw new IllegalArgumentException("listener must not be null");
-        }
-
-        synchronized (this) {
-            updateOnFileDescriptorEventListenerLocked(fd, events, listener);
-        }
-    }
-
-    /**
-     * Removes a file descriptor listener.
-     * <p>
-     * This method does nothing if no listener has been registered for the
-     * specified file descriptor.
-     * </p>
-     *
-     * @param fd The file descriptor whose listener will be unregistered.
-     *
-     * @see OnFileDescriptorEventListener
-     * @see #addOnFileDescriptorEventListener
-     */
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    public void removeOnFileDescriptorEventListener(@NonNull FileDescriptor fd) {
-        if (fd == null) {
-            throw new IllegalArgumentException("fd must not be null");
-        }
-
-        synchronized (this) {
-            updateOnFileDescriptorEventListenerLocked(fd, 0, null);
-        }
-    }
-
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    private void updateOnFileDescriptorEventListenerLocked(FileDescriptor fd, int events,
-            OnFileDescriptorEventListener listener) {
-        final int fdNum = fd.getInt$();
-
-        int index = -1;
-        FileDescriptorRecord record = null;
-        if (mFileDescriptorRecords != null) {
-            index = mFileDescriptorRecords.indexOfKey(fdNum);
-            if (index >= 0) {
-                record = mFileDescriptorRecords.valueAt(index);
-                if (record != null && record.mEvents == events) {
-                    return;
-                }
-            }
-        }
-
-        if (events != 0) {
-            events |= OnFileDescriptorEventListener.EVENT_ERROR;
-            if (record == null) {
-                if (mFileDescriptorRecords == null) {
-                    mFileDescriptorRecords = new SparseArray<FileDescriptorRecord>();
-                }
-                record = new FileDescriptorRecord(fd, events, listener);
-                mFileDescriptorRecords.put(fdNum, record);
-            } else {
-                record.mListener = listener;
-                record.mEvents = events;
-                record.mSeq += 1;
-            }
-            nativeSetFileDescriptorEvents(mPtr, fdNum, events);
-        } else if (record != null) {
-            record.mEvents = 0;
-            mFileDescriptorRecords.removeAt(index);
-            nativeSetFileDescriptorEvents(mPtr, fdNum, 0);
-        }
-    }
-
-    // Called from native code.
-    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
-    private int dispatchEvents(int fd, int events) {
-        // Get the file descriptor record and any state that might change.
-        final FileDescriptorRecord record;
-        final int oldWatchedEvents;
-        final OnFileDescriptorEventListener listener;
-        final int seq;
-        synchronized (this) {
-            record = mFileDescriptorRecords.get(fd);
-            if (record == null) {
-                return 0; // spurious, no listener registered
-            }
-
-            oldWatchedEvents = record.mEvents;
-            events &= oldWatchedEvents; // filter events based on current watched set
-            if (events == 0) {
-                return oldWatchedEvents; // spurious, watched events changed
-            }
-
-            listener = record.mListener;
-            seq = record.mSeq;
-        }
-
-        // Invoke the listener outside of the lock.
-        int newWatchedEvents = listener.onFileDescriptorEvents(
-                record.mDescriptor, events);
-        if (newWatchedEvents != 0) {
-            newWatchedEvents |= OnFileDescriptorEventListener.EVENT_ERROR;
-        }
-
-        // Update the file descriptor record if the listener changed the set of
-        // events to watch and the listener itself hasn't been updated since.
-        if (newWatchedEvents != oldWatchedEvents) {
-            synchronized (this) {
-                int index = mFileDescriptorRecords.indexOfKey(fd);
-                if (index >= 0 && mFileDescriptorRecords.valueAt(index) == record
-                        && record.mSeq == seq) {
-                    record.mEvents = newWatchedEvents;
-                    if (newWatchedEvents == 0) {
-                        mFileDescriptorRecords.removeAt(index);
-                    }
-                }
-            }
-        }
-
-        // Return the new set of events to watch for native code to take care of.
-        return newWatchedEvents;
-    }
-
-    private static final AtomicLong mMessagesDelivered = new AtomicLong();
-
-    @UnsupportedAppUsage
-    Message next() {
-        // Return here if the message loop has already quit and been disposed.
-        // This can happen if the application tries to restart a looper after quit
-        // which is not supported.
-        final long ptr = mPtr;
-        if (ptr == 0) {
-            return null;
-        }
-
-        int pendingIdleHandlerCount = -1; // -1 only during first iteration
-        int nextPollTimeoutMillis = 0;
-        for (;;) {
-            if (nextPollTimeoutMillis != 0) {
-                Binder.flushPendingCommands();
-            }
-
-            nativePollOnce(ptr, nextPollTimeoutMillis);
-
-            synchronized (this) {
-                // Try to retrieve the next message.  Return if found.
-                final long now = SystemClock.uptimeMillis();
-                Message prevMsg = null;
-                Message msg = peekEarliestMessage();
-
-                if (DEBUG && msg != null) {
-                    Log.v(TAG, "Next found message " + msg + " isAsynchronous: "
-                            + msg.isAsynchronous() + " target " + msg.target);
-                }
-
-                if (msg != null && !msg.isAsynchronous() && msg.target == null) {
-                    // Stalled by a barrier.  Find the next asynchronous message in the queue.
-                    msg = mAsyncPriorityQueue.peek();
-                    if (DEBUG) {
-                        Log.v(TAG, "Next message was barrier async msg: " + msg);
-                    }
-                }
-
-                if (msg != null) {
-                    if (now < msg.when) {
-                        // Next message is not ready.  Set a timeout to wake up when it is ready.
-                        nextPollTimeoutMillis = (int) Math.min(msg.when - now, Integer.MAX_VALUE);
-                    } else {
-                        mBlocked = false;
-                        removeRootFromPriorityQueue(msg);
-                        if (DEBUG) Log.v(TAG, "Returning message: " + msg);
-                        msg.markInUse();
-                        if (TRACE) {
-                            Trace.setCounter("MQ.Delivered", mMessagesDelivered.incrementAndGet());
-                        }
-                        return msg;
-                    }
-                } else {
-                    // No more messages.
-                    nextPollTimeoutMillis = -1;
-                }
-
-                // Process the quit message now that all pending messages have been handled.
-                if (mQuitting) {
-                    dispose();
-                    return null;
-                }
-
-                // If first time idle, then get the number of idlers to run.
-                // Idle handles only run if the queue is empty or if the first message
-                // in the queue (possibly a barrier) is due to be handled in the future.
-                Message next = peekEarliestMessage();
-                if (pendingIdleHandlerCount < 0
-                        && (next == null || now < next.when)) {
-                    pendingIdleHandlerCount = mIdleHandlers.size();
-                }
-                if (pendingIdleHandlerCount <= 0) {
-                    // No idle handlers to run.  Loop and wait some more.
-                    mBlocked = true;
-                    continue;
-                }
-
-                if (mPendingIdleHandlers == null) {
-                    mPendingIdleHandlers = new IdleHandler[Math.max(pendingIdleHandlerCount, 4)];
-                }
-                mPendingIdleHandlers = mIdleHandlers.toArray(mPendingIdleHandlers);
-            }
-
-            // Run the idle handlers.
-            // We only ever reach this code block during the first iteration.
-            for (int i = 0; i < pendingIdleHandlerCount; i++) {
-                final IdleHandler idler = mPendingIdleHandlers[i];
-                mPendingIdleHandlers[i] = null; // release the reference to the handler
-
-                boolean keep = false;
-                try {
-                    keep = idler.queueIdle();
-                } catch (Throwable t) {
-                    Log.wtf(TAG, "IdleHandler threw exception", t);
-                }
-
-                if (!keep) {
-                    synchronized (this) {
-                        mIdleHandlers.remove(idler);
-                    }
-                }
-            }
-
-            // Reset the idle handler count to 0 so we do not run them again.
-            pendingIdleHandlerCount = 0;
-
-            // While calling an idle handler, a new message could have been delivered
-            // so go back and look again for a pending message without waiting.
-            nextPollTimeoutMillis = 0;
-        }
-    }
-
-    void quit(boolean safe) {
-        if (!mQuitAllowed) {
-            throw new IllegalStateException("Main thread not allowed to quit.");
-        }
-
-        synchronized (this) {
-            if (mQuitting) {
-                return;
-            }
-            mQuitting = true;
-
-            if (safe) {
-                removeAllFutureMessagesLocked();
-            } else {
-                removeAllMessagesLocked();
-            }
-
-            // We can assume mPtr != 0 because mQuitting was previously false.
-            nativeWake(mPtr);
-        }
-    }
-
-    /**
-     * Posts a synchronization barrier to the Looper's message queue.
-     *
-     * Message processing occurs as usual until the message queue encounters the
-     * synchronization barrier that has been posted.  When the barrier is encountered,
-     * later synchronous messages in the queue are stalled (prevented from being executed)
-     * until the barrier is released by calling {@link #removeSyncBarrier} and specifying
-     * the token that identifies the synchronization barrier.
-     *
-     * This method is used to immediately postpone execution of all subsequently posted
-     * synchronous messages until a condition is met that releases the barrier.
-     * Asynchronous messages (see {@link Message#isAsynchronous} are exempt from the barrier
-     * and continue to be processed as usual.
-     *
-     * This call must be always matched by a call to {@link #removeSyncBarrier} with
-     * the same token to ensure that the message queue resumes normal operation.
-     * Otherwise the application will probably hang!
-     *
-     * @return A token that uniquely identifies the barrier.  This token must be
-     * passed to {@link #removeSyncBarrier} to release the barrier.
-     *
-     * @hide
-     */
-    @UnsupportedAppUsage
-    @TestApi
-    public int postSyncBarrier() {
-        return postSyncBarrier(SystemClock.uptimeMillis());
-    }
-
-    private int postSyncBarrier(long when) {
-        // Enqueue a new sync barrier token.
-        // We don't need to wake the queue because the purpose of a barrier is to stall it.
-        synchronized (this) {
-            final int token = mNextBarrierToken++;
-            final Message msg = Message.obtain();
-            msg.arg1 = token;
-
-            enqueueMessageUnchecked(msg, when);
-            return token;
-        }
-    }
-
-    private class MatchBarrierToken extends MessageHeap.MessageHeapCompare {
-        int mBarrierToken;
-
-        MatchBarrierToken(int token) {
-            super();
-            mBarrierToken = token;
-        }
-
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == null && m.arg1 == mBarrierToken) {
-                return true;
-            }
-            return false;
-        }
-    }
-
-    /**
-     * Removes a synchronization barrier.
-     *
-     * @param token The synchronization barrier token that was returned by
-     * {@link #postSyncBarrier}.
-     *
-     * @throws IllegalStateException if the barrier was not found.
-     *
-     * @hide
-     */
-    @UnsupportedAppUsage
-    @TestApi
-    public void removeSyncBarrier(int token) {
-        final MatchBarrierToken matchBarrierToken = new MatchBarrierToken(token);
-
-        // Remove a sync barrier token from the queue.
-        // If the queue is no longer stalled by a barrier then wake it.
-        synchronized (this) {
-            boolean removed;
-            Message first = mPriorityQueue.peek();
-
-            removed = mPriorityQueue.findOrRemoveMessages(null, 0, null, null, 0,
-                    matchBarrierToken, true);
-            if (removed && first != null) {
-                // If the loop is quitting then it is already awake.
-                // We can assume mPtr != 0 when mQuitting is false.
-                if (first.target == null && first.arg1 == token && !mQuitting) {
-                    nativeWake(mPtr);
-                }
-            } else if (!removed) {
-                throw new IllegalStateException("The specified message queue synchronization "
-                        + " barrier token has not been posted or has already been removed.");
-            }
-        }
-    }
-
-    boolean enqueueMessage(Message msg, long when) {
-        if (msg.target == null) {
-            throw new IllegalArgumentException("Message must have a target.");
-        }
-
-        return enqueueMessageUnchecked(msg, when);
-    }
-
-    boolean enqueueMessageUnchecked(Message msg, long when) {
-        synchronized (this) {
-            if (mQuitting) {
-                IllegalStateException e = new IllegalStateException(
-                        msg.target + " sending message to a Handler on a dead thread");
-                Log.w(TAG, e.getMessage(), e);
-                msg.recycle();
-                return false;
-            }
-
-            if (msg.isInUse()) {
-                throw new IllegalStateException(msg + " This message is already in use.");
-            }
-
-            msg.markInUse();
-            msg.when = when;
-            msg.mInsertSeq = when != 0 ? mNextInsertSeq++ : mNextFrontInsertSeq--;
-            if (DEBUG) Log.v(TAG, "Enqueue message: " + msg);
-            boolean needWake;
-            boolean isBarrier = msg.target == null;
-            Message first = peekEarliestMessage();
-
-            if (priorityQueuesAreEmpty() || when == 0 || when < first.when) {
-                needWake = mBlocked && !isBarrier;
-            } else {
-                Message firstNonAsyncMessage =
-                        first.isAsynchronous() ? mPriorityQueue.peek() : first;
-
-                needWake = mBlocked && firstNonAsyncMessage != null
-                        && firstNonAsyncMessage.target == null && msg.isAsynchronous();
-            }
-
-            if (msg.isAsynchronous()) {
-                mAsyncPriorityQueue.add(msg);
-            } else {
-                mPriorityQueue.add(msg);
-            }
-
-            // We can assume mPtr != 0 because mQuitting is false.
-            if (needWake) {
-                nativeWake(mPtr);
-            }
-        }
-        return true;
-    }
-
-    @GuardedBy("this")
-    boolean findOrRemoveMessages(Handler h, int what, Object object, Runnable r, long when,
-                MessageHeap.MessageHeapCompare compare, boolean removeMatches) {
-        boolean found = mPriorityQueue.findOrRemoveMessages(h, what, object, r, when, compare,
-                removeMatches);
-        boolean foundAsync = mAsyncPriorityQueue.findOrRemoveMessages(h, what, object, r, when,
-                compare, removeMatches);
-        return found || foundAsync;
-    }
-
-    private static class MatchHandlerWhatAndObject extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.what == what && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerWhatAndObject sMatchHandlerWhatAndObject =
-            new MatchHandlerWhatAndObject();
-
-    boolean hasMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        synchronized (this) {
-            return findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObject,
-                    false);
-        }
-    }
-
-    private static class MatchHandlerWhatAndObjectEquals extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.what == what && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerWhatAndObjectEquals sMatchHandlerWhatAndObjectEquals =
-            new MatchHandlerWhatAndObjectEquals();
-    boolean hasEqualMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        synchronized (this) {
-            return findOrRemoveMessages(h, what, object, null, 0,
-                    sMatchHandlerWhatAndObjectEquals, false);
-        }
-    }
-
-    private static class MatchHandlerRunnableAndObject extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.callback == r && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerRunnableAndObject sMatchHandlerRunnableAndObject =
-            new MatchHandlerRunnableAndObject();
-    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
-    boolean hasMessages(Handler h, Runnable r, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        synchronized (this) {
-            return findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObject,
-                    false);
-        }
-    }
-
-    private static class MatchHandler extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandler sMatchHandler = new MatchHandler();
-    boolean hasMessages(Handler h) {
-        if (h == null) {
-            return false;
-        }
-
-        synchronized (this) {
-            return findOrRemoveMessages(h, -1, null, null, 0, sMatchHandler, false);
-        }
-    }
-
-    void removeMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObject, true);
-        }
-    }
-
-    void removeEqualMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObjectEquals, true);
-        }
-    }
-
-    void removeMessages(Handler h, Runnable r, Object object) {
-        if (h == null || r == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObject, true);
-        }
-    }
-
-    private static class MatchHandlerRunnableAndObjectEquals
-            extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.callback == r && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerRunnableAndObjectEquals sMatchHandlerRunnableAndObjectEquals =
-            new MatchHandlerRunnableAndObjectEquals();
-    void removeEqualMessages(Handler h, Runnable r, Object object) {
-        if (h == null || r == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObjectEquals, true);
-        }
-    }
-
-    private static class MatchHandlerAndObject extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerAndObject sMatchHandlerAndObject = new MatchHandlerAndObject();
-    void removeCallbacksAndMessages(Handler h, Object object) {
-        if (h == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, -1, object, null, 0, sMatchHandlerAndObject, true);
-        }
-    }
-
-    private static class MatchHandlerAndObjectEquals extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchHandlerAndObjectEquals sMatchHandlerAndObjectEquals =
-            new MatchHandlerAndObjectEquals();
-    void removeCallbacksAndEqualMessages(Handler h, Object object) {
-        if (h == null) {
-            return;
-        }
-
-        synchronized (this) {
-            findOrRemoveMessages(h, -1, object, null, 0, sMatchHandlerAndObjectEquals, true);
-        }
-    }
-
-    @GuardedBy("this")
-    private void removeAllMessagesLocked() {
-        mPriorityQueue.removeAll();
-        mAsyncPriorityQueue.removeAll();
-    }
-
-    private static class MatchAllFutureMessages extends MessageHeap.MessageHeapCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.when > when) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private static final MatchAllFutureMessages sMatchAllFutureMessages =
-            new MatchAllFutureMessages();
-    @GuardedBy("this")
-    private void removeAllFutureMessagesLocked() {
-        findOrRemoveMessages(null, -1, null, null, SystemClock.uptimeMillis(),
-                sMatchAllFutureMessages, true);
-    }
-
-    @NeverCompile
-    int dumpPriorityQueue(Printer pw, String prefix, Handler h, MessageHeap priorityQueue) {
-        int n = 0;
-        long now = SystemClock.uptimeMillis();
-        for (int i = 0; i < priorityQueue.numElements(); i++) {
-            Message m = priorityQueue.getMessageAt(i);
-            if (h == null && h == m.target) {
-                pw.println(prefix + "Message " + n + ": " + m.toString(now));
-                n++;
-            }
-        }
-        return n;
-    }
-
-    @NeverCompile
-    void dumpPriorityQueue(ProtoOutputStream proto, MessageHeap priorityQueue) {
-        for (int i = 0; i < priorityQueue.numElements(); i++) {
-            Message m = priorityQueue.getMessageAt(i);
-            m.dumpDebug(proto, MessageQueueProto.MESSAGES);
-        }
-    }
-
-    @NeverCompile
-    void dump(Printer pw, String prefix, Handler h) {
-        synchronized (this) {
-            pw.println(prefix + "(MessageQueue is using Locked implementation)");
-            long now = SystemClock.uptimeMillis();
-            int n = dumpPriorityQueue(pw, prefix, h, mPriorityQueue);
-            n += dumpPriorityQueue(pw, prefix, h, mAsyncPriorityQueue);
-            pw.println(prefix + "(Total messages: " + n + ", polling=" + isPollingLocked()
-                    + ", quitting=" + mQuitting + ")");
-        }
-    }
-
-    @NeverCompile
-    void dumpDebug(ProtoOutputStream proto, long fieldId) {
-        final long messageQueueToken = proto.start(fieldId);
-        synchronized (this) {
-            dumpPriorityQueue(proto, mPriorityQueue);
-            dumpPriorityQueue(proto, mAsyncPriorityQueue);
-            proto.write(MessageQueueProto.IS_POLLING_LOCKED, isPollingLocked());
-            proto.write(MessageQueueProto.IS_QUITTING, mQuitting);
-        }
-        proto.end(messageQueueToken);
-    }
-
-    /**
-     * Callback interface for discovering when a thread is going to block
-     * waiting for more messages.
-     */
-    public static interface IdleHandler {
-        /**
-         * Called when the message queue has run out of messages and will now
-         * wait for more.  Return true to keep your idle handler active, false
-         * to have it removed.  This may be called if there are still messages
-         * pending in the queue, but they are all scheduled to be dispatched
-         * after the current time.
-         */
-        boolean queueIdle();
-    }
-
-    /**
-     * A listener which is invoked when file descriptor related events occur.
-     */
-    public interface OnFileDescriptorEventListener {
-        /**
-         * File descriptor event: Indicates that the file descriptor is ready for input
-         * operations, such as reading.
-         * <p>
-         * The listener should read all available data from the file descriptor
-         * then return <code>true</code> to keep the listener active or <code>false</code>
-         * to remove the listener.
-         * </p><p>
-         * In the case of a socket, this event may be generated to indicate
-         * that there is at least one incoming connection that the listener
-         * should accept.
-         * </p><p>
-         * This event will only be generated if the {@link #EVENT_INPUT} event mask was
-         * specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_INPUT = 1 << 0;
-
-        /**
-         * File descriptor event: Indicates that the file descriptor is ready for output
-         * operations, such as writing.
-         * <p>
-         * The listener should write as much data as it needs.  If it could not
-         * write everything at once, then it should return <code>true</code> to
-         * keep the listener active.  Otherwise, it should return <code>false</code>
-         * to remove the listener then re-register it later when it needs to write
-         * something else.
-         * </p><p>
-         * This event will only be generated if the {@link #EVENT_OUTPUT} event mask was
-         * specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_OUTPUT = 1 << 1;
-
-        /**
-         * File descriptor event: Indicates that the file descriptor encountered a
-         * fatal error.
-         * <p>
-         * File descriptor errors can occur for various reasons.  One common error
-         * is when the remote peer of a socket or pipe closes its end of the connection.
-         * </p><p>
-         * This event may be generated at any time regardless of whether the
-         * {@link #EVENT_ERROR} event mask was specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_ERROR = 1 << 2;
-
-        /** @hide */
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef(flag = true, prefix = { "EVENT_" }, value = {
-                EVENT_INPUT,
-                EVENT_OUTPUT,
-                EVENT_ERROR
-        })
-        public @interface Events {}
-
-        /**
-         * Called when a file descriptor receives events.
-         *
-         * @param fd The file descriptor.
-         * @param events The set of events that occurred: a combination of the
-         * {@link #EVENT_INPUT}, {@link #EVENT_OUTPUT}, and {@link #EVENT_ERROR} event masks.
-         * @return The new set of events to watch, or 0 to unregister the listener.
-         *
-         * @see #EVENT_INPUT
-         * @see #EVENT_OUTPUT
-         * @see #EVENT_ERROR
-         */
-        @Events int onFileDescriptorEvents(@NonNull FileDescriptor fd, @Events int events);
-    }
-
-    private static final class FileDescriptorRecord {
-        public final FileDescriptor mDescriptor;
-        public int mEvents;
-        public OnFileDescriptorEventListener mListener;
-        public int mSeq;
-
-        public FileDescriptorRecord(FileDescriptor descriptor,
-                int events, OnFileDescriptorEventListener listener) {
-            mDescriptor = descriptor;
-            mEvents = events;
-            mListener = listener;
-        }
-    }
-}
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index d16e447..1329b90 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -200,7 +200,11 @@
         }
 
         PerfettoTrace.begin(PerfettoTrace.MQ_CATEGORY, "message_queue_receive")
-                .addArg("sending_thread", msg.mSendingThreadName)
+                .beginProto()
+                .beginNested(2004 /* message_queue */)
+                .addField(1 /* sending_thread_name */, msg.mSendingThreadName)
+                .endNested()
+                .endProto()
                 .addTerminatingFlow(msg.mEventId.get())
                 .emit();
 
diff --git a/core/java/android/os/PerfettoTrackEventExtra.java b/core/java/android/os/PerfettoTrackEventExtra.java
index adb98aa..6844229 100644
--- a/core/java/android/os/PerfettoTrackEventExtra.java
+++ b/core/java/android/os/PerfettoTrackEventExtra.java
@@ -23,6 +23,8 @@
 
 import libcore.util.NativeAllocationRegistry;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Supplier;
 
@@ -50,6 +52,7 @@
     private static final Supplier<FieldString> sFieldStringSupplier = FieldString::new;
     private static final Supplier<FieldNested> sFieldNestedSupplier = FieldNested::new;
 
+    private final List<PerfettoPointer> mPendingPointers = new ArrayList<>();
     private CounterInt64 mCounterInt64;
     private CounterDouble mCounterDouble;
     private Proto mProto;
@@ -592,7 +595,7 @@
             checkContainer();
             FieldInt64 field = mFieldInt64Cache.get(sFieldInt64Supplier);
             field.setValue(id, val);
-            mCurrentContainer.addField(field);
+            mExtra.addPerfettoPointer(mCurrentContainer, field);
             return this;
         }
 
@@ -601,7 +604,7 @@
             checkContainer();
             FieldDouble field = mFieldDoubleCache.get(sFieldDoubleSupplier);
             field.setValue(id, val);
-            mCurrentContainer.addField(field);
+            mExtra.addPerfettoPointer(mCurrentContainer, field);
             return this;
         }
 
@@ -610,7 +613,7 @@
             checkContainer();
             FieldString field = mFieldStringCache.get(sFieldStringSupplier);
             field.setValue(id, val);
-            mCurrentContainer.addField(field);
+            mExtra.addPerfettoPointer(mCurrentContainer, field);
             return this;
         }
 
@@ -635,7 +638,7 @@
             checkContainer();
             FieldNested field = mFieldNestedCache.get(sFieldNestedSupplier);
             field.setId(id);
-            mCurrentContainer.addField(field);
+            mExtra.addPerfettoPointer(mCurrentContainer, field);
             return mBuilderCache.get(sBuilderSupplier).initInternal(this, field);
         }
 
@@ -735,6 +738,15 @@
      */
     public void addPerfettoPointer(PerfettoPointer extra) {
         native_add_arg(mPtr, extra.getPtr());
+        mPendingPointers.add(extra);
+    }
+
+    /**
+     * Adds a pointer representing a track event parameter to the {@code container}.
+     */
+    public void addPerfettoPointer(FieldContainer container, PerfettoPointer extra) {
+        container.addField(extra);
+        mPendingPointers.add(extra);
     }
 
     /**
@@ -742,6 +754,7 @@
      */
     public void reset() {
         native_clear_args(mPtr);
+        mPendingPointers.clear();
     }
 
     private CounterInt64 getCounterInt64() {
diff --git a/core/java/android/os/SemiConcurrentMessageQueue/MessageQueue.java b/core/java/android/os/SemiConcurrentMessageQueue/MessageQueue.java
deleted file mode 100644
index 435c34f..0000000
--- a/core/java/android/os/SemiConcurrentMessageQueue/MessageQueue.java
+++ /dev/null
@@ -1,1600 +0,0 @@
-/*
- * 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.
- */
-
-package android.os;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.TestApi;
-import android.ravenwood.annotation.RavenwoodKeepWholeClass;
-import android.ravenwood.annotation.RavenwoodRedirect;
-import android.ravenwood.annotation.RavenwoodRedirectionClass;
-import android.util.Log;
-import android.util.Printer;
-import android.util.SparseArray;
-import android.util.proto.ProtoOutputStream;
-
-import com.android.internal.annotations.GuardedBy;
-
-import dalvik.annotation.optimization.NeverCompile;
-
-import java.io.FileDescriptor;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.VarHandle;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import java.util.PriorityQueue;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Low-level class holding the list of messages to be dispatched by a
- * {@link Looper}.  Messages are not added directly to a MessageQueue,
- * but rather through {@link Handler} objects associated with the Looper.
- *
- * <p>You can retrieve the MessageQueue for the current thread with
- * {@link Looper#myQueue() Looper.myQueue()}.
- */
-@RavenwoodKeepWholeClass
-@RavenwoodRedirectionClass("MessageQueue_ravenwood")
-public final class MessageQueue {
-    private static final String TAG = "SemiConcurrentMessageQueue";
-    private static final boolean DEBUG = false;
-    private static final boolean TRACE = false;
-
-    // True if the message queue can be quit.
-    private final boolean mQuitAllowed;
-
-    @SuppressWarnings("unused")
-    private long mPtr; // used by native code
-
-    @IntDef(value = {
-        STACK_NODE_MESSAGE,
-        STACK_NODE_ACTIVE,
-        STACK_NODE_PARKED,
-        STACK_NODE_TIMEDPARK})
-    @Retention(RetentionPolicy.SOURCE)
-    private @interface StackNodeType {}
-
-    /*
-     * Stack node types. STACK_NODE_MESSAGE indicates a node containing a message.
-     * The other types indicate what state our Looper thread is in. The bottom of
-     * the stack is always a single state node. Message nodes are added on top.
-     */
-    private static final int STACK_NODE_MESSAGE = 0;
-    /*
-     * Active state indicates that next() is processing messages
-     */
-    private static final int STACK_NODE_ACTIVE = 1;
-    /*
-     * Parked state indicates that the Looper thread is sleeping indefinitely (nothing to deliver)
-     */
-    private static final int STACK_NODE_PARKED = 2;
-    /*
-     * Timed Park state indicates that the Looper thread is sleeping, waiting for a message
-     * deadline
-     */
-    private static final int STACK_NODE_TIMEDPARK = 3;
-
-    /* Describes a node in the Treiber stack */
-    static class StackNode {
-        @StackNodeType
-        private final int mType;
-
-        StackNode(@StackNodeType int type) {
-            mType = type;
-        }
-
-        @StackNodeType
-        final int getNodeType() {
-            return mType;
-        }
-
-        final boolean isMessageNode() {
-            return mType == STACK_NODE_MESSAGE;
-        }
-    }
-
-    static final class MessageNode extends StackNode implements Comparable<MessageNode> {
-        private final Message mMessage;
-        volatile StackNode mNext;
-        StateNode mBottomOfStack;
-        boolean mWokeUp;
-        boolean mRemovedFromStack = false;
-        final long mInsertSeq;
-
-        MessageNode(@NonNull Message message, long insertSeq) {
-            super(STACK_NODE_MESSAGE);
-            mMessage = message;
-            mInsertSeq = insertSeq;
-        }
-
-        long getWhen() {
-            return mMessage.when;
-        }
-
-        boolean isRemovedFromStack() {
-            return mRemovedFromStack;
-        }
-
-        boolean removeFromStack() {
-            if (!mRemovedFromStack) {
-                mRemovedFromStack = true;
-                return true;
-            }
-            return false;
-        }
-
-        boolean isAsync() {
-            return mMessage.isAsynchronous();
-        }
-
-        boolean isBarrier() {
-            return mMessage.target == null;
-        }
-
-        @Override
-        public int compareTo(@NonNull MessageNode messageNode) {
-            Message other = messageNode.mMessage;
-
-            int compared = Long.compare(mMessage.when, other.when);
-            if (compared == 0) {
-                compared = Long.compare(mInsertSeq, messageNode.mInsertSeq);
-            }
-            return compared;
-        }
-    }
-
-    static class StateNode extends StackNode {
-        StateNode(int type) {
-            super(type);
-        }
-    }
-
-    static final class TimedParkStateNode extends StateNode {
-        long mWhenToWake;
-
-        TimedParkStateNode() {
-            super(STACK_NODE_TIMEDPARK);
-        }
-    }
-
-    private static final StateNode sStackStateActive = new StateNode(STACK_NODE_ACTIVE);
-    private static final StateNode sStackStateParked = new StateNode(STACK_NODE_PARKED);
-    private final TimedParkStateNode mStackStateTimedPark = new TimedParkStateNode();
-
-    /* This is the top of our treiber stack. */
-    private static final VarHandle sState;
-    static {
-        try {
-            MethodHandles.Lookup l = MethodHandles.lookup();
-            sState = l.findVarHandle(MessageQueue.class, "mStateValue",
-                    MessageQueue.StackNode.class);
-        } catch (Exception e) {
-            Log.wtf(TAG, "VarHandle lookup failed with exception: " + e);
-            throw new ExceptionInInitializerError(e);
-        }
-    }
-
-    private volatile StackNode mStateValue = sStackStateParked;
-    @GuardedBy("mPriorityQueue")
-    private final PriorityQueue<MessageNode> mPriorityQueue =
-            new PriorityQueue<MessageNode>();
-    @GuardedBy("mPriorityQueue")
-    private final PriorityQueue<MessageNode> mAsyncPriorityQueue =
-            new PriorityQueue<MessageNode>();
-
-    /*
-     * This helps us ensure that messages with the same timestamp are inserted in FIFO order.
-     * Increments on each insert, starting at 0. MessageNode.compareTo() will compare sequences
-     * when delivery timestamps are identical.
-     */
-    private static final VarHandle sNextInsertSeq;
-    private volatile long mNextInsertSeqValue = 0;
-    /*
-     * The exception to the FIFO order rule is sendMessageAtFrontOfQueue().
-     * Those messages must be in LIFO order.
-     * Decrements on each front of queue insert.
-     */
-    private static final VarHandle sNextFrontInsertSeq;
-    private volatile long mNextFrontInsertSeqValue = -1;
-    static {
-        try {
-            MethodHandles.Lookup l = MethodHandles.lookup();
-            sNextInsertSeq = l.findVarHandle(MessageQueue.class, "mNextInsertSeqValue",
-                    long.class);
-            sNextFrontInsertSeq = l.findVarHandle(MessageQueue.class, "mNextFrontInsertSeqValue",
-                    long.class);
-        } catch (Exception e) {
-            Log.wtf(TAG, "VarHandle lookup failed with exception: " + e);
-            throw new ExceptionInInitializerError(e);
-        }
-
-    }
-
-    /*
-     * Tracks the number of queued and cancelled messages in our stack.
-     *
-     * On item cancellation, determine whether to wake next() to flush tombstoned messages.
-     * We track queued and cancelled counts as two ints packed into a single long.
-     */
-    private static final class MessageCounts {
-        private static VarHandle sCounts;
-        private volatile long mCountsValue = 0;
-        static {
-            try {
-                MethodHandles.Lookup l = MethodHandles.lookup();
-                sCounts = l.findVarHandle(MessageQueue.MessageCounts.class, "mCountsValue",
-                        long.class);
-            } catch (Exception e) {
-                Log.wtf(TAG, "VarHandle lookup failed with exception: " + e);
-                throw new ExceptionInInitializerError(e);
-            }
-        }
-        /* We use a special value to indicate when next() has been woken for flush. */
-        private static final long AWAKE = Long.MAX_VALUE;
-        /*
-         * Minimum number of messages in the stack which we need before we consider flushing
-         * tombstoned items.
-         */
-        private static final int MESSAGE_FLUSH_THRESHOLD = 10;
-
-        private static int numQueued(long val) {
-            return (int) (val >>> Integer.SIZE);
-        }
-
-        private static int numCancelled(long val) {
-            return (int) val;
-        }
-
-        private static long combineCounts(int queued, int cancelled) {
-            return ((long) queued << Integer.SIZE) | (long) cancelled;
-        }
-
-        public void incrementQueued() {
-            while (true) {
-                long oldVal = mCountsValue;
-                int queued = numQueued(oldVal);
-                int cancelled = numCancelled(oldVal);
-                /* Use Math.max() to avoid overflow of queued count */
-                long newVal = combineCounts(Math.max(queued + 1, queued), cancelled);
-
-                /* Don't overwrite 'AWAKE' state */
-                if (oldVal == AWAKE || sCounts.compareAndSet(this, oldVal, newVal)) {
-                    break;
-                }
-            }
-        }
-
-        public boolean incrementCancelled() {
-            while (true) {
-                long oldVal = mCountsValue;
-                if (oldVal == AWAKE) {
-                    return false;
-                }
-                int queued = numQueued(oldVal);
-                int cancelled = numCancelled(oldVal);
-                boolean needsPurge = queued > MESSAGE_FLUSH_THRESHOLD
-                        && (queued >> 1) < cancelled;
-                long newVal;
-                if (needsPurge) {
-                    newVal = AWAKE;
-                } else {
-                    newVal = combineCounts(queued,
-                            Math.max(cancelled + 1, cancelled));
-                }
-
-                if (sCounts.compareAndSet(this, oldVal, newVal)) {
-                    return needsPurge;
-                }
-            }
-        }
-
-        public void clearCounts() {
-            mCountsValue = 0;
-        }
-    }
-
-    private final MessageCounts mMessageCounts = new MessageCounts();
-
-    private final Object mIdleHandlersLock = new Object();
-    @GuardedBy("mIdleHandlersLock")
-    private final ArrayList<IdleHandler> mIdleHandlers = new ArrayList<IdleHandler>();
-    private IdleHandler[] mPendingIdleHandlers;
-
-    private final Object mFileDescriptorRecordsLock = new Object();
-    @GuardedBy("mFileDescriptorRecordsLock")
-    private SparseArray<FileDescriptorRecord> mFileDescriptorRecords;
-
-    private static final VarHandle sQuitting;
-    private boolean mQuittingValue = false;
-    static {
-        try {
-            MethodHandles.Lookup l = MethodHandles.lookup();
-            sQuitting = l.findVarHandle(MessageQueue.class, "mQuittingValue", boolean.class);
-        } catch (Exception e) {
-            Log.wtf(TAG, "VarHandle lookup failed with exception: " + e);
-            throw new ExceptionInInitializerError(e);
-        }
-    }
-
-    // The next barrier token.
-    // Barriers are indicated by messages with a null target whose arg1 field carries the token.
-    private final AtomicInteger mNextBarrierToken = new AtomicInteger(1);
-
-    @RavenwoodRedirect
-    private static native long nativeInit();
-    @RavenwoodRedirect
-    private static native void nativeDestroy(long ptr);
-    @RavenwoodRedirect
-    private native void nativePollOnce(long ptr, int timeoutMillis); /*non-static for callbacks*/
-    @RavenwoodRedirect
-    private static native void nativeWake(long ptr);
-    @RavenwoodRedirect
-    private static native boolean nativeIsPolling(long ptr);
-    @RavenwoodRedirect
-    private static native void nativeSetFileDescriptorEvents(long ptr, int fd, int events);
-
-    MessageQueue(boolean quitAllowed) {
-        mQuitAllowed = quitAllowed;
-        mPtr = nativeInit();
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        try {
-            dispose();
-        } finally {
-            super.finalize();
-        }
-    }
-
-    // Disposes of the underlying message queue.
-    // Must only be called on the looper thread or the finalizer.
-    private void dispose() {
-        if (mPtr != 0) {
-            nativeDestroy(mPtr);
-            mPtr = 0;
-        }
-    }
-
-    /**
-     * Returns true if the looper has no pending messages which are due to be processed.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @return True if the looper is idle.
-     */
-    public boolean isIdle() {
-        MessageNode msgNode = null;
-        MessageNode asyncMsgNode = null;
-
-        synchronized (mPriorityQueue) {
-            msgNode = mPriorityQueue.peek();
-            asyncMsgNode = mAsyncPriorityQueue.peek();
-
-            final long now = SystemClock.uptimeMillis();
-            if ((msgNode != null && msgNode.getWhen() <= now)
-                    || (asyncMsgNode != null && asyncMsgNode.getWhen() <= now)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Add a new {@link IdleHandler} to this message queue.  This may be
-     * removed automatically for you by returning false from
-     * {@link IdleHandler#queueIdle IdleHandler.queueIdle()} when it is
-     * invoked, or explicitly removing it with {@link #removeIdleHandler}.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @param handler The IdleHandler to be added.
-     */
-    public void addIdleHandler(@NonNull IdleHandler handler) {
-        if (handler == null) {
-            throw new NullPointerException("Can't add a null IdleHandler");
-        }
-        synchronized (mIdleHandlersLock) {
-            mIdleHandlers.add(handler);
-        }
-    }
-
-    /**
-     * Remove an {@link IdleHandler} from the queue that was previously added
-     * with {@link #addIdleHandler}.  If the given object is not currently
-     * in the idle list, nothing is done.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @param handler The IdleHandler to be removed.
-     */
-    public void removeIdleHandler(@NonNull IdleHandler handler) {
-        synchronized (mIdleHandlersLock) {
-            mIdleHandlers.remove(handler);
-        }
-    }
-
-    /**
-     * Returns whether this looper's thread is currently polling for more work to do.
-     * This is a good signal that the loop is still alive rather than being stuck
-     * handling a callback.  Note that this method is intrinsically racy, since the
-     * state of the loop can change before you get the result back.
-     *
-     * <p>This method is safe to call from any thread.
-     *
-     * @return True if the looper is currently polling for events.
-     * @hide
-     */
-    public boolean isPolling() {
-        // If the loop is quitting then it must not be idling.
-        // We can assume mPtr != 0 when sQuitting is false.
-        return !((boolean) sQuitting.getVolatile(this)) && nativeIsPolling(mPtr);
-    }
-
-    /* Helper to choose the correct queue to insert into. */
-    @GuardedBy("mPriorityQueue")
-    private void insertIntoPriorityQueue(MessageNode msgNode) {
-        if (msgNode.isAsync()) {
-            mAsyncPriorityQueue.offer(msgNode);
-        } else {
-            mPriorityQueue.offer(msgNode);
-        }
-    }
-
-    @GuardedBy("mPriorityQueue")
-    private boolean removeFromPriorityQueue(MessageNode msgNode) {
-        if (msgNode.isAsync()) {
-            return mAsyncPriorityQueue.remove(msgNode);
-        } else {
-            return mPriorityQueue.remove(msgNode);
-        }
-    }
-
-    private MessageNode pickEarliestNode(MessageNode nodeA, MessageNode nodeB) {
-        if (nodeA != null && nodeB != null) {
-            if (nodeA.compareTo(nodeB) < 0) {
-                return nodeA;
-            }
-            return nodeB;
-        }
-
-        return nodeA != null ? nodeA : nodeB;
-    }
-
-    /* Move any non-cancelled messages into the priority queue */
-    private void drainStack(StackNode oldTop) {
-        while (oldTop.isMessageNode()) {
-            MessageNode oldTopMessageNode = (MessageNode) oldTop;
-            if (oldTopMessageNode.removeFromStack()) {
-                insertIntoPriorityQueue(oldTopMessageNode);
-            }
-            MessageNode inserted = oldTopMessageNode;
-            oldTop = oldTopMessageNode.mNext;
-        }
-    }
-
-    /* Set the stack state to Active, return a list of nodes to walk. */
-    private StackNode swapAndSetStackStateActive() {
-        while (true) {
-            /* Set stack state to Active, get node list to walk later */
-            StackNode current = (StackNode) sState.getVolatile(this);
-            if (current == sStackStateActive
-                    || sState.compareAndSet(this, current, sStackStateActive)) {
-                return current;
-            }
-        }
-    }
-
-    /* This is only read/written from the Looper thread */
-    private int mNextPollTimeoutMillis;
-    private static final AtomicLong mMessagesDelivered = new AtomicLong();
-
-    private Message nextMessage() {
-        int i = 0;
-
-        while (true) {
-            if (DEBUG) {
-                Log.d(TAG, "nextMessage loop #" + i);
-                i++;
-            }
-
-            /* This protects us from racing with remove. Enqueue can still add items. */
-            synchronized (mPriorityQueue) {
-
-                /*
-                 * Set our state to active, drain any items from the stack into our priority queues
-                 */
-                StackNode oldTop;
-                oldTop = swapAndSetStackStateActive();
-                drainStack(oldTop);
-
-                /*
-                 * The objective of this next block of code is to:
-                 *  - find a message to return (if any is ready)
-                 *  - find a next message we would like to return, after scheduling.
-                 *     - we make our scheduling decision based on this next message (if it exists).
-                 *
-                 * We have two queues to juggle and the presence of barriers throws an additional
-                 * wrench into our plans.
-                */
-
-                /* Get the first node from each queue */
-                MessageNode msgNode = mPriorityQueue.peek();
-                MessageNode asyncMsgNode = mAsyncPriorityQueue.peek();
-
-                if (DEBUG) {
-                    if (msgNode != null) {
-                        Message msg = msgNode.mMessage;
-                        Log.d(TAG, "Next found node what: " + msg.what + " when: " + msg.when
-                                + " seq: " + msgNode.mInsertSeq + "barrier: "
-                                + msgNode.isBarrier() + " now: "
-                                + SystemClock.uptimeMillis());
-                    }
-                    if (asyncMsgNode != null) {
-                        Message msg = asyncMsgNode.mMessage;
-                        Log.d(TAG, "Next found async node what: " + msg.what + " when: " + msg.when
-                                + " seq: " + asyncMsgNode.mInsertSeq + "barrier: "
-                                + asyncMsgNode.isBarrier() + " now: "
-                                + SystemClock.uptimeMillis());
-                    }
-                }
-
-                /*
-                 * the node which we will return, null if none are ready
-                 */
-                MessageNode found = null;
-                /*
-                 * The node from which we will determine our next wakeup time.
-                 * Null indicates there is no next message ready. If we found a node,
-                 * we can leave this null as Looper will call us again after delivering
-                 * the message.
-                 */
-                MessageNode next = null;
-
-                long now = SystemClock.uptimeMillis();
-                /*
-                 * If we have a barrier we should return the async node if it exists and is
-                 * ready
-                 */
-                if (msgNode != null && msgNode.isBarrier()) {
-                    if (asyncMsgNode != null && now >= asyncMsgNode.getWhen()) {
-                        found = asyncMsgNode;
-                        removeFromPriorityQueue(found);
-                    } else {
-                        next = asyncMsgNode;
-                    }
-                } else { /* No barrier. */
-                    MessageNode earliest;
-                    /*
-                     * If we have two messages, pick the earliest option from either queue.
-                     * Otherwise grab whichever node is non-null. If both are null we'll fall
-                     * through.
-                     */
-                    earliest = pickEarliestNode(msgNode, asyncMsgNode);
-
-                    if (earliest != null) {
-                        if (now >= earliest.getWhen()) {
-                            found = earliest;
-                            removeFromPriorityQueue(found);
-                        } else {
-                            next = earliest;
-                        }
-                    }
-                }
-
-                if (DEBUG) {
-                    if (found != null) {
-                        Message msg = found.mMessage;
-                        Log.d(TAG, "Will deliver node what: " + msg.what + " when: " + msg.when
-                                + " seq: " + found.mInsertSeq + " barrier: "
-                                + found.isBarrier() + " async: " + found.isAsync()
-                                + " now: " + SystemClock.uptimeMillis());
-                    } else {
-                        Log.d(TAG, "No node to deliver");
-                    }
-                    if (next != null) {
-                        Message msg = next.mMessage;
-                        Log.d(TAG, "Next node what: " + msg.what + " when: " + msg.when + " seq: "
-                                + next.mInsertSeq + " barrier: " + next.isBarrier()
-                                + " async: " + next.isAsync()
-                                + " now: " + SystemClock.uptimeMillis());
-                    } else {
-                        Log.d(TAG, "No next node");
-                    }
-                }
-
-                /*
-                 * If we have a found message, we will get called again so there's no need to set
-                 * state.
-                 * In that case we can leave our state as ACTIVE.
-                 *
-                 * Otherwise we should determine how to park the thread.
-                 */
-                StateNode nextOp = sStackStateActive;
-                if (found == null) {
-                    if (next == null) {
-                        /* No message to deliver, sleep indefinitely */
-                        mNextPollTimeoutMillis = -1;
-                        nextOp = sStackStateParked;
-                        if (DEBUG) {
-                            Log.d(TAG, "nextMessage next state is StackStateParked");
-                        }
-                    } else {
-                        /* Message not ready, or we found one to deliver already, set a timeout */
-                        long nextMessageWhen = next.getWhen();
-                        if (nextMessageWhen > now) {
-                            mNextPollTimeoutMillis = (int) Math.min(nextMessageWhen - now,
-                                    Integer.MAX_VALUE);
-                        } else {
-                            mNextPollTimeoutMillis = 0;
-                        }
-
-                        mStackStateTimedPark.mWhenToWake = now + mNextPollTimeoutMillis;
-                        nextOp = mStackStateTimedPark;
-                        if (DEBUG) {
-                            Log.d(TAG, "nextMessage next state is StackStateTimedParked "
-                                    + " next timeout ms " + mNextPollTimeoutMillis
-                                    + " mWhenToWake: " + mStackStateTimedPark.mWhenToWake
-                                    + " now " + now);
-                        }
-                    }
-                }
-
-                /*
-                 * Try to swap our state from Active back to Park or TimedPark. If we raced with
-                 * enqueue, loop back around to pick up any new items.
-                 */
-                if (sState.compareAndSet(this, sStackStateActive, nextOp)) {
-                    mMessageCounts.clearCounts();
-                    if (found != null) {
-                        if (TRACE) {
-                            Trace.setCounter("MQ.Delivered", mMessagesDelivered.incrementAndGet());
-                        }
-                        return found.mMessage;
-                    }
-                    return null;
-                }
-                if (found != null) {
-                    /*
-                     * Add this node back - we will be adding new nodes into our priority queue, and
-                     * recalculating what to return.
-                     */
-                    insertIntoPriorityQueue(found);
-                }
-            }
-        }
-    }
-
-    Message next() {
-        final long ptr = mPtr;
-        if (ptr == 0) {
-            return null;
-        }
-
-        mNextPollTimeoutMillis = 0;
-        int pendingIdleHandlerCount = -1; // -1 only during first iteration
-        while (true) {
-            if (mNextPollTimeoutMillis != 0) {
-                Binder.flushPendingCommands();
-            }
-
-            nativePollOnce(ptr, mNextPollTimeoutMillis);
-
-            Message msg = nextMessage();
-            if (msg != null) {
-                msg.markInUse();
-                return msg;
-            }
-
-            if ((boolean) sQuitting.getVolatile(this)) {
-                return null;
-            }
-
-            synchronized (mIdleHandlersLock) {
-                // If first time idle, then get the number of idlers to run.
-                // Idle handles only run if the queue is empty or if the first message
-                // in the queue (possibly a barrier) is due to be handled in the future.
-                if (pendingIdleHandlerCount < 0
-                        && isIdle()) {
-                    pendingIdleHandlerCount = mIdleHandlers.size();
-                }
-                if (pendingIdleHandlerCount <= 0) {
-                    // No idle handlers to run.  Loop and wait some more.
-                    continue;
-                }
-
-                if (mPendingIdleHandlers == null) {
-                    mPendingIdleHandlers = new IdleHandler[Math.max(pendingIdleHandlerCount, 4)];
-                }
-                mPendingIdleHandlers = mIdleHandlers.toArray(mPendingIdleHandlers);
-            }
-
-            // Run the idle handlers.
-            // We only ever reach this code block during the first iteration.
-            for (int i = 0; i < pendingIdleHandlerCount; i++) {
-                final IdleHandler idler = mPendingIdleHandlers[i];
-                mPendingIdleHandlers[i] = null; // release the reference to the handler
-
-                boolean keep = false;
-                try {
-                    keep = idler.queueIdle();
-                } catch (Throwable t) {
-                    Log.wtf(TAG, "IdleHandler threw exception", t);
-                }
-
-                if (!keep) {
-                    synchronized (mIdleHandlersLock) {
-                        mIdleHandlers.remove(idler);
-                    }
-                }
-            }
-
-            // Reset the idle handler count to 0 so we do not run them again.
-            pendingIdleHandlerCount = 0;
-
-            // While calling an idle handler, a new message could have been delivered
-            // so go back and look again for a pending message without waiting.
-            mNextPollTimeoutMillis = 0;
-        }
-    }
-
-    void quit(boolean safe) {
-        if (!mQuitAllowed) {
-            throw new IllegalStateException("Main thread not allowed to quit.");
-        }
-        synchronized (mIdleHandlersLock) {
-            if (sQuitting.compareAndSet(this, false, true)) {
-                if (safe) {
-                    removeAllFutureMessages();
-                } else {
-                    removeAllMessages();
-                }
-
-                // We can assume mPtr != 0 because sQuitting was previously false.
-                nativeWake(mPtr);
-            }
-        }
-    }
-
-    boolean enqueueMessage(@NonNull Message msg, long when) {
-        if (msg.target == null) {
-            throw new IllegalArgumentException("Message must have a target.");
-        }
-
-        if (msg.isInUse()) {
-            throw new IllegalStateException(msg + " This message is already in use.");
-        }
-
-        return enqueueMessageUnchecked(msg, when);
-    }
-
-    private boolean enqueueMessageUnchecked(@NonNull Message msg, long when) {
-        if ((boolean) sQuitting.getVolatile(this)) {
-            IllegalStateException e = new IllegalStateException(
-                    msg.target + " sending message to a Handler on a dead thread");
-            Log.w(TAG, e.getMessage(), e);
-            msg.recycleUnchecked();
-            return false;
-        }
-
-        long seq = when != 0 ? ((long)sNextInsertSeq.getAndAdd(this, 1L) + 1L)
-                : ((long)sNextFrontInsertSeq.getAndAdd(this, -1L) - 1L);
-        /* TODO: Add a MessageNode member to Message so we can avoid this allocation */
-        MessageNode node = new MessageNode(msg, seq);
-        msg.when = when;
-        msg.markInUse();
-
-        if (DEBUG) {
-            Log.d(TAG, "Insert message what: " + msg.what + " when: " + msg.when + " seq: "
-                    + node.mInsertSeq + " barrier: " + node.isBarrier() + " async: "
-                    + node.isAsync() + " now: " + SystemClock.uptimeMillis());
-        }
-
-        while (true) {
-            StackNode old = (StackNode) sState.getVolatile(this);
-            boolean wakeNeeded;
-            boolean inactive;
-
-            node.mNext = old;
-            switch (old.getNodeType()) {
-                case STACK_NODE_ACTIVE:
-                    /*
-                     * The worker thread is currently active and will process any elements added to
-                     * the stack before parking again.
-                     */
-                    node.mBottomOfStack = (StateNode) old;
-                    inactive = false;
-                    node.mWokeUp = true;
-                    wakeNeeded = false;
-                    break;
-
-                case STACK_NODE_PARKED:
-                    node.mBottomOfStack = (StateNode) old;
-                    inactive = true;
-                    node.mWokeUp = true;
-                    wakeNeeded = true;
-                    break;
-
-                case STACK_NODE_TIMEDPARK:
-                    node.mBottomOfStack = (StateNode) old;
-                    inactive = true;
-                    wakeNeeded = mStackStateTimedPark.mWhenToWake >= node.getWhen();
-                    node.mWokeUp = wakeNeeded;
-                    break;
-
-                default:
-                    MessageNode oldMessage = (MessageNode) old;
-
-                    node.mBottomOfStack = oldMessage.mBottomOfStack;
-                    int bottomType = node.mBottomOfStack.getNodeType();
-                    inactive = bottomType >= STACK_NODE_PARKED;
-                    wakeNeeded = (bottomType == STACK_NODE_TIMEDPARK
-                            && mStackStateTimedPark.mWhenToWake >= node.getWhen()
-                            && !oldMessage.mWokeUp);
-                    node.mWokeUp = oldMessage.mWokeUp || wakeNeeded;
-                    break;
-            }
-            if (sState.compareAndSet(this, old, node)) {
-                if (inactive) {
-                    if (wakeNeeded) {
-                        nativeWake(mPtr);
-                    } else {
-                        mMessageCounts.incrementQueued();
-                    }
-                }
-                return true;
-            }
-        }
-    }
-
-    /**
-     * Posts a synchronization barrier to the Looper's message queue.
-     *
-     * Message processing occurs as usual until the message queue encounters the
-     * synchronization barrier that has been posted.  When the barrier is encountered,
-     * later synchronous messages in the queue are stalled (prevented from being executed)
-     * until the barrier is released by calling {@link #removeSyncBarrier} and specifying
-     * the token that identifies the synchronization barrier.
-     *
-     * This method is used to immediately postpone execution of all subsequently posted
-     * synchronous messages until a condition is met that releases the barrier.
-     * Asynchronous messages (see {@link Message#isAsynchronous} are exempt from the barrier
-     * and continue to be processed as usual.
-     *
-     * This call must be always matched by a call to {@link #removeSyncBarrier} with
-     * the same token to ensure that the message queue resumes normal operation.
-     * Otherwise the application will probably hang!
-     *
-     * @return A token that uniquely identifies the barrier.  This token must be
-     * passed to {@link #removeSyncBarrier} to release the barrier.
-     *
-     * @hide
-     */
-    @TestApi
-    public int postSyncBarrier() {
-        return postSyncBarrier(SystemClock.uptimeMillis());
-    }
-
-    private int postSyncBarrier(long when) {
-        final int token = mNextBarrierToken.getAndIncrement();
-        final Message msg = Message.obtain();
-
-        msg.markInUse();
-        msg.arg1 = token;
-
-        if (!enqueueMessageUnchecked(msg, when)) {
-            Log.wtf(TAG, "Unexpected error while adding sync barrier!");
-            return -1;
-        }
-
-        return token;
-    }
-
-    private class MatchBarrierToken extends MessageCompare {
-        int mBarrierToken;
-
-        MatchBarrierToken(int token) {
-            super();
-            mBarrierToken = token;
-        }
-
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == null && m.arg1 == mBarrierToken) {
-                return true;
-            }
-            return false;
-        }
-    }
-
-    /**
-     * Removes a synchronization barrier.
-     *
-     * @param token The synchronization barrier token that was returned by
-     * {@link #postSyncBarrier}.
-     *
-     * @throws IllegalStateException if the barrier was not found.
-     *
-     * @hide
-     */
-    @TestApi
-    public void removeSyncBarrier(int token) {
-        boolean removed;
-        MessageNode first;
-        final MatchBarrierToken matchBarrierToken = new MatchBarrierToken(token);
-
-        synchronized (mPriorityQueue) {
-            try {
-                /* Retain the first element to see if we are currently stuck on a barrier. */
-                first = mPriorityQueue.peek();
-            } catch (NoSuchElementException e) {
-                /* The queue is empty */
-                first = null;
-            }
-
-            removed = findOrRemoveMessages(null, 0, null, null, 0, matchBarrierToken, true);
-            if (removed && first != null) {
-                Message m = first.mMessage;
-                if (m.target == null && m.arg1 == token) {
-                    /* Wake up next() in case it was sleeping on this barrier. */
-                    nativeWake(mPtr);
-                }
-            } else if (!removed) {
-                throw new IllegalStateException("The specified message queue synchronization "
-                        + " barrier token has not been posted or has already been removed.");
-            }
-        }
-    }
-
-    private StateNode getStateNode(StackNode node) {
-        if (node.isMessageNode()) {
-            return ((MessageNode) node).mBottomOfStack;
-        }
-        return (StateNode) node;
-    }
-
-    /*
-     * This class is used to find matches for hasMessages() and removeMessages()
-     */
-    private abstract static class MessageCompare {
-        public abstract boolean compareMessage(Message m, Handler h, int what, Object object,
-                Runnable r, long when);
-    }
-    @GuardedBy("mPriorityQueue")
-    private boolean stackHasMessages(Handler h, int what, Object object, Runnable r, long when,
-            MessageCompare compare, boolean removeMatches) {
-        boolean found = false;
-        StackNode top = (StackNode) sState.getVolatile(this);
-        StateNode bottom = getStateNode(top);
-
-        /* No messages to search. */
-        if (!top.isMessageNode()) {
-            return false;
-        }
-
-        /*
-         * We have messages that we may tombstone. Walk the stack until we hit the bottom.
-         * next() will remove them on it's next pass.
-         */
-        if (!(top instanceof MessageNode)) {
-            Log.wtf(TAG, "Unknown node type found in Trieber stack");
-        }
-        MessageNode p = (MessageNode) top;
-
-        while (true) {
-            if (compare.compareMessage(p.mMessage, h, what, object, r, when)) {
-                found = true;
-                if (DEBUG) {
-                    Log.w(TAG, "stackHasMessages node matches");
-                }
-                if (removeMatches) {
-                    if (p.removeFromStack()) {
-                        p.mMessage.recycleUnchecked();
-                        if (mMessageCounts.incrementCancelled()) {
-                            nativeWake(mPtr);
-                        }
-                    }
-                } else {
-                    return true;
-                }
-            }
-
-            StackNode n = p.mNext;
-            if (!n.isMessageNode()) {
-                /* We reached the end of the stack */
-                return found;
-            }
-            p = (MessageNode) n;
-        }
-    }
-
-    @GuardedBy("mPriorityQueue")
-    private boolean priorityQueueHasMessage(PriorityQueue queue, Handler h,
-            int what, Object object, Runnable r, long when, MessageCompare compare,
-            boolean removeMatches) {
-        Iterator<MessageNode> iterator = queue.iterator();
-        boolean found = false;
-
-        while (iterator.hasNext()) {
-            MessageNode msg = iterator.next();
-
-            if (compare.compareMessage(msg.mMessage, h, what, object, r, when)) {
-                if (removeMatches) {
-                    found = true;
-                    iterator.remove();
-                    msg.mMessage.recycleUnchecked();
-                } else {
-                    return true;
-                }
-            }
-        }
-        return found;
-    }
-
-    private boolean findOrRemoveMessages(Handler h, int what, Object object, Runnable r, long when,
-            MessageCompare compare, boolean removeMatches) {
-        boolean foundInStack, foundInQueue;
-
-        synchronized (mPriorityQueue) {
-            foundInStack = stackHasMessages(h, what, object, r, when, compare, removeMatches);
-            foundInQueue = priorityQueueHasMessage(mPriorityQueue, h, what, object, r, when,
-                    compare, removeMatches);
-            foundInQueue |= priorityQueueHasMessage(mAsyncPriorityQueue, h, what, object, r, when,
-                    compare, removeMatches);
-
-            return foundInStack || foundInQueue;
-        }
-    }
-
-    private static class MatchHandlerWhatAndObject extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.what == what && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerWhatAndObject mMatchHandlerWhatAndObject =
-            new MatchHandlerWhatAndObject();
-    boolean hasMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        return findOrRemoveMessages(h, what, object, null, 0, mMatchHandlerWhatAndObject, false);
-    }
-
-    private static class MatchHandlerWhatAndObjectEquals extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.what == what && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerWhatAndObjectEquals mMatchHandlerWhatAndObjectEquals =
-            new MatchHandlerWhatAndObjectEquals();
-    boolean hasEqualMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        return findOrRemoveMessages(h, what, object, null, 0, mMatchHandlerWhatAndObjectEquals,
-                false);
-    }
-
-    private static class MatchHandlerRunnableAndObject extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.callback == r && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerRunnableAndObject mMatchHandlerRunnableAndObject =
-            new MatchHandlerRunnableAndObject();
-
-    boolean hasMessages(Handler h, Runnable r, Object object) {
-        if (h == null) {
-            return false;
-        }
-
-        return findOrRemoveMessages(h, -1, object, r, 0, mMatchHandlerRunnableAndObject, false);
-    }
-
-    private static class MatchHandler extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandler mMatchHandler = new MatchHandler();
-    boolean hasMessages(Handler h) {
-        if (h == null) {
-            return false;
-        }
-        return findOrRemoveMessages(h, -1, null, null, 0, mMatchHandler, false);
-    }
-
-    void removeMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return;
-        }
-        findOrRemoveMessages(h, what, object, null, 0, mMatchHandlerWhatAndObject, true);
-    }
-
-    void removeEqualMessages(Handler h, int what, Object object) {
-        if (h == null) {
-            return;
-        }
-        findOrRemoveMessages(h, what, object, null, 0, mMatchHandlerWhatAndObjectEquals, true);
-    }
-
-    void removeMessages(Handler h, Runnable r, Object object) {
-        if (h == null || r == null) {
-            return;
-        }
-        findOrRemoveMessages(h, -1, object, r, 0, mMatchHandlerRunnableAndObject, true);
-    }
-
-    private static class MatchHandlerRunnableAndObjectEquals extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && m.callback == r && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerRunnableAndObjectEquals mMatchHandlerRunnableAndObjectEquals =
-            new MatchHandlerRunnableAndObjectEquals();
-    void removeEqualMessages(Handler h, Runnable r, Object object) {
-        if (h == null || r == null) {
-            return;
-        }
-        findOrRemoveMessages(h, -1, object, r, 0, mMatchHandlerRunnableAndObjectEquals, true);
-    }
-
-    private static class MatchHandlerAndObject extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && (object == null || m.obj == object)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerAndObject mMatchHandlerAndObject = new MatchHandlerAndObject();
-    void removeCallbacksAndMessages(Handler h, Object object) {
-        if (h == null) {
-            return;
-        }
-        findOrRemoveMessages(h, -1, object, null, 0, mMatchHandlerAndObject, true);
-    }
-
-    private static class MatchHandlerAndObjectEquals extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.target == h && (object == null || object.equals(m.obj))) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchHandlerAndObjectEquals mMatchHandlerAndObjectEquals =
-            new MatchHandlerAndObjectEquals();
-    void removeCallbacksAndEqualMessages(Handler h, Object object) {
-        if (h == null) {
-            return;
-        }
-        findOrRemoveMessages(h, -1, object, null, 0, mMatchHandlerAndObjectEquals, true);
-    }
-
-    private static class MatchAllMessages extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            return true;
-        }
-    }
-    private final MatchAllMessages mMatchAllMessages = new MatchAllMessages();
-    private void removeAllMessages() {
-        findOrRemoveMessages(null, -1, null, null, 0, mMatchAllMessages, true);
-    }
-
-    private static class MatchAllFutureMessages extends MessageCompare {
-        @Override
-        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
-                long when) {
-            if (m.when > when) {
-                return true;
-            }
-            return false;
-        }
-    }
-    private final MatchAllFutureMessages mMatchAllFutureMessages = new MatchAllFutureMessages();
-    private void removeAllFutureMessages() {
-        findOrRemoveMessages(null, -1, null, null, SystemClock.uptimeMillis(),
-                mMatchAllFutureMessages, true);
-    }
-
-    @NeverCompile
-    private void printPriorityQueueNodes() {
-        Iterator<MessageNode> iterator = mPriorityQueue.iterator();
-
-        Log.d(TAG, "* Dump priority queue");
-        while (iterator.hasNext()) {
-            MessageNode msgNode = iterator.next();
-            Log.d(TAG, "** MessageNode what: " + msgNode.mMessage.what + " when "
-                    + msgNode.mMessage.when + " seq: " + msgNode.mInsertSeq);
-        }
-    }
-
-    @NeverCompile
-    private int dumpPriorityQueue(PriorityQueue<MessageNode> queue, Printer pw, String prefix,
-            Handler h, int n) {
-        int count = 0;
-        long now = SystemClock.uptimeMillis();
-
-        for (MessageNode msgNode : queue) {
-            Message msg = msgNode.mMessage;
-            if (h == null || h == msg.target) {
-                pw.println(prefix + "Message " + (n + count) + ": " + msg.toString(now));
-            }
-            count++;
-        }
-        return count;
-    }
-
-    @NeverCompile
-    void dump(Printer pw, String prefix, Handler h) {
-        long now = SystemClock.uptimeMillis();
-        int n = 0;
-
-        pw.println(prefix + "(MessageQueue is using SemiConcurrent implementation)");
-
-        StackNode node = (StackNode) sState.getVolatile(this);
-        while (node != null) {
-            if (node.isMessageNode()) {
-                Message msg = ((MessageNode) node).mMessage;
-                if (h == null || h == msg.target) {
-                    pw.println(prefix + "Message " + n + ": " + msg.toString(now));
-                }
-                node = ((MessageNode) node).mNext;
-            } else {
-                pw.println(prefix + "State: " + node);
-                node = null;
-            }
-            n++;
-        }
-
-        synchronized (mPriorityQueue) {
-            pw.println(prefix + "PriorityQueue Messages: ");
-            n += dumpPriorityQueue(mPriorityQueue, pw, prefix, h, n);
-            pw.println(prefix + "AsyncPriorityQueue Messages: ");
-            n += dumpPriorityQueue(mAsyncPriorityQueue, pw, prefix, h, n);
-        }
-
-        pw.println(prefix + "(Total messages: " + n + ", polling=" + isPolling()
-                + ", quitting=" + (boolean) sQuitting.getVolatile(this) + ")");
-    }
-
-    @NeverCompile
-    private int dumpPriorityQueue(PriorityQueue<MessageNode> queue, ProtoOutputStream proto) {
-        int count = 0;
-
-        for (MessageNode msgNode : queue) {
-            Message msg = msgNode.mMessage;
-            msg.dumpDebug(proto, MessageQueueProto.MESSAGES);
-            count++;
-        }
-        return count;
-    }
-
-    @NeverCompile
-    void dumpDebug(ProtoOutputStream proto, long fieldId) {
-        final long messageQueueToken = proto.start(fieldId);
-
-        StackNode node = (StackNode) sState.getVolatile(this);
-        while (node.isMessageNode()) {
-            Message msg = ((MessageNode) node).mMessage;
-            msg.dumpDebug(proto, MessageQueueProto.MESSAGES);
-            node = ((MessageNode) node).mNext;
-        }
-
-        synchronized (mPriorityQueue) {
-            dumpPriorityQueue(mPriorityQueue, proto);
-            dumpPriorityQueue(mAsyncPriorityQueue, proto);
-        }
-
-        proto.write(MessageQueueProto.IS_POLLING_LOCKED, isPolling());
-        proto.write(MessageQueueProto.IS_QUITTING, (boolean) sQuitting.getVolatile(this));
-        proto.end(messageQueueToken);
-    }
-
-    /**
-     * Adds a file descriptor listener to receive notification when file descriptor
-     * related events occur.
-     * <p>
-     * If the file descriptor has already been registered, the specified events
-     * and listener will replace any that were previously associated with it.
-     * It is not possible to set more than one listener per file descriptor.
-     * </p><p>
-     * It is important to always unregister the listener when the file descriptor
-     * is no longer of use.
-     * </p>
-     *
-     * @param fd The file descriptor for which a listener will be registered.
-     * @param events The set of events to receive: a combination of the
-     * {@link OnFileDescriptorEventListener#EVENT_INPUT},
-     * {@link OnFileDescriptorEventListener#EVENT_OUTPUT}, and
-     * {@link OnFileDescriptorEventListener#EVENT_ERROR} event masks.  If the requested
-     * set of events is zero, then the listener is unregistered.
-     * @param listener The listener to invoke when file descriptor events occur.
-     *
-     * @see OnFileDescriptorEventListener
-     * @see #removeOnFileDescriptorEventListener
-     */
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    public void addOnFileDescriptorEventListener(@NonNull FileDescriptor fd,
-            @OnFileDescriptorEventListener.Events int events,
-            @NonNull OnFileDescriptorEventListener listener) {
-        if (fd == null) {
-            throw new IllegalArgumentException("fd must not be null");
-        }
-        if (listener == null) {
-            throw new IllegalArgumentException("listener must not be null");
-        }
-
-        synchronized (mFileDescriptorRecordsLock) {
-            updateOnFileDescriptorEventListenerLocked(fd, events, listener);
-        }
-    }
-
-    /**
-     * Removes a file descriptor listener.
-     * <p>
-     * This method does nothing if no listener has been registered for the
-     * specified file descriptor.
-     * </p>
-     *
-     * @param fd The file descriptor whose listener will be unregistered.
-     *
-     * @see OnFileDescriptorEventListener
-     * @see #addOnFileDescriptorEventListener
-     */
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    public void removeOnFileDescriptorEventListener(@NonNull FileDescriptor fd) {
-        if (fd == null) {
-            throw new IllegalArgumentException("fd must not be null");
-        }
-
-        synchronized (mFileDescriptorRecordsLock) {
-            updateOnFileDescriptorEventListenerLocked(fd, 0, null);
-        }
-    }
-
-    @android.ravenwood.annotation.RavenwoodThrow(blockedBy = android.os.ParcelFileDescriptor.class)
-    private void updateOnFileDescriptorEventListenerLocked(FileDescriptor fd, int events,
-            OnFileDescriptorEventListener listener) {
-        final int fdNum = fd.getInt$();
-
-        int index = -1;
-        FileDescriptorRecord record = null;
-        if (mFileDescriptorRecords != null) {
-            index = mFileDescriptorRecords.indexOfKey(fdNum);
-            if (index >= 0) {
-                record = mFileDescriptorRecords.valueAt(index);
-                if (record != null && record.mEvents == events) {
-                    return;
-                }
-            }
-        }
-
-        if (events != 0) {
-            events |= OnFileDescriptorEventListener.EVENT_ERROR;
-            if (record == null) {
-                if (mFileDescriptorRecords == null) {
-                    mFileDescriptorRecords = new SparseArray<FileDescriptorRecord>();
-                }
-                record = new FileDescriptorRecord(fd, events, listener);
-                mFileDescriptorRecords.put(fdNum, record);
-            } else {
-                record.mListener = listener;
-                record.mEvents = events;
-                record.mSeq += 1;
-            }
-            nativeSetFileDescriptorEvents(mPtr, fdNum, events);
-        } else if (record != null) {
-            record.mEvents = 0;
-            mFileDescriptorRecords.removeAt(index);
-            nativeSetFileDescriptorEvents(mPtr, fdNum, 0);
-        }
-    }
-
-    // Called from native code.
-    private int dispatchEvents(int fd, int events) {
-        // Get the file descriptor record and any state that might change.
-        final FileDescriptorRecord record;
-        final int oldWatchedEvents;
-        final OnFileDescriptorEventListener listener;
-        final int seq;
-        synchronized (mFileDescriptorRecordsLock) {
-            record = mFileDescriptorRecords.get(fd);
-            if (record == null) {
-                return 0; // spurious, no listener registered
-            }
-
-            oldWatchedEvents = record.mEvents;
-            events &= oldWatchedEvents; // filter events based on current watched set
-            if (events == 0) {
-                return oldWatchedEvents; // spurious, watched events changed
-            }
-
-            listener = record.mListener;
-            seq = record.mSeq;
-        }
-
-        // Invoke the listener outside of the lock.
-        int newWatchedEvents = listener.onFileDescriptorEvents(
-                record.mDescriptor, events);
-        if (newWatchedEvents != 0) {
-            newWatchedEvents |= OnFileDescriptorEventListener.EVENT_ERROR;
-        }
-
-        // Update the file descriptor record if the listener changed the set of
-        // events to watch and the listener itself hasn't been updated since.
-        if (newWatchedEvents != oldWatchedEvents) {
-            synchronized (mFileDescriptorRecordsLock) {
-                int index = mFileDescriptorRecords.indexOfKey(fd);
-                if (index >= 0 && mFileDescriptorRecords.valueAt(index) == record
-                        && record.mSeq == seq) {
-                    record.mEvents = newWatchedEvents;
-                    if (newWatchedEvents == 0) {
-                        mFileDescriptorRecords.removeAt(index);
-                    }
-                }
-            }
-        }
-
-        // Return the new set of events to watch for native code to take care of.
-        return newWatchedEvents;
-    }
-
-    /**
-     * Callback interface for discovering when a thread is going to block
-     * waiting for more messages.
-     */
-    public static interface IdleHandler {
-        /**
-         * Called when the message queue has run out of messages and will now
-         * wait for more.  Return true to keep your idle handler active, false
-         * to have it removed.  This may be called if there are still messages
-         * pending in the queue, but they are all scheduled to be dispatched
-         * after the current time.
-         */
-        boolean queueIdle();
-    }
-
-    /**
-     * A listener which is invoked when file descriptor related events occur.
-     */
-    public interface OnFileDescriptorEventListener {
-        /**
-         * File descriptor event: Indicates that the file descriptor is ready for input
-         * operations, such as reading.
-         * <p>
-         * The listener should read all available data from the file descriptor
-         * then return <code>true</code> to keep the listener active or <code>false</code>
-         * to remove the listener.
-         * </p><p>
-         * In the case of a socket, this event may be generated to indicate
-         * that there is at least one incoming connection that the listener
-         * should accept.
-         * </p><p>
-         * This event will only be generated if the {@link #EVENT_INPUT} event mask was
-         * specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_INPUT = 1 << 0;
-
-        /**
-         * File descriptor event: Indicates that the file descriptor is ready for output
-         * operations, such as writing.
-         * <p>
-         * The listener should write as much data as it needs.  If it could not
-         * write everything at once, then it should return <code>true</code> to
-         * keep the listener active.  Otherwise, it should return <code>false</code>
-         * to remove the listener then re-register it later when it needs to write
-         * something else.
-         * </p><p>
-         * This event will only be generated if the {@link #EVENT_OUTPUT} event mask was
-         * specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_OUTPUT = 1 << 1;
-
-        /**
-         * File descriptor event: Indicates that the file descriptor encountered a
-         * fatal error.
-         * <p>
-         * File descriptor errors can occur for various reasons.  One common error
-         * is when the remote peer of a socket or pipe closes its end of the connection.
-         * </p><p>
-         * This event may be generated at any time regardless of whether the
-         * {@link #EVENT_ERROR} event mask was specified when the listener was added.
-         * </p>
-         */
-        public static final int EVENT_ERROR = 1 << 2;
-
-        /** @hide */
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef(flag = true, prefix = { "EVENT_" }, value = {
-                EVENT_INPUT,
-                EVENT_OUTPUT,
-                EVENT_ERROR
-        })
-        public @interface Events {}
-
-        /**
-         * Called when a file descriptor receives events.
-         *
-         * @param fd The file descriptor.
-         * @param events The set of events that occurred: a combination of the
-         * {@link #EVENT_INPUT}, {@link #EVENT_OUTPUT}, and {@link #EVENT_ERROR} event masks.
-         * @return The new set of events to watch, or 0 to unregister the listener.
-         *
-         * @see #EVENT_INPUT
-         * @see #EVENT_OUTPUT
-         * @see #EVENT_ERROR
-         */
-        @Events int onFileDescriptorEvents(@NonNull FileDescriptor fd, @Events int events);
-    }
-
-    static final class FileDescriptorRecord {
-        public final FileDescriptor mDescriptor;
-        public int mEvents;
-        public OnFileDescriptorEventListener mListener;
-        public int mSeq;
-
-        public FileDescriptorRecord(FileDescriptor descriptor,
-                int events, OnFileDescriptorEventListener listener) {
-            mDescriptor = descriptor;
-            mEvents = events;
-            mListener = listener;
-        }
-    }
-}
diff --git a/core/java/android/os/flags.aconfig b/core/java/android/os/flags.aconfig
index 9e7c9f6..d3c677b 100644
--- a/core/java/android/os/flags.aconfig
+++ b/core/java/android/os/flags.aconfig
@@ -4,15 +4,6 @@
 
 # keep-sorted start block=yes newline_separated=yes
 flag {
-     # Holdback study for concurrent MessageQueue.
-     # Do not promote beyond trunkfood.
-     namespace: "system_performance"
-     name: "message_queue_force_legacy"
-     description: "Whether to holdback concurrent MessageQueue (force legacy)."
-     bug: "336880969"
-}
-
-flag {
     name: "adpf_gpu_report_actual_work_duration"
     is_exported: true
     namespace: "game"
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 1a9b42e..4ebfe53 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -153,7 +153,6 @@
      * Output: Nothing.
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
-    @FlaggedApi(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String ACTION_SATELLITE_SETTING = "android.settings.SATELLITE_SETTING";
 
     /**
diff --git a/core/java/android/service/credentials/CredentialProviderInfoFactory.java b/core/java/android/service/credentials/CredentialProviderInfoFactory.java
index 3cd705a..2266e96 100644
--- a/core/java/android/service/credentials/CredentialProviderInfoFactory.java
+++ b/core/java/android/service/credentials/CredentialProviderInfoFactory.java
@@ -88,7 +88,7 @@
             int userId,
             boolean isSystemProvider,
             boolean isPrimary)
-            throws PackageManager.NameNotFoundException {
+            throws PackageManager.NameNotFoundException, SecurityException, NullPointerException {
         return create(
                 context,
                 getServiceInfoOrThrow(serviceComponent, userId),
@@ -117,7 +117,7 @@
             boolean disableSystemAppVerificationForTests,
             boolean isEnabled,
             boolean isPrimary)
-            throws SecurityException {
+            throws SecurityException, NullPointerException {
         verifyProviderPermission(serviceInfo);
         if (isSystemProvider) {
             if (!isValidSystemProvider(
@@ -199,7 +199,7 @@
     }
 
     private static CredentialProviderInfo.Builder populateMetadata(
-            @NonNull Context context, ServiceInfo serviceInfo) {
+            @NonNull Context context, ServiceInfo serviceInfo) throws NullPointerException {
         requireNonNull(context, "context must not be null");
         final PackageManager pm = context.getPackageManager();
         CredentialProviderInfo.Builder builder = new CredentialProviderInfo.Builder(serviceInfo);
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 6f94c1b..4cbd5be 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -3131,6 +3131,7 @@
      * @return null if DND is off or describeForeverCondition is false and
      * DND is on forever (until turned off)
      */
+    // TODO: b/368247671 - Delete when inlining MODES_UI
     public static String getDescription(Context context, boolean zenOn, ZenModeConfig config,
             boolean describeForeverCondition) {
         if (!zenOn || config == null) {
diff --git a/core/java/android/telephony/TelephonyCallback.java b/core/java/android/telephony/TelephonyCallback.java
index d05fa9e..daa4e89 100644
--- a/core/java/android/telephony/TelephonyCallback.java
+++ b/core/java/android/telephony/TelephonyCallback.java
@@ -2330,8 +2330,6 @@
         }
 
         public void onCarrierRoamingNtnModeChanged(boolean active) {
-            if (!Flags.carrierEnabledSatelliteFlag()) return;
-
             CarrierRoamingNtnListener listener =
                     (CarrierRoamingNtnListener) mTelephonyCallbackWeakRef.get();
             if (listener == null) return;
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 2fa5613..b273a7f 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -1071,13 +1071,27 @@
                         var newBackground = determineContrastingBackgroundColor(index);
                         var hasBgColorChanged = newBackground != bgPaint.getColor();
 
-                        if (lineNum != mLastLineNum || hasBgColorChanged) {
-                            // Skip processing if the character is a space or a tap to avoid
-                            // rendering an abrupt, empty rectangle.
-                            if (Character.isWhitespace(mText.charAt(index))) {
-                                return;
-                            }
+                        // Skip processing if the character is a space or a tap to avoid
+                        // rendering an abrupt, empty rectangle.
+                        if (TextLine.isLineEndSpace(mText.charAt(index))) {
+                            return;
+                        }
 
+                        // To avoid highlighting emoji sequences, we use Extended_Pictgraphs as a
+                        // heuristic. Highlighting is skipped based on code points, not glyph type
+                        // (text vs. color), so emojis with default text presentation are
+                        // intentionally not highlighted (numeric representation with emoji
+                        // presentation are manually excluded). Although we process ZWJ and
+                        // variation selectors within emoji sequences, they should not affect
+                        // highlighting due to their zero-width nature.
+                        var codePoint = Character.codePointAt(mText, index);
+                        var isEmoji = Character.isEmojiComponent(codePoint)
+                                || Character.isExtendedPictographic(codePoint);
+                        if (isEmoji && !isStandardNumber(index)) {
+                            return;
+                        }
+
+                        if (lineNum != mLastLineNum || hasBgColorChanged) {
                             // Draw what we have so far, then reset the rect and update its color
                             drawRect();
                             mLineBackground.set(left, top, right, bottom);
@@ -1096,6 +1110,16 @@
                         drawRect();
                     }
 
+                    private boolean isStandardNumber(int index) {
+                        var codePoint = Character.codePointAt(mText, index);
+                        var isNumberSignOrAsterisk = (codePoint >= '0' && codePoint <= '9')
+                                || codePoint == '#' || codePoint == '*';
+                        var isColoredGlyph = index + 1 < mText.length()
+                                && Character.codePointAt(mText, index + 1) == 0xFE0F;
+
+                        return isNumberSignOrAsterisk && !isColoredGlyph;
+                    }
+
                     private void drawRect() {
                         if (!mLineBackground.isEmpty()) {
                             mLineBackground.inset(-padding, -padding);
@@ -4626,6 +4650,16 @@
      * Callback for {@link #forEachCharacterBounds(int, int, int, int, CharacterBoundsListener)}
      */
     private interface CharacterBoundsListener {
+        /**
+         * Called for each character with its bounds.
+         *
+         * @param index the index of the character
+         * @param lineNum the line number of the character
+         * @param left the left edge of the character
+         * @param top the top edge of the character
+         * @param right the right edge of the character
+         * @param bottom the bottom edge of the character
+         */
         void onCharacterBounds(int index, int lineNum, float left, float top, float right,
                 float bottom);
 
diff --git a/core/java/android/util/apk/ApkSignatureVerifier.java b/core/java/android/util/apk/ApkSignatureVerifier.java
index a4c3ed9..5910434d 100644
--- a/core/java/android/util/apk/ApkSignatureVerifier.java
+++ b/core/java/android/util/apk/ApkSignatureVerifier.java
@@ -260,9 +260,11 @@
             Certificate[][] nonstreamingCerts = null;
 
             int v3BlockId = APK_SIGNATURE_SCHEME_DEFAULT;
-            // If V4 contains additional signing blocks then we need to always run v2/v3 verifier
-            // to figure out which block they use.
-            if (verifyFull || signingInfos.signingInfoBlocks.length > 0) {
+            // We need to always run v2/v3 verifier to figure out which block they use so we can
+            // return the past signers as well as the current one - the rotation chain is important
+            // for many callers who verify the signature origin as well as the apk integrity.
+            if (android.content.pm.Flags.alwaysLoadPastCertsV4()
+                    || verifyFull || signingInfos.signingInfoBlocks.length > 0) {
                 try {
                     // v4 is an add-on and requires v2 or v3 signature to validate against its
                     // certificate and digest
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index f315f55..3229fc6 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -50,6 +50,7 @@
 import android.view.accessibility.AccessibilityRequestPreparer;
 import android.view.accessibility.Flags;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 import android.window.ScreenCapture;
 
 import com.android.internal.R;
@@ -631,6 +632,25 @@
         }
     }
 
+    /**
+     * Provide info for taking a screenshot of this app window.
+     */
+    public void getWindowSurfaceInfoClientThread(IWindowSurfaceInfoCallback callback) {
+        Message message = PooledLambda.obtainMessage(
+                AccessibilityInteractionController::getWindowSurfaceInfoUiThread,
+                this, callback);
+        mHandler.sendMessage(message);
+    }
+
+    private void getWindowSurfaceInfoUiThread(IWindowSurfaceInfoCallback callback) {
+        try {
+            callback.provideWindowSurfaceInfo(mViewRootImpl.getWindowFlags(), Process.myUid(),
+                    mViewRootImpl.getSurfaceControl());
+        } catch (RemoteException re) {
+            // ignore - the other side will time out
+        }
+    }
+
     public void findFocusClientThread(long accessibilityNodeId, int focusType,
             Region interactiveRegion, int interactionId,
             IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index df680c0..fe868e1 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -223,8 +223,14 @@
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 
         if (notificationsRedesignTemplates()) {
-            mTopLineTranslation = measureCenterTranslation(mTopLineView);
-            mExpandButtonTranslation = measureCenterTranslation(mExpandButton);
+            // TODO: b/378660052 - These should never be null in practice, consider using
+            //  requireViewById() in the onFinishInflate.
+            if (mTopLineView != null) {
+                mTopLineTranslation = measureCenterTranslation(mTopLineView);
+            }
+            if (mExpandButton != null) {
+                mExpandButtonTranslation = measureCenterTranslation(mExpandButton);
+            }
         }
     }
 
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 0866e0d..c048d79 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -66,6 +66,7 @@
 import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__UNKNOWN_CLASSIFICATION;
 import static com.android.window.flags.Flags.FLAG_DELEGATE_UNHANDLED_DRAGS;
 import static com.android.window.flags.Flags.FLAG_SUPPORTS_DRAG_ASSISTANT_TO_MULTIWINDOW;
+import static com.android.window.flags.Flags.reduceChangedExclusionRectsMsgs;
 
 import static java.lang.Math.max;
 
@@ -247,6 +248,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -12888,15 +12890,20 @@
         if (rects.isEmpty() && mListenerInfo == null) return;
 
         final ListenerInfo info = getListenerInfo();
+        final boolean rectsChanged = !reduceChangedExclusionRectsMsgs()
+                || !Objects.equals(info.mSystemGestureExclusionRects, rects);
         if (info.mSystemGestureExclusionRects != null) {
-            info.mSystemGestureExclusionRects.clear();
-            info.mSystemGestureExclusionRects.addAll(rects);
+            if (rectsChanged) {
+                info.mSystemGestureExclusionRects.clear();
+                info.mSystemGestureExclusionRects.addAll(rects);
+            }
         } else {
             info.mSystemGestureExclusionRects = new ArrayList<>(rects);
         }
-
-        updatePositionUpdateListener();
-        postUpdate(this::updateSystemGestureExclusionRects);
+        if (rectsChanged) {
+            updatePositionUpdateListener();
+            postUpdate(this::updateSystemGestureExclusionRects);
+        }
     }
 
     private void updatePositionUpdateListener() {
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 6b6147a..9498407 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -136,6 +136,7 @@
 import static com.android.window.flags.Flags.enableBufferTransformHintFromDisplay;
 import static com.android.window.flags.Flags.enableWindowContextResourcesUpdateOnConfigChange;
 import static com.android.window.flags.Flags.predictiveBackSwipeEdgeNoneApi;
+import static com.android.window.flags.Flags.reduceChangedExclusionRectsMsgs;
 import static com.android.window.flags.Flags.setScPropertiesInClient;
 
 import android.Manifest;
@@ -152,8 +153,6 @@
 import android.app.ActivityManager;
 import android.app.ActivityThread;
 import android.app.ResourcesManager;
-import android.app.UiModeManager;
-import android.app.UiModeManager.ForceInvertStateChangeListener;
 import android.app.WindowConfiguration;
 import android.app.compat.CompatChanges;
 import android.app.servertransaction.WindowStateTransactionItem;
@@ -169,6 +168,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
+import android.database.ContentObserver;
 import android.graphics.BLASTBufferQueue;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -214,6 +214,7 @@
 import android.os.Trace;
 import android.os.UserHandle;
 import android.os.Vibrator;
+import android.provider.Settings;
 import android.sysprop.DisplayProperties;
 import android.sysprop.ViewProperties;
 import android.text.TextUtils;
@@ -254,6 +255,7 @@
 import android.view.accessibility.IAccessibilityEmbeddedConnection;
 import android.view.accessibility.IAccessibilityInteractionConnection;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 import android.view.animation.AccelerateDecelerateInterpolator;
 import android.view.animation.Interpolator;
 import android.view.autofill.AutofillManager;
@@ -468,8 +470,10 @@
     private CompatOnBackInvokedCallback mCompatOnBackInvokedCallback;
 
     @Nullable
-    private ForceInvertStateChangeListener mForceInvertStateChangeListener;
+    private ContentObserver mForceInvertObserver;
 
+    private static final int INVALID_VALUE = Integer.MIN_VALUE;
+    private int mForceInvertEnabled = INVALID_VALUE;
     /**
      * Callback for notifying about global configuration changes.
      */
@@ -551,8 +555,6 @@
     @UiContext
     public final Context mContext;
 
-    private UiModeManager mUiModeManager;
-
     @UnsupportedAppUsage
     final IWindowSession mWindowSession;
     @NonNull Display mDisplay;
@@ -1254,7 +1256,6 @@
     public ViewRootImpl(@UiContext Context context, Display display, IWindowSession session,
             WindowLayout windowLayout) {
         mContext = context;
-        mUiModeManager = context.getSystemService(UiModeManager.class);
         mWindowSession = session;
         mWindowLayout = windowLayout;
         mDisplay = display;
@@ -1803,6 +1804,23 @@
         }
     }
 
+    private boolean isForceInvertEnabled() {
+        if (mForceInvertEnabled == INVALID_VALUE) {
+            reloadForceInvertEnabled();
+        }
+        return mForceInvertEnabled == 1;
+    }
+
+    private void reloadForceInvertEnabled() {
+        if (forceInvertColor()) {
+            mForceInvertEnabled = Settings.Secure.getIntForUser(
+                    mContext.getContentResolver(),
+                    Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
+                    /* def= */ 0,
+                    UserHandle.myUserId());
+        }
+    }
+
     /**
      * Register any kind of listeners if setView was success.
      */
@@ -1834,11 +1852,21 @@
                         mBasePackageName);
 
         if (forceInvertColor()) {
-            if (mForceInvertStateChangeListener == null) {
-                mForceInvertStateChangeListener =
-                        forceInvertState -> updateForceDarkMode();
-                mUiModeManager.addForceInvertStateChangeListener(mExecutor,
-                        mForceInvertStateChangeListener);
+            if (mForceInvertObserver == null) {
+                mForceInvertObserver = new ContentObserver(mHandler) {
+                    @Override
+                    public void onChange(boolean selfChange) {
+                        reloadForceInvertEnabled();
+                        updateForceDarkMode();
+                    }
+                };
+                mContext.getContentResolver().registerContentObserver(
+                        Settings.Secure.getUriFor(
+                                Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED
+                        ),
+                        false,
+                        mForceInvertObserver,
+                        UserHandle.myUserId());
             }
         }
     }
@@ -1856,10 +1884,9 @@
                 .unregisterDisplayListener(mDisplayListener);
 
         if (forceInvertColor()) {
-            if (mForceInvertStateChangeListener != null) {
-                mUiModeManager.removeForceInvertStateChangeListener(
-                        mForceInvertStateChangeListener);
-                mForceInvertStateChangeListener = null;
+            if (mForceInvertObserver != null) {
+                mContext.getContentResolver().unregisterContentObserver(mForceInvertObserver);
+                mForceInvertObserver = null;
             }
         }
 
@@ -2046,25 +2073,21 @@
         return getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
     }
 
-    /**
-     * Determines the type of force dark to apply, considering force inversion, system night mode,
-     * and app-specific settings (including developer opt-outs).
-     *
-     * @return A {@link ForceDarkType.ForceDarkTypeDef} constant indicating the force dark type.
-     */
+    /** Returns true if force dark should be enabled according to various settings */
     @VisibleForTesting
     public @ForceDarkType.ForceDarkTypeDef int determineForceDarkType() {
         if (forceInvertColor()) {
             // Force invert ignores all developer opt-outs.
             // We also ignore dark theme, since the app developer can override the user's preference
-            // for dark mode in configuration.uiMode. Instead, we assume that both force invert and
-            // the system's dark theme are enabled.
-            if (mUiModeManager.getForceInvertState() == UiModeManager.FORCE_INVERT_TYPE_DARK) {
+            // for dark mode in configuration.uiMode. Instead, we assume that the force invert
+            // setting will be enabled at the same time dark theme is in the Settings app.
+            if (isForceInvertEnabled()) {
                 return ForceDarkType.FORCE_INVERT_COLOR_DARK;
             }
         }
 
         boolean useAutoDark = getNightMode() == Configuration.UI_MODE_NIGHT_YES;
+
         if (useAutoDark) {
             boolean forceDarkAllowedDefault =
                     SystemProperties.getBoolean(ThreadedRenderer.DEBUG_FORCE_DARK, false);
@@ -6052,8 +6075,12 @@
     }
 
     void updateSystemGestureExclusionRectsForView(View view) {
+        boolean msgInQueue = reduceChangedExclusionRectsMsgs()
+                && mGestureExclusionTracker.isWaitingForComputeChanges();
         mGestureExclusionTracker.updateRectsForView(view);
-        mHandler.sendEmptyMessage(MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED);
+        if (!msgInQueue) {
+            mHandler.sendEmptyMessage(MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED);
+        }
     }
 
     void systemGestureExclusionChanged() {
@@ -6097,8 +6124,12 @@
      * the root's view hierarchy.
      */
     public void setRootSystemGestureExclusionRects(@NonNull List<Rect> rects) {
+        boolean msgInQueue = reduceChangedExclusionRectsMsgs()
+                && mGestureExclusionTracker.isWaitingForComputeChanges();
         mGestureExclusionTracker.setRootRects(rects);
-        mHandler.sendEmptyMessage(MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED);
+        if (!msgInQueue) {
+            mHandler.sendEmptyMessage(MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED);
+        }
     }
 
     /**
@@ -12285,6 +12316,15 @@
             }
         }
 
+        @Override
+        public void getWindowSurfaceInfo(IWindowSurfaceInfoCallback callback) {
+            ViewRootImpl viewRootImpl = mViewRootImpl.get();
+            if (viewRootImpl != null && viewRootImpl.mView != null) {
+                viewRootImpl.getAccessibilityInteractionController()
+                        .getWindowSurfaceInfoClientThread(callback);
+            }
+        }
+
         public void attachAccessibilityOverlayToWindow(
                 SurfaceControl sc,
                 int interactionId,
diff --git a/core/java/android/view/ViewRootRectTracker.java b/core/java/android/view/ViewRootRectTracker.java
index 152729b..0bef325 100644
--- a/core/java/android/view/ViewRootRectTracker.java
+++ b/core/java/android/view/ViewRootRectTracker.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.graphics.Rect;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.Preconditions;
 
 import java.lang.ref.WeakReference;
@@ -32,8 +33,10 @@
 /**
  * Abstract class to track a collection of rects reported by the views under the same
  * {@link ViewRootImpl}.
+ * @hide
  */
-class ViewRootRectTracker {
+@VisibleForTesting
+public class ViewRootRectTracker {
     private final Function<View, List<Rect>> mRectCollector;
     private boolean mViewsChanged = false;
     private boolean mRootRectsChanged = false;
@@ -41,11 +44,18 @@
     private List<ViewInfo> mViewInfos = new ArrayList<>();
     private List<Rect> mRects = Collections.emptyList();
 
+    // Keeps track of whether updateRectsForView has been called but there was no subsequent call
+    // on computeChanges yet. Since updateRectsForView is called when sending a message and
+    // computeChanges when it is received, this tracks whether such message is in the queue already
+    private boolean mWaitingForComputeChanges = false;
+
     /**
      * @param rectCollector given a view returns a list of the rects of interest for this
      *                      ViewRootRectTracker
+     * @hide
      */
-    ViewRootRectTracker(Function<View, List<Rect>> rectCollector) {
+    @VisibleForTesting
+    public ViewRootRectTracker(Function<View, List<Rect>> rectCollector) {
         mRectCollector = rectCollector;
     }
 
@@ -70,6 +80,7 @@
             mViewInfos.add(new ViewInfo(view));
             mViewsChanged = true;
         }
+        mWaitingForComputeChanges = true;
     }
 
     /**
@@ -92,6 +103,7 @@
      * @return {@code true} if there were changes, {@code false} otherwise.
      */
     public boolean computeChanges() {
+        mWaitingForComputeChanges = false;
         boolean changed = mRootRectsChanged;
         final Iterator<ViewInfo> i = mViewInfos.iterator();
         final List<Rect> rects = new ArrayList<>(mRootRects);
@@ -121,6 +133,10 @@
         return false;
     }
 
+    public boolean isWaitingForComputeChanges() {
+        return mWaitingForComputeChanges;
+    }
+
     /**
      * Returns a List of all Rects from all visible Views in the global (root) coordinate system.
      * This list is only updated when calling {@link #computeChanges()} or
@@ -140,6 +156,7 @@
         Preconditions.checkNotNull(rects, "rects must not be null");
         mRootRects = rects;
         mRootRectsChanged = true;
+        mWaitingForComputeChanges = true;
     }
 
     @NonNull
diff --git a/core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl b/core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl
index a43acf9..ca024fd 100644
--- a/core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityInteractionConnection.aidl
@@ -23,6 +23,7 @@
 import android.view.SurfaceControl;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 import android.window.ScreenCapture;
 
 /**
@@ -67,5 +68,7 @@
         in ScreenCapture.ScreenCaptureListener listener,
         IAccessibilityInteractionConnectionCallback callback);
 
+    void getWindowSurfaceInfo(IWindowSurfaceInfoCallback callback);
+
     void attachAccessibilityOverlayToWindow(in SurfaceControl sc, int interactionId, in IAccessibilityInteractionConnectionCallback callback);
 }
diff --git a/core/java/android/view/accessibility/IWindowSurfaceInfoCallback.aidl b/core/java/android/view/accessibility/IWindowSurfaceInfoCallback.aidl
new file mode 100644
index 0000000..370f185
--- /dev/null
+++ b/core/java/android/view/accessibility/IWindowSurfaceInfoCallback.aidl
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+package android.view.accessibility;
+
+import android.view.SurfaceControl;
+
+/**
+ * Callback for an app to provide AbstractAccessibilityServiceConnection with window and surface
+ * information necessary for system_server to take a screenshot of the app window.
+ * @hide
+ */
+oneway interface IWindowSurfaceInfoCallback {
+
+    /**
+     * Provide info from ViewRootImpl for taking a screenshot of this app window.
+     *
+     * @param windowFlags the window flags of ViewRootImpl
+     * @param processUid the process (kernel) uid, NOT the user ID, required for
+                         SurfaceFlinger screenshots
+     * @param surfaceControl the surface of ViewRootImpl
+     */
+    @RequiresNoPermission
+    void provideWindowSurfaceInfo(int windowFlags, int processUid,
+            in SurfaceControl surfaceControl);
+}
diff --git a/core/java/android/window/flags/lse_desktop_experience.aconfig b/core/java/android/window/flags/lse_desktop_experience.aconfig
index 891c5e3..3e3b8e1 100644
--- a/core/java/android/window/flags/lse_desktop_experience.aconfig
+++ b/core/java/android/window/flags/lse_desktop_experience.aconfig
@@ -196,6 +196,16 @@
 }
 
 flag {
+    name: "enable_camera_compat_for_desktop_windowing_opt_out"
+    namespace: "lse_desktop_experience"
+    description: "Whether to allow developers to opt-out of Camera Compat treatment to fixed-orientation apps in desktop windowing mode"
+    bug: "328616176"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
     name: "enable_task_stack_observer_in_shell"
     namespace: "lse_desktop_experience"
     description: "Introduces a new observer in shell to track the task stack."
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig
index 25dc672..a4d128f 100644
--- a/core/java/android/window/flags/windowing_frontend.aconfig
+++ b/core/java/android/window/flags/windowing_frontend.aconfig
@@ -40,6 +40,17 @@
 }
 
 flag {
+  name: "cache_window_style"
+  namespace: "windowing_frontend"
+  description: "Cache common window styles"
+  bug: "350394503"
+  is_fixed_read_only: true
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
+
+flag {
   name: "edge_to_edge_by_default"
   namespace: "windowing_frontend"
   description: "Make app go edge-to-edge by default when targeting SDK 35 or greater"
@@ -417,6 +428,17 @@
 }
 
 flag {
+    name: "reduce_changed_exclusion_rects_msgs"
+    namespace: "windowing_frontend"
+    description: "Don't send MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED when there is no change"
+    bug: "388231176"
+    is_fixed_read_only: true
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
     name: "keep_app_window_hide_while_locked"
     namespace: "windowing_frontend"
     description: "Do not let app window visible while device is locked"
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 3bdf3d6..c009fc3 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -1875,9 +1875,7 @@
                 Bundle b = new Bundle();
                 // Add userHandle based badge to the stackedAppDialogBox.
                 b.putParcelable(ChooserTargetActionsDialogFragment.USER_HANDLE_KEY,
-                        getResolveInfoUserHandle(
-                                targetInfo.getResolveInfo(),
-                                mChooserMultiProfilePagerAdapter.getCurrentUserHandle()));
+                        targetInfo.getResolveInfo().userHandle);
                 b.putObject(ChooserStackedAppDialogFragment.MULTI_DRI_KEY,
                         mti);
                 b.putInt(ChooserStackedAppDialogFragment.WHICH_KEY, which);
@@ -2457,10 +2455,7 @@
             //  compares using resolveInfo.userHandle
             mComparator = Comparator.comparing(DisplayResolveInfo::getDisplayLabel, collator)
                     .thenComparingInt(displayResolveInfo ->
-                            getResolveInfoUserHandle(
-                                    displayResolveInfo.getResolveInfo(),
-                                    // TODO: User resolveInfo.userHandle, once its available.
-                                    UserHandle.SYSTEM).getIdentifier());
+                            displayResolveInfo.getResolveInfo().userHandle.getIdentifier());
         }
 
         @Override
diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java
index b3e828d..d38689c 100644
--- a/core/java/com/android/internal/app/ChooserListAdapter.java
+++ b/core/java/com/android/internal/app/ChooserListAdapter.java
@@ -362,8 +362,7 @@
                     }
                     String resolvedTarget = info.getResolvedComponentName().getPackageName()
                             + '#' + info.getDisplayLabel()
-                            + '#' + ResolverActivity.getResolveInfoUserHandle(
-                                    info.getResolveInfo(), getUserHandle()).getIdentifier();
+                            + '#' + info.getResolveInfo().userHandle.getIdentifier();
                     DisplayResolveInfo multiDri = consolidated.get(resolvedTarget);
                     if (multiDri == null) {
                         consolidated.put(resolvedTarget, info);
diff --git a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
index 83ae7ed..dc4caa3 100644
--- a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
+++ b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java
@@ -28,19 +28,40 @@
  * This class manages the content display within the media route controller UI.
  */
 public class MediaRouteControllerContentManager {
+    /**
+     * A delegate interface that a MediaRouteController UI should implement. It allows the content
+     * manager to inform the UI of any UI changes that need to be made in response to content
+     * updates.
+     */
+    public interface Delegate {
+        /**
+         * Updates the title of the cast device
+         */
+        void setCastDeviceTitle(CharSequence title);
+
+        /**
+         * Dismiss the UI to transition to a different workflow.
+         */
+        void dismissView();
+    }
+
+    private final Delegate mDelegate;
+
     // Time to wait before updating the volume when the user lets go of the seek bar
     // to allow the route provider time to propagate the change and publish a new
     // route descriptor.
     private static final int VOLUME_UPDATE_DELAY_MILLIS = 250;
 
+    private final MediaRouter mRouter;
     private final MediaRouter.RouteInfo mRoute;
 
     private LinearLayout mVolumeLayout;
     private SeekBar mVolumeSlider;
     private boolean mVolumeSliderTouched;
 
-    public MediaRouteControllerContentManager(Context context) {
-        MediaRouter mRouter = context.getSystemService(MediaRouter.class);
+    public MediaRouteControllerContentManager(Context context, Delegate delegate) {
+        mDelegate = delegate;
+        mRouter = context.getSystemService(MediaRouter.class);
         mRoute = mRouter.getSelectedRoute();
     }
 
@@ -49,6 +70,7 @@
      * given container view.
      */
     public void bindViews(View containerView) {
+        mDelegate.setCastDeviceTitle(mRoute.getName());
         mVolumeLayout = containerView.findViewById(R.id.media_route_volume_layout);
         mVolumeSlider = containerView.findViewById(R.id.media_route_volume_slider);
         mVolumeSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@@ -89,6 +111,14 @@
     }
 
     /**
+     * Updates all the views to reflect new states.
+     */
+    public void update() {
+        mDelegate.setCastDeviceTitle(mRoute.getName());
+        updateVolume();
+    }
+
+    /**
      * Updates the volume layout and slider.
      */
     public void updateVolume() {
@@ -103,6 +133,20 @@
         }
     }
 
+    /**
+     * Callback function to triggered after the disconnect button is clicked.
+     */
+    public void onDisconnectButtonClick() {
+        if (mRoute.isSelected()) {
+            if (mRoute.isBluetooth()) {
+                mRouter.getDefaultRoute().select();
+            } else {
+                mRouter.getFallbackRoute().select();
+            }
+        }
+        mDelegate.dismissView();
+    }
+
     private boolean isVolumeControlAvailable() {
         return mRoute.getVolumeHandling() == MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE;
     }
diff --git a/core/java/com/android/internal/app/MediaRouteControllerDialog.java b/core/java/com/android/internal/app/MediaRouteControllerDialog.java
index c79f3c7..45a4a13 100644
--- a/core/java/com/android/internal/app/MediaRouteControllerDialog.java
+++ b/core/java/com/android/internal/app/MediaRouteControllerDialog.java
@@ -46,7 +46,10 @@
  *
  * TODO: Move this back into the API, as in the support library media router.
  */
-public class MediaRouteControllerDialog extends AlertDialog {
+public class MediaRouteControllerDialog extends AlertDialog implements
+        MediaRouteControllerContentManager.Delegate {
+    // TODO(b/360050020): Eventually these 3 variables should be in the content manager instead of
+    //  here. So these should be removed when the migration is completed.
     private final MediaRouter mRouter;
     private final MediaRouterCallback mCallback;
     private final MediaRouter.RouteInfo mRoute;
@@ -63,7 +66,7 @@
     public MediaRouteControllerDialog(Context context, int theme) {
         super(context, theme);
 
-        mContentManager = new MediaRouteControllerContentManager(context);
+        mContentManager = new MediaRouteControllerContentManager(context, this);
         mRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
         mCallback = new MediaRouterCallback();
         mRoute = mRouter.getSelectedRoute();
@@ -71,24 +74,13 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        setTitle(mRoute.getName());
         Resources res = getContext().getResources();
         setButton(BUTTON_NEGATIVE, res.getString(R.string.media_route_controller_disconnect),
-                (dialogInterface, id) -> {
-                    if (mRoute.isSelected()) {
-                        if (mRoute.isBluetooth()) {
-                            mRouter.getDefaultRoute().select();
-                        } else {
-                            mRouter.getFallbackRoute().select();
-                        }
-                    }
-                    dismiss();
-                });
+                (dialogInterface, id) -> mContentManager.onDisconnectButtonClick());
         View customView = getLayoutInflater().inflate(R.layout.media_route_controller_dialog, null);
         setView(customView, 0, 0, 0, 0);
-        super.onCreate(savedInstanceState);
-
         mContentManager.bindViews(customView);
+        super.onCreate(savedInstanceState);
 
         View customPanelView = getWindow().findViewById(R.id.customPanel);
         if (customPanelView != null) {
@@ -135,13 +127,22 @@
         return super.onKeyUp(keyCode, event);
     }
 
+    @Override
+    public void setCastDeviceTitle(CharSequence title) {
+        setTitle(title);
+    }
+
+    @Override
+    public void dismissView() {
+        dismiss();
+    }
+
     private void update() {
         if (!mRoute.isSelected() || mRoute.isDefault()) {
-            dismiss();
+            dismissView();
         }
 
-        setTitle(mRoute.getName());
-        mContentManager.updateVolume();
+        mContentManager.update();
 
         Drawable icon = getIconDrawable();
         if (icon != mCurrentIconDrawable) {
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index db65d31..eaf1573 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -1605,8 +1605,7 @@
         // In case cloned apps are present, we would want to start those apps in cloned user
         // space, which will not be same as adaptor's userHandle. resolveInfo.userHandle
         // identifies the correct user space in such cases.
-        UserHandle activityUserHandle = getResolveInfoUserHandle(
-                cti.getResolveInfo(), mMultiProfilePagerAdapter.getCurrentUserHandle());
+        UserHandle activityUserHandle = cti.getResolveInfo().userHandle;
         safelyStartActivityAsUser(cti, activityUserHandle, null);
     }
 
@@ -2399,11 +2398,7 @@
                 && Objects.equals(lhs.activityInfo.packageName, rhs.activityInfo.packageName)
                         // Comparing against resolveInfo.userHandle in case cloned apps are present,
                         // as they will have the same activityInfo.
-                && Objects.equals(
-                        getResolveInfoUserHandle(lhs,
-                                mMultiProfilePagerAdapter.getActiveListAdapter().getUserHandle()),
-                        getResolveInfoUserHandle(rhs,
-                                mMultiProfilePagerAdapter.getActiveListAdapter().getUserHandle()));
+                && Objects.equals(lhs.userHandle, rhs.userHandle);
     }
 
     protected String getMetricsCategory() {
@@ -2686,18 +2681,6 @@
         return userList;
     }
 
-    /**
-     * This function is temporary in nature, and its usages will be replaced with just
-     * resolveInfo.userHandle, once it is available, once sharesheet is stable.
-     */
-    public static UserHandle getResolveInfoUserHandle(ResolveInfo resolveInfo,
-            UserHandle predictedHandle) {
-        if (resolveInfo.userHandle == null) {
-            Log.e(TAG, "ResolveInfo with null UserHandle found: " + resolveInfo);
-        }
-        return resolveInfo.userHandle;
-    }
-
     private boolean privateSpaceEnabled() {
         return mIsIntentPicker && android.os.Flags.allowPrivateProfile()
                 && android.multiuser.Flags.allowResolverSheetForPrivateSpace()
diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java
index de7ad34..54c0e61 100644
--- a/core/java/com/android/internal/app/ResolverListAdapter.java
+++ b/core/java/com/android/internal/app/ResolverListAdapter.java
@@ -747,8 +747,7 @@
     Drawable loadIconForResolveInfo(ResolveInfo ri) {
         // Load icons based on userHandle from ResolveInfo. If in work profile/clone profile, icons
         // should be badged.
-        return makePresentationGetter(ri)
-                .getIcon(ResolverActivity.getResolveInfoUserHandle(ri, getUserHandle()));
+        return makePresentationGetter(ri).getIcon(ri.userHandle);
     }
 
     void loadFilteredItemIconTaskAsync(@NonNull ImageView iconView) {
diff --git a/core/java/com/android/internal/os/ApplicationSharedMemory.java b/core/java/com/android/internal/os/ApplicationSharedMemory.java
index e6ea29e..4c491c8 100644
--- a/core/java/com/android/internal/os/ApplicationSharedMemory.java
+++ b/core/java/com/android/internal/os/ApplicationSharedMemory.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.util.Log;
+
 import com.android.internal.annotations.VisibleForTesting;
 
 import dalvik.annotation.optimization.CriticalNative;
@@ -324,4 +325,35 @@
      */
     @FastNative
     private static native long nativeGetSystemNonceBlock(long ptr);
+
+    /**
+     * Perform a one-time write of cached SDK feature versions.
+     *
+     * @throws IllegalStateException if the feature versions have already been written or the ashmem
+     *     is immutable.
+     * @throws IllegalArgumentException if the provided feature version array is too large.
+     */
+    public void writeSystemFeaturesCache(@NonNull int[] featureVersions) {
+        checkMutable();
+        nativeWriteSystemFeaturesCache(mPtr, featureVersions);
+    }
+
+    /**
+     * Read the cached SDK feature versions previously written to shared memory.
+     *
+     * Note: The result should generally be cached elsewhere for global reuse.
+     */
+    // TODO(b/326623529): Consider using a MappedByteBuffer or equivalent to avoid needing a
+    // Java copy of the cached data for potentially frequent reads. Alternatively, the JNI query
+    // lookup for a given feature could be cheap enough to avoid the cached Java copy entirely.
+    public @NonNull int[] readSystemFeaturesCache() {
+        checkMapped();
+        return nativeReadSystemFeaturesCache(mPtr);
+    }
+
+    @FastNative
+    private static native void nativeWriteSystemFeaturesCache(long ptr, int[] cache);
+
+    @FastNative
+    private static native int[] nativeReadSystemFeaturesCache(long ptr);
 }
diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
index 2931bd2..fe616e0 100644
--- a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
+++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
@@ -16,6 +16,7 @@
 
 package com.android.internal.os;
 
+import android.annotation.Nullable;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.ravenwood.annotation.RavenwoodKeepWholeClass;
@@ -155,8 +156,9 @@
 
     /**
      * Adds the supplied values to the current accumulated values in the counter.
+     * Null `values` parameter is interpreted as an array of zeros.
      */
-    public void incrementValues(long[] values, long timestampMs) {
+    public void incrementValues(@Nullable long[] values, long timestampMs) {
         native_incrementValues(mNativeObject, values, timestampMs);
     }
 
diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
index 7030d8e..4f5f37d 100644
--- a/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
+++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter_ravenwood.java
@@ -16,6 +16,7 @@
 
 package com.android.internal.os;
 
+import android.annotation.Nullable;
 import android.os.BadParcelableException;
 import android.os.Parcel;
 import android.ravenwood.annotation.RavenwoodKeepWholeClass;
@@ -147,10 +148,12 @@
             mLastUpdateTimestampMs = timestampMs;
         }
 
-        public void incrementValues(long[] delta, long timestampMs) {
+        public void incrementValues(@Nullable long[] delta, long timestampMs) {
             long[] values = Arrays.copyOf(mValues, mValues.length);
-            for (int i = 0; i < mArrayLength; i++) {
-                values[i] += delta[i];
+            if (delta != null) {
+                for (int i = 0; i < mArrayLength; i++) {
+                    values[i] += delta[i];
+                }
             }
             updateValue(values, timestampMs);
         }
@@ -304,7 +307,8 @@
         getInstance(targetInstanceId).copyStatesFrom(getInstance(sourceInstanceId));
     }
 
-    public static void native_incrementValues(long instanceId, long[] delta, long timestampMs) {
+    public static void native_incrementValues(long instanceId, @Nullable long[] delta,
+            long timestampMs) {
         getInstance(instanceId).incrementValues(delta, timestampMs);
     }
 
diff --git a/core/java/com/android/internal/os/PowerStats.java b/core/java/com/android/internal/os/PowerStats.java
index aafef6c..6c69e2c 100644
--- a/core/java/com/android/internal/os/PowerStats.java
+++ b/core/java/com/android/internal/os/PowerStats.java
@@ -128,6 +128,7 @@
          * Extra parameters specific to the power component, e.g. the availability of power
          * monitors.
          */
+        @NonNull
         public final PersistableBundle extras;
 
         private PowerStatsFormatter mDeviceStatsFormatter;
@@ -269,20 +270,41 @@
                     stateStatsArrayLength, uidStatsArrayLength, extras);
         }
 
+        @SuppressWarnings("deprecation")
         @Override
         public boolean equals(Object o) {
             if (this == o) return true;
             if (!(o instanceof Descriptor)) return false;
             Descriptor that = (Descriptor) o;
-            return powerComponentId == that.powerComponentId
-                    && statsArrayLength == that.statsArrayLength
-                    && stateLabels.contentEquals(that.stateLabels)
-                    && stateStatsArrayLength == that.stateStatsArrayLength
-                    && uidStatsArrayLength == that.uidStatsArrayLength
-                    && Objects.equals(name, that.name)
-                    && extras.size() == that.extras.size()        // Unparcel the Parcel if not yet
-                    && Bundle.kindofEquals(extras,
-                    that.extras);  // Since the Parcel is now unparceled, do a deep comparison
+            if (powerComponentId != that.powerComponentId
+                    || statsArrayLength != that.statsArrayLength
+                    || !stateLabels.contentEquals(that.stateLabels)
+                    || stateStatsArrayLength != that.stateStatsArrayLength
+                    || uidStatsArrayLength != that.uidStatsArrayLength
+                    || !Objects.equals(name, that.name)) {
+                return false;
+            }
+
+            // Getting the size has the side-effect of unparceling the Bundle if not yet
+            if (extras.size() != that.extras.size()) {
+                return false;
+            }
+
+            if (Bundle.kindofEquals(extras, that.extras)) {
+                return true;
+            }
+
+            // Since `kindofEquals` does not deep-compare arrays, we do that separately, albeit at
+            // the expense of creating an iterator and using a deprecated API, `bundle.get`.
+            // There is no performance concern, because the situation where PowerStatsDescriptors
+            // are changed in an incompatible way are exceedingly rare, occurring at most
+            // once per power component after a system upgrade.
+            for (String key : extras.keySet()) {
+                if (!Objects.deepEquals(extras.get(key), that.extras.get(key))) {
+                    return false;
+                }
+            }
+            return true;
         }
 
         /**
diff --git a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
index 7ee22f3..69c0480 100644
--- a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
+++ b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
@@ -157,7 +157,7 @@
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.name);
+        sForInternedString.parcel(this.name, dest, flags);
         dest.writeInt(this.getIcon());
         dest.writeInt(this.getLabelRes());
         dest.writeCharSequence(this.getNonLocalizedLabel());
@@ -175,7 +175,7 @@
         // We use the boot classloader for all classes that we load.
         final ClassLoader boot = Object.class.getClassLoader();
         //noinspection ConstantConditions
-        this.name = in.readString();
+        this.name = sForInternedString.unparcel(in);
         this.icon = in.readInt();
         this.labelRes = in.readInt();
         this.nonLocalizedLabel = in.readCharSequence();
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index d73e2d4..4d77096 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -471,6 +471,20 @@
     }
 
     /**
+     * This is similar to {@link #isOptingOutEdgeToEdgeEnforcement} but the caller needs to check
+     * whether the app declares style to opt out.
+     */
+    public static boolean isOptOutEdgeToEdgeEnabled(ApplicationInfo info, boolean local) {
+        final boolean disabled = Flags.disableOptOutEdgeToEdge()
+                && (local
+                        // Calling this doesn't require a permission.
+                        ? CompatChanges.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE)
+                        // Calling this requires permissions.
+                        : info.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE));
+        return !disabled;
+    }
+
+    /**
      * Returns whether the given application is opting out edge-to-edge enforcement.
      *
      * @param info The application to query.
@@ -480,13 +494,7 @@
      */
     public static boolean isOptingOutEdgeToEdgeEnforcement(ApplicationInfo info, boolean local,
             TypedArray windowStyle) {
-        final boolean disabled = Flags.disableOptOutEdgeToEdge()
-                && (local
-                        // Calling this doesn't require a permission.
-                        ? CompatChanges.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE)
-                        // Calling this requires permissions.
-                        : info.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE));
-        return !disabled && windowStyle.getBoolean(
+        return isOptOutEdgeToEdgeEnabled(info, local) && windowStyle.getBoolean(
                 R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false /* default */);
 
     }
diff --git a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java
index 93be3b0..2d98994 100644
--- a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java
+++ b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java
@@ -322,7 +322,7 @@
         PrintWriter pw = shell.getOutPrintWriter();
 
         if (android.tracing.Flags.clientSideProtoLogging()) {
-            pw.println("Command deprecated. Please use 'cmd protolog' instead.");
+            pw.println("Command deprecated. Please use 'cmd protolog_configuration' instead.");
             return -1;
         }
 
diff --git a/core/java/com/android/internal/protolog/ProtoLogCommandHandler.java b/core/java/com/android/internal/protolog/ProtoLogCommandHandler.java
index 82d8d34..6d4a408 100644
--- a/core/java/com/android/internal/protolog/ProtoLogCommandHandler.java
+++ b/core/java/com/android/internal/protolog/ProtoLogCommandHandler.java
@@ -145,11 +145,11 @@
 
         switch (cmd) {
             case "enable" -> {
-                mProtoLogConfigurationService.enableProtoLogToLogcat(processGroups());
+                mProtoLogConfigurationService.enableProtoLogToLogcat(pw, processGroups());
                 return 0;
             }
             case "disable" -> {
-                mProtoLogConfigurationService.disableProtoLogToLogcat(processGroups());
+                mProtoLogConfigurationService.disableProtoLogToLogcat(pw, processGroups());
                 return 0;
             }
             default -> {
diff --git a/core/java/com/android/internal/protolog/ProtoLogConfigurationService.java b/core/java/com/android/internal/protolog/ProtoLogConfigurationService.java
index d65aaae..a19690b 100644
--- a/core/java/com/android/internal/protolog/ProtoLogConfigurationService.java
+++ b/core/java/com/android/internal/protolog/ProtoLogConfigurationService.java
@@ -18,6 +18,8 @@
 
 import android.annotation.NonNull;
 
+import java.io.PrintWriter;
+
 public interface ProtoLogConfigurationService extends IProtoLogConfigurationService {
     /**
      * Get the list of groups clients have registered to the protolog service.
@@ -37,11 +39,11 @@
      * Enable logging target groups to logcat.
      * @param groups we want to enable logging them to logcat for.
      */
-    void enableProtoLogToLogcat(@NonNull String... groups);
+    void enableProtoLogToLogcat(@NonNull PrintWriter pw, @NonNull String... groups);
 
     /**
      * Disable logging target groups to logcat.
      * @param groups we want to disable from being logged to logcat.
      */
-    void disableProtoLogToLogcat(@NonNull String... groups);
+    void disableProtoLogToLogcat(@NonNull PrintWriter pw, @NonNull String... groups);
 }
diff --git a/core/java/com/android/internal/protolog/ProtoLogConfigurationServiceImpl.java b/core/java/com/android/internal/protolog/ProtoLogConfigurationServiceImpl.java
index f83359d..ac1022f 100644
--- a/core/java/com/android/internal/protolog/ProtoLogConfigurationServiceImpl.java
+++ b/core/java/com/android/internal/protolog/ProtoLogConfigurationServiceImpl.java
@@ -44,6 +44,7 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -183,8 +184,8 @@
      * @param groups we want to enable logging them to logcat for.
      */
     @Override
-    public void enableProtoLogToLogcat(@NonNull String... groups) {
-        toggleProtoLogToLogcat(true, groups);
+    public void enableProtoLogToLogcat(@NonNull PrintWriter pw, @NonNull String... groups) {
+        toggleProtoLogToLogcat(pw, true, groups);
     }
 
     /**
@@ -192,8 +193,8 @@
      * @param groups we want to disable from being logged to logcat.
      */
     @Override
-    public void disableProtoLogToLogcat(@NonNull String... groups) {
-        toggleProtoLogToLogcat(false, groups);
+    public void disableProtoLogToLogcat(@NonNull PrintWriter pw, @NonNull String... groups) {
+        toggleProtoLogToLogcat(pw, false, groups);
     }
 
     /**
@@ -249,7 +250,9 @@
         }
     }
 
-    private void toggleProtoLogToLogcat(boolean enabled, @NonNull String[] groups) {
+    private void toggleProtoLogToLogcat(
+            @NonNull PrintWriter pw, boolean enabled, @NonNull String[] groups
+    ) {
         final var clientToGroups = new HashMap<IProtoLogClient, Set<String>>();
 
         for (String group : groups) {
@@ -257,8 +260,10 @@
 
             if (clients == null) {
                 // No clients associated to this group
-                Log.w(LOG_TAG, "Attempting to toggle log to logcat for group " + group
-                        + " with no registered clients.");
+                var warning = "Attempting to toggle log to logcat for group " + group
+                        + " with no registered clients. This is a no-op.";
+                Log.w(LOG_TAG, warning);
+                pw.println("WARNING: " + warning);
                 continue;
             }
 
@@ -270,8 +275,14 @@
 
         for (IProtoLogClient client : clientToGroups.keySet()) {
             try {
-                client.toggleLogcat(enabled, clientToGroups.get(client).toArray(new String[0]));
+                final var clientGroups = clientToGroups.get(client).toArray(new String[0]);
+                pw.println("Toggling logcat logging for client " + client.toString()
+                        + " to " + enabled + " for groups: ["
+                        + String.join(", ", clientGroups) + "]");
+                client.toggleLogcat(enabled, clientGroups);
+                pw.println("- Done");
             } catch (RemoteException e) {
+                pw.println("- Failed");
                 throw new RuntimeException(
                         "Failed to toggle logcat status for groups on client", e);
             }
diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java
index f443b0a..c120e67d 100644
--- a/core/java/com/android/internal/util/LatencyTracker.java
+++ b/core/java/com/android/internal/util/LatencyTracker.java
@@ -22,6 +22,7 @@
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_BACK_SYSTEM_ANIMATION;
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_CHECK_CREDENTIAL;
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_CHECK_CREDENTIAL_UNLOCKED;
+import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG;
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_EXPAND_PANEL;
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FACE_WAKE_AND_UNLOCK;
 import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FINGERPRINT_WAKE_AND_UNLOCK;
@@ -266,6 +267,15 @@
      */
     public static final int ACTION_SHADE_WINDOW_DISPLAY_CHANGE = 29;
 
+    /**
+     * Applicable when the user drags a full screen app's handle into the desktop drop zone to enter
+     * desktop mode. This measure the time from when the user releases their finger in the drop zone
+     * to when the animation for entering desktop mode visually begins. During this period, the
+     * home task and app headers for each window are initialized. Both have historically been
+     * expensive. See b/381396057 and b/360452034 respectively.
+     */
+    public static final int ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG = 30;
+
     private static final int[] ACTIONS_ALL = {
         ACTION_EXPAND_PANEL,
         ACTION_TOGGLE_RECENTS,
@@ -297,6 +307,7 @@
         ACTION_NOTIFICATIONS_HIDDEN_FOR_MEASURE_WITH_SHADE_OPEN,
         ACTION_KEYGUARD_FACE_UNLOCK_TO_HOME,
         ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
+        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
     };
 
     /** @hide */
@@ -331,10 +342,10 @@
         ACTION_NOTIFICATIONS_HIDDEN_FOR_MEASURE_WITH_SHADE_OPEN,
         ACTION_KEYGUARD_FACE_UNLOCK_TO_HOME,
         ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
+        ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
     })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface Action {
-    }
+    public @interface Action {}
 
     @VisibleForTesting
     public static final int[] STATSD_ACTION = new int[] {
@@ -368,6 +379,7 @@
             UIACTION_LATENCY_REPORTED__ACTION__ACTION_NOTIFICATIONS_HIDDEN_FOR_MEASURE_WITH_SHADE_OPEN,
             UIACTION_LATENCY_REPORTED__ACTION__ACTION_KEYGUARD_FACE_UNLOCK_TO_HOME,
             UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHADE_WINDOW_DISPLAY_CHANGE,
+            UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG,
     };
 
     private final Object mLock = new Object();
@@ -568,6 +580,8 @@
                 return "ACTION_KEYGUARD_FACE_UNLOCK_TO_HOME";
             case UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHADE_WINDOW_DISPLAY_CHANGE:
                 return "ACTION_SHADE_WINDOW_DISPLAY_CHANGE";
+            case UIACTION_LATENCY_REPORTED__ACTION__ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG:
+                return "ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG";
             default:
                 throw new IllegalArgumentException("Invalid action");
         }
diff --git a/core/jni/android_os_PerfettoTrackEventExtra.cpp b/core/jni/android_os_PerfettoTrackEventExtra.cpp
index b8bdc8c..18f05ca 100644
--- a/core/jni/android_os_PerfettoTrackEventExtra.cpp
+++ b/core/jni/android_os_PerfettoTrackEventExtra.cpp
@@ -23,7 +23,8 @@
 #include <nativehelper/utils.h>
 #include <tracing_sdk.h>
 
-static constexpr ssize_t kMaxStrLen = 4096;
+#include <list>
+
 namespace android {
 template <typename T>
 inline static T* toPointer(jlong ptr) {
@@ -35,24 +36,145 @@
     return static_cast<jlong>(reinterpret_cast<uintptr_t>(ptr));
 }
 
+/**
+ * @brief A thread-safe utility class for converting Java UTF-16 strings to ASCII in JNI
+ * environment.
+ *
+ * StringBuffer provides efficient conversion of Java strings to ASCII with optimized memory
+ * handling.
+ * It uses a two-tiered buffering strategy:
+ * 1. A fast path using pre-allocated thread-local buffers for strings up to 128 characters
+ * 2. A fallback path using dynamic allocation for longer strings
+ *
+ * Non-ASCII characters (>255) are replaced with '?' during conversion. The class maintains
+ * thread safety through thread-local storage and provides zero-copy string views for optimal
+ * performance.
+ *
+ * Memory Management:
+ * - Uses fixed-size thread-local buffers for both UTF-16 and ASCII characters
+ * - Overflow strings are stored in a thread-local list to maintain valid string views
+ * - Avoids unnecessary allocations in the common case of small strings
+ *
+ * Usage example:
+ * @code
+ * JNIEnv* env = ...;
+ * jstring java_string = ...;
+ * std::string_view ascii = StringBuffer::utf16_to_ascii(env, java_string);
+ * // Use the ASCII string...
+ * StringBuffer::reset(); // Clean up when done
+ * @endcode
+ *
+ * Thread Safety: All methods are thread-safe due to thread-local storage.
+ */
+class StringBuffer {
+private:
+    static constexpr size_t BASE_SIZE = 128;
+    // Temporarily stores the UTF-16 characters retrieved from the Java
+    // string before they are converted to ASCII.
+    static thread_local inline char char_buffer[BASE_SIZE];
+    // For fast-path conversions when the resulting ASCII string fits within
+    // the pre-allocated space. All ascii strings in a trace event will be stored
+    // here until emitted.
+    static thread_local inline jchar jchar_buffer[BASE_SIZE];
+    // When the fast-path conversion is not possible (because char_buffer
+    // doesn't have enough space), the converted ASCII string is stored
+    // in this list. We use list here to avoid moving the strings on resize
+    // with vector. This way, we can give out string_views from the stored strings.
+    // The additional overhead from list node allocations is fine cos we are already
+    // in an extremely unlikely path here and there are other bigger problems if here.
+    static thread_local inline std::list<std::string> overflow_strings;
+    // current offset into the char_buffer.
+    static thread_local inline size_t current_offset{0};
+    // This allows us avoid touching the overflow_strings directly in the fast path.
+    // Touching it causes some thread local init routine to run which shows up in profiles.
+    static thread_local inline bool is_overflow_strings_empty = true;
+
+    static void copy_utf16_to_ascii(const jchar* src, size_t len, char* dst, JNIEnv* env,
+                                    jstring str) {
+        std::transform(src, src + len, dst,
+                       [](jchar c) { return (c <= 0xFF) ? static_cast<char>(c) : '?'; });
+
+        if (src != jchar_buffer) {
+            // We hit the slow path to populate src, so we have to release.
+            env->ReleaseStringCritical(str, src);
+        }
+    }
+
+public:
+    static void reset() {
+        if (!is_overflow_strings_empty) {
+            overflow_strings.clear();
+            is_overflow_strings_empty = true;
+        }
+        current_offset = 0;
+    }
+
+    // Converts a Java string (jstring) to an ASCII string_view. Characters
+    // outside the ASCII range (0-255) are replaced with '?'.
+    //
+    // @param env The JNI environment.
+    // @param val The Java string to convert.
+    // @return A string_view representing the ASCII version of the string.
+    //         Returns an empty string_view if the input is null or empty.
+    static std::string_view utf16_to_ascii(JNIEnv* env, jstring val) {
+        if (!val) return "";
+
+        const jsize len = env->GetStringLength(val);
+        if (len == 0) return "";
+
+        const jchar* temp_buffer;
+
+        // Fast path: Enough space in jchar_buffer
+        if (static_cast<size_t>(len) <= BASE_SIZE) {
+            env->GetStringRegion(val, 0, len, jchar_buffer);
+            temp_buffer = jchar_buffer;
+        } else {
+            // Slow path: Fallback to asking ART for the string which will likely
+            // allocate and return a copy.
+            temp_buffer = env->GetStringCritical(val, nullptr);
+        }
+
+        const size_t next_offset = current_offset + len + 1;
+        // Fast path: Enough space in char_buffer
+        if (BASE_SIZE > next_offset) {
+            const size_t start_offset = current_offset;
+
+            copy_utf16_to_ascii(temp_buffer, len, char_buffer + current_offset, env, val);
+            char_buffer[current_offset + len] = '\0';
+
+            auto res = std::string_view(char_buffer + current_offset, len);
+            current_offset = next_offset;
+            return res;
+        } else {
+            // Slow path: Not enough space in char_buffer. Use overflow_strings.
+            // This will cause a string alloc but should be very unlikely to hit.
+            std::string& str = overflow_strings.emplace_back(len + 1, '\0');
+
+            copy_utf16_to_ascii(temp_buffer, len, str.data(), env, val);
+            is_overflow_strings_empty = false;
+            return std::string_view(str);
+        }
+    }
+};
+
 static jlong android_os_PerfettoTrackEventExtraArgInt64_init(JNIEnv* env, jclass, jstring name) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-    return toJLong(new tracing_perfetto::DebugArg<int64_t>(name_chars.c_str()));
+    return toJLong(new tracing_perfetto::DebugArg<int64_t>(
+            StringBuffer::utf16_to_ascii(env, name).data()));
 }
 
 static jlong android_os_PerfettoTrackEventExtraArgBool_init(JNIEnv* env, jclass, jstring name) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-    return toJLong(new tracing_perfetto::DebugArg<bool>(name_chars.c_str()));
+    return toJLong(
+            new tracing_perfetto::DebugArg<bool>(StringBuffer::utf16_to_ascii(env, name).data()));
 }
 
 static jlong android_os_PerfettoTrackEventExtraArgDouble_init(JNIEnv* env, jclass, jstring name) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-    return toJLong(new tracing_perfetto::DebugArg<double>(name_chars.c_str()));
+    return toJLong(
+            new tracing_perfetto::DebugArg<double>(StringBuffer::utf16_to_ascii(env, name).data()));
 }
 
 static jlong android_os_PerfettoTrackEventExtraArgString_init(JNIEnv* env, jclass, jstring name) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-    return toJLong(new tracing_perfetto::DebugArg<const char*>(name_chars.c_str()));
+    return toJLong(new tracing_perfetto::DebugArg<const char*>(
+            StringBuffer::utf16_to_ascii(env, name).data()));
 }
 
 static jlong android_os_PerfettoTrackEventExtraArgInt64_delete() {
@@ -109,11 +231,9 @@
 
 static void android_os_PerfettoTrackEventExtraArgString_set_value(JNIEnv* env, jclass, jlong ptr,
                                                                   jstring val) {
-    ScopedUtfChars val_chars = GET_UTF_OR_RETURN_VOID(env, val);
-
     tracing_perfetto::DebugArg<const char*>* arg =
             toPointer<tracing_perfetto::DebugArg<const char*>>(ptr);
-    arg->set_value(strdup(val_chars.c_str()));
+    arg->set_value(StringBuffer::utf16_to_ascii(env, val).data());
 }
 
 static jlong android_os_PerfettoTrackEventExtraFieldInt64_init() {
@@ -186,11 +306,9 @@
 
 static void android_os_PerfettoTrackEventExtraFieldString_set_value(JNIEnv* env, jclass, jlong ptr,
                                                                     jlong id, jstring val) {
-    ScopedUtfChars val_chars = GET_UTF_OR_RETURN_VOID(env, val);
-
     tracing_perfetto::ProtoField<const char*>* field =
             toPointer<tracing_perfetto::ProtoField<const char*>>(ptr);
-    field->set_value(id, strdup(val_chars.c_str()));
+    field->set_value(id, StringBuffer::utf16_to_ascii(env, val).data());
 }
 
 static void android_os_PerfettoTrackEventExtraFieldNested_add_field(jlong field_ptr,
@@ -231,8 +349,9 @@
 
 static jlong android_os_PerfettoTrackEventExtraNamedTrack_init(JNIEnv* env, jclass, jlong id,
                                                                jstring name, jlong parent_uuid) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-    return toJLong(new tracing_perfetto::NamedTrack(id, parent_uuid, name_chars.c_str()));
+    return toJLong(
+            new tracing_perfetto::NamedTrack(id, parent_uuid,
+                                             StringBuffer::utf16_to_ascii(env, name).data()));
 }
 
 static jlong android_os_PerfettoTrackEventExtraNamedTrack_delete() {
@@ -246,9 +365,10 @@
 
 static jlong android_os_PerfettoTrackEventExtraCounterTrack_init(JNIEnv* env, jclass, jstring name,
                                                                  jlong parent_uuid) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN(env, name);
-
-    return toJLong(new tracing_perfetto::RegisteredTrack(1, parent_uuid, name_chars.c_str(), true));
+    return toJLong(
+            new tracing_perfetto::RegisteredTrack(1, parent_uuid,
+                                                  StringBuffer::utf16_to_ascii(env, name).data(),
+                                                  true));
 }
 
 static jlong android_os_PerfettoTrackEventExtraCounterTrack_delete() {
@@ -318,11 +438,11 @@
 
 static void android_os_PerfettoTrackEventExtra_emit(JNIEnv* env, jclass, jint type, jlong cat_ptr,
                                                     jstring name, jlong extra_ptr) {
-    ScopedUtfChars name_chars = GET_UTF_OR_RETURN_VOID(env, name);
-
     tracing_perfetto::Category* category = toPointer<tracing_perfetto::Category>(cat_ptr);
-    tracing_perfetto::trace_event(type, category->get(), name_chars.c_str(),
+    tracing_perfetto::trace_event(type, category->get(),
+                                  StringBuffer::utf16_to_ascii(env, name).data(),
                                   toPointer<tracing_perfetto::Extra>(extra_ptr));
+    StringBuffer::reset();
 }
 
 static jlong android_os_PerfettoTrackEventExtraProto_init() {
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index b2649a4..a73ff42 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -424,6 +424,15 @@
   assetmanager->SetDefaultLocale(default_locale_int);
 }
 
+static void NativeSetOverlayConstraints(JNIEnv* /*env*/, jclass /*clazz*/, jlong ptr,
+                                        jint displayId, jint deviceId) {
+    ATRACE_NAME("AssetManager::SetDisplayIdAndDeviceId");
+
+    auto assetmanager = LockAndStartAssetManager(ptr);
+    assetmanager->SetOverlayConstraints(static_cast<int32_t>(displayId),
+                                        static_cast<int32_t>(deviceId));
+}
+
 static jobject NativeGetAssignedPackageIdentifiers(JNIEnv* env, jclass /*clazz*/, jlong ptr,
                                                    jboolean includeOverlays,
                                                    jboolean includeLoaders) {
@@ -1554,6 +1563,7 @@
         {"nativeSetApkAssets", "(J[Landroid/content/res/ApkAssets;ZZ)V", (void*)NativeSetApkAssets},
         {"nativeSetConfiguration", "(JIILjava/lang/String;[Ljava/lang/String;IIIIIIIIIIIIIIIIZ)V",
          (void*)NativeSetConfiguration},
+        {"nativeSetOverlayConstraints", "(JII)V", (void*)NativeSetOverlayConstraints},
         {"nativeGetAssignedPackageIdentifiers", "(JZZ)Landroid/util/SparseArray;",
          (void*)NativeGetAssignedPackageIdentifiers},
 
diff --git a/core/jni/com_android_internal_os_ApplicationSharedMemory.cpp b/core/jni/com_android_internal_os_ApplicationSharedMemory.cpp
index cc1687c..71d1694 100644
--- a/core/jni/com_android_internal_os_ApplicationSharedMemory.cpp
+++ b/core/jni/com_android_internal_os_ApplicationSharedMemory.cpp
@@ -23,18 +23,67 @@
 #include <string.h>
 #include <sys/mman.h>
 
+#include <array>
 #include <atomic>
 #include <cstddef>
 #include <new>
 
-#include "core_jni_helpers.h"
-
 #include "android_app_PropertyInvalidatedCache.h"
+#include "core_jni_helpers.h"
 
 namespace {
 
 using namespace android::app::PropertyInvalidatedCache;
 
+class alignas(8) SystemFeaturesCache {
+public:
+    // We only need enough space to handle the official set of SDK-defined system features (~200).
+    // TODO(b/326623529): Reuse the exact value defined by PackageManager.SDK_FEATURE_COUNT.
+    static constexpr int32_t kMaxSystemFeatures = 512;
+
+    void writeSystemFeatures(JNIEnv* env, jintArray jfeatures) {
+        if (featuresLength.load(std::memory_order_seq_cst) > 0) {
+            jniThrowExceptionFmt(env, "java/lang/IllegalStateException",
+                                 "SystemFeaturesCache already written.");
+            return;
+        }
+
+        int32_t jfeaturesLength = env->GetArrayLength(jfeatures);
+        if (jfeaturesLength > kMaxSystemFeatures) {
+            jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
+                                 "SystemFeaturesCache only supports %d elements (vs %d requested).",
+                                 kMaxSystemFeatures, jfeaturesLength);
+            return;
+        }
+        env->GetIntArrayRegion(jfeatures, 0, jfeaturesLength, features.data());
+        featuresLength.store(jfeaturesLength, std::memory_order_seq_cst);
+    }
+
+    jintArray readSystemFeatures(JNIEnv* env) const {
+        jint jfeaturesLength = static_cast<jint>(featuresLength.load(std::memory_order_seq_cst));
+        jintArray jfeatures = env->NewIntArray(jfeaturesLength);
+        if (env->ExceptionCheck()) {
+            return nullptr;
+        }
+
+        env->SetIntArrayRegion(jfeatures, 0, jfeaturesLength, features.data());
+        return jfeatures;
+    }
+
+private:
+    // A fixed length array of feature versions, with |featuresLength| dictating the actual size
+    // of features that have been written.
+    std::array<int32_t, kMaxSystemFeatures> features = {};
+    // The atomic acts as a barrier that precedes reads and follows writes, ensuring a
+    // consistent view of |features| across processes. Note that r/w synchronization *within* a
+    // process is handled at a higher level.
+    std::atomic<int64_t> featuresLength = 0;
+};
+
+static_assert(sizeof(SystemFeaturesCache) ==
+                      sizeof(int32_t) * SystemFeaturesCache::kMaxSystemFeatures + sizeof(int64_t),
+              "Unexpected SystemFeaturesCache size");
+
 // Atomics should be safe to use across processes if they are lock free.
 static_assert(std::atomic<int64_t>::is_always_lock_free == true,
               "atomic<int64_t> is not always lock free");
@@ -69,14 +118,25 @@
         latestNetworkTimeUnixEpochMillisAtZeroElapsedRealtimeMillis = offset;
     }
 
+    // The fixed size cache storage for SDK-defined system features.
+    SystemFeaturesCache systemFeaturesCache;
+
     // The nonce storage for pic.  The sizing is suitable for the system server module.
     SystemCacheNonce systemPic;
 };
 
-// Update the expected value when modifying the members of SharedMemory.
+// Update the expected values when modifying the members of SharedMemory.
 // The goal of this assertion is to ensure that the data structure is the same size across 32-bit
 // and 64-bit systems.
-static_assert(sizeof(SharedMemory) == 8 + sizeof(SystemCacheNonce), "Unexpected SharedMemory size");
+// TODO(b/396674280): Add an additional fixed size check for SystemCacheNonce after resolving
+// ABI discrepancies.
+static_assert(sizeof(SharedMemory) == 8 + sizeof(SystemFeaturesCache) + sizeof(SystemCacheNonce),
+              "Unexpected SharedMemory size");
+static_assert(offsetof(SharedMemory, systemFeaturesCache) == sizeof(int64_t),
+              "Unexpected SystemFeaturesCache offset in SharedMemory");
+static_assert(offsetof(SharedMemory, systemPic) ==
+                      offsetof(SharedMemory, systemFeaturesCache) + sizeof(SystemFeaturesCache),
+              "Unexpected SystemCachceNonce offset in SharedMemory");
 
 static jint nativeCreate(JNIEnv* env, jclass) {
     // Create anonymous shared memory region
@@ -146,6 +206,16 @@
     return reinterpret_cast<jlong>(&sharedMemory->systemPic);
 }
 
+static void nativeWriteSystemFeaturesCache(JNIEnv* env, jclass*, jlong ptr, jintArray jfeatures) {
+    SharedMemory* sharedMemory = reinterpret_cast<SharedMemory*>(ptr);
+    sharedMemory->systemFeaturesCache.writeSystemFeatures(env, jfeatures);
+}
+
+static jintArray nativeReadSystemFeaturesCache(JNIEnv* env, jclass*, jlong ptr) {
+    SharedMemory* sharedMemory = reinterpret_cast<SharedMemory*>(ptr);
+    return sharedMemory->systemFeaturesCache.readSystemFeatures(env);
+}
+
 static const JNINativeMethod gMethods[] = {
         {"nativeCreate", "()I", (void*)nativeCreate},
         {"nativeMap", "(IZ)J", (void*)nativeMap},
@@ -156,7 +226,9 @@
          (void*)nativeSetLatestNetworkTimeUnixEpochMillisAtZeroElapsedRealtimeMillis},
         {"nativeGetLatestNetworkTimeUnixEpochMillisAtZeroElapsedRealtimeMillis", "(J)J",
          (void*)nativeGetLatestNetworkTimeUnixEpochMillisAtZeroElapsedRealtimeMillis},
-        {"nativeGetSystemNonceBlock", "(J)J", (void*) nativeGetSystemNonceBlock},
+        {"nativeGetSystemNonceBlock", "(J)J", (void*)nativeGetSystemNonceBlock},
+        {"nativeWriteSystemFeaturesCache", "(J[I)V", (void*)nativeWriteSystemFeaturesCache},
+        {"nativeReadSystemFeaturesCache", "(J)[I", (void*)nativeReadSystemFeaturesCache},
 };
 
 static const char kApplicationSharedMemoryClassName[] =
diff --git a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
index 7ffe0ed..8f36ecb 100644
--- a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
+++ b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp
@@ -97,7 +97,13 @@
 static void native_incrementValues(JNIEnv *env, jclass, jlong nativePtr, jlongArray values,
                                    jlong timestamp) {
     auto *counter = reinterpret_cast<LongArrayMultiStateCounter *>(nativePtr);
-    counter->incrementValue(JavaUint64Array(env, values), timestamp);
+    if (values != nullptr) {
+        counter->incrementValue(JavaUint64Array(env, values), timestamp);
+    } else {
+        // Pass an empty Uint64Array, which is equivalent to an array of zeros.
+        // This is done to ensure that the timestamp is still updated in the counter.
+        counter->incrementValue(Uint64Array(), timestamp);
+    }
 }
 
 static void native_addCounts(JNIEnv *env, jclass, jlong nativePtr, jlongArray values) {
diff --git a/core/proto/OWNERS b/core/proto/OWNERS
index b51f72d..aa8f841 100644
--- a/core/proto/OWNERS
+++ b/core/proto/OWNERS
@@ -5,7 +5,6 @@
 singhtejinder@google.com
 yanmin@google.com
 yaochen@google.com
-yro@google.com
 zhouwenjie@google.com
 
 # Frameworks
diff --git a/core/proto/android/providers/settings/common.proto b/core/proto/android/providers/settings/common.proto
index 64ffefb6..931192e 100644
--- a/core/proto/android/providers/settings/common.proto
+++ b/core/proto/android/providers/settings/common.proto
@@ -37,6 +37,9 @@
 
     // Whether the default is set by the system
     optional bool default_from_system = 6;
+
+    // Whether the value is ignored when restoring from backup
+    optional bool preserved_in_restore = 7;
 }
 
 message SettingsOperationProto {
diff --git a/core/res/res/drawable-w192dp/loader_horizontal_watch.xml b/core/res/res/drawable-w192dp/loader_horizontal_watch.xml
deleted file mode 100644
index 18cea6e..0000000
--- a/core/res/res/drawable-w192dp/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="15dp" android:width="67dp" android:viewportHeight="15" android:viewportWidth="67">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="33.5" android:translateY="7.5">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M33.5 -7.5 C33.5,-7.5 33.5,7.5 33.5,7.5 C33.5,7.5 -33.5,7.5 -33.5,7.5 C-33.5,7.5 -33.5,-7.5 -33.5,-7.5 C-33.5,-7.5 33.5,-7.5 33.5,-7.5c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-296.5" android:translateY="-62.5" android:pivotX="330" android:pivotY="70" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-224.84700000000004" android:translateY="-321.948" android:pivotX="555.09" android:pivotY="-329" android:rotation="28.9" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M194.88 359 C190,359 185.05,357.81 180.48,355.3 C59.86,289.14 -41.55,191.9 -112.79,74.11 C-186.14,-47.16 -224.91,-186.55 -224.91,-329 C-224.91,-345.57 -211.48,-359 -194.91,-359 C-178.34,-359 -164.91,-345.57 -164.91,-329 C-164.91,-197.5 -129.13,-68.84 -61.45,43.06 C4.33,151.82 97.97,241.6 209.33,302.69 C223.86,310.66 229.18,328.9 221.21,343.42 C215.75,353.37 205.48,359 194.88,359c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="744.323" android:translateY="-277.96299999999997" android:pivotX="-414.08" android:pivotY="-372.985" android:rotation="28.9">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-335.95 402.99 C-351.13,402.99 -364.16,391.5 -365.76,376.07 C-367.46,359.59 -355.49,344.85 -339.01,343.14 C-162.93,324.91 -0.15,242.33 119.34,110.62 C239.66,-22.01 305.92,-193.76 305.92,-372.98 C305.92,-389.55 319.35,-402.98 335.92,-402.98 C352.49,-402.98 365.92,-389.55 365.92,-372.98 C365.92,-178.82 294.13,7.24 163.78,150.93 C34.34,293.61 -142.03,383.07 -332.83,402.82 C-333.88,402.93 -334.92,402.99 -335.95,402.99c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="185.385" android:translateY="70.09100000000001" android:pivotX="144.858" android:pivotY="-721.039" android:rotation="28.9" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M144.62 58.96 C144.61,58.96 144.61,58.96 144.6,58.96 C40.39,58.93 -60.82,38.66 -156.19,-1.28 C-171.48,-7.68 -178.68,-25.26 -172.28,-40.54 C-165.88,-55.82 -148.3,-63.02 -133.02,-56.62 C-45.02,-19.77 48.4,-1.07 144.63,-1.04 C161.19,-1.03 174.62,12.4 174.62,28.97 C174.61,45.53 161.18,58.96 144.62,58.96c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="330" android:translateY="70">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-660 -313 C-660,-313 -660,313 -660,313 C-660,313 660,313 660,313 C660,313 660,-313 660,-313 C660,-313 -660,-313 -660,-313c  M300.74 -1.16 C205.46,38.62 103.22,59.09 -0.03,59.05 C-103.28,59.01 -205.51,38.48 -300.76,-1.37 C-316.05,-7.76 -323.26,-25.34 -316.86,-40.62 C-310.47,-55.91 -292.9,-63.12 -277.61,-56.72 C-189.68,-19.94 -95.32,-0.98 -0.01,-0.95 C95.3,-0.92 189.67,-19.81 277.63,-56.53 C292.92,-62.91 310.49,-55.69 316.87,-40.4 C323.25,-25.11 316.03,-7.54 300.74,-1.16c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.9" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.135 0.202,0.848 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.9" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.135 0.202,0.848 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.9" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.135 0.202,0.848 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
-
diff --git a/core/res/res/drawable-w204dp/loader_horizontal_watch.xml b/core/res/res/drawable-w204dp/loader_horizontal_watch.xml
deleted file mode 100644
index fbc6eab..0000000
--- a/core/res/res/drawable-w204dp/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="15dp" android:width="70dp" android:viewportHeight="15" android:viewportWidth="70">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="35" android:translateY="7.5">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M35 -7.5 C35,-7.5 35,7.5 35,7.5 C35,7.5 -35,7.5 -35,7.5 C-35,7.5 -35,-7.5 -35,-7.5 C-35,-7.5 35,-7.5 35,-7.5c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-310" android:translateY="-64" android:pivotX="345" android:pivotY="71.5" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-239.44799999999998" android:translateY="-341.45" android:pivotX="584.448" android:pivotY="-346.55" android:rotation="28.8" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M205.28 376.55 C200.4,376.55 195.46,375.36 190.88,372.85 C64.08,303.29 -42.54,201.07 -117.44,77.24 C-194.55,-50.25 -235.31,-196.79 -235.31,-346.55 C-235.31,-363.12 -221.88,-376.55 -205.31,-376.55 C-188.74,-376.55 -175.31,-363.12 -175.31,-346.55 C-175.31,-207.74 -137.54,-71.93 -66.1,46.19 C3.34,160.99 102.18,255.76 219.73,320.24 C234.26,328.21 239.58,346.45 231.61,360.97 C226.15,370.92 215.88,376.55 205.28,376.55c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="781.413" android:translateY="-295.124" android:pivotX="-436.413" android:pivotY="-392.876" android:rotation="28.8">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-353.86 422.88 C-369.04,422.88 -382.07,411.4 -383.67,395.97 C-385.37,379.49 -373.4,364.74 -356.92,363.03 C-171.06,343.79 0.76,256.62 126.89,117.59 C253.89,-22.41 323.83,-203.7 323.83,-392.88 C323.83,-409.44 337.26,-422.88 353.83,-422.88 C370.4,-422.88 383.83,-409.44 383.83,-392.88 C383.83,-188.76 308.36,6.84 171.32,157.9 C35.25,307.89 -150.15,401.94 -350.74,422.72 C-351.79,422.82 -352.83,422.88 -353.86,422.88c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="192.671" android:translateY="71.49599999999998" android:pivotX="152.329" android:pivotY="-759.496" android:rotation="28.8" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M152.33 60.5 C152.33,60.5 152.32,60.5 152.32,60.5 C42.76,60.47 -63.64,39.16 -163.91,-2.82 C-179.19,-9.22 -186.39,-26.8 -179.99,-42.08 C-173.59,-57.36 -156.02,-64.57 -140.73,-58.16 C-47.84,-19.27 50.77,0.47 152.34,0.5 C168.91,0.51 182.33,13.94 182.33,30.51 C182.32,47.08 168.89,60.5 152.33,60.5c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="345" android:translateY="71.5">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-579 -259.5 C-579,-259.5 -579,259.5 -579,259.5 C-579,259.5 579,259.5 579,259.5 C579,259.5 579,-259.5 579,-259.5 C579,-259.5 -579,-259.5 -579,-259.5c  M316.17 -2.8 C216,39.02 108.52,60.54 -0.03,60.5 C-108.58,60.46 -216.04,38.87 -316.18,-3.02 C-331.47,-9.41 -338.68,-26.99 -332.28,-42.27 C-325.89,-57.56 -308.32,-64.76 -293.03,-58.37 C-200.22,-19.55 -100.61,0.46 -0.01,0.5 C100.6,0.54 200.22,-19.41 293.06,-58.17 C308.35,-64.55 325.92,-57.33 332.3,-42.04 C338.68,-26.75 331.46,-9.18 316.17,-2.8c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="333" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
-
diff --git a/core/res/res/drawable-w216dp/loader_horizontal_watch.xml b/core/res/res/drawable-w216dp/loader_horizontal_watch.xml
deleted file mode 100644
index ed4b7ea..0000000
--- a/core/res/res/drawable-w216dp/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="16dp" android:width="74dp" android:viewportHeight="16" android:viewportWidth="74">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="37" android:translateY="8">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M37 -8 C37,-8 37,8 37,8 C37,8 -37,8 -37,8 C-37,8 -37,-8 -37,-8 C-37,-8 37,-8 37,-8c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-328" android:translateY="-65.5" android:pivotX="365" android:pivotY="73.5" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-256.447" android:translateY="-365.014" android:pivotX="621.447" android:pivotY="-368.486" android:rotation="28.8" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M218.28 398.49 C213.4,398.49 208.46,397.3 203.88,394.78 C69.34,320.99 -43.78,212.53 -123.25,81.15 C-205.06,-54.11 -248.31,-209.59 -248.31,-368.49 C-248.31,-385.05 -234.88,-398.49 -218.31,-398.49 C-201.74,-398.49 -188.31,-385.05 -188.31,-368.49 C-188.31,-220.54 -148.06,-75.8 -71.91,50.09 C2.1,172.45 107.45,273.45 232.73,342.18 C247.26,350.15 252.58,368.38 244.61,382.91 C239.15,392.86 228.88,398.49 218.28,398.49c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="829.0260000000001" android:translateY="-315.759" android:pivotX="-464.026" android:pivotY="-417.741" android:rotation="28.8">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-376.25 447.74 C-391.43,447.74 -404.46,436.26 -406.05,420.83 C-407.76,404.35 -395.78,389.61 -379.3,387.9 C-181.22,367.38 1.9,274.48 136.32,126.3 C271.67,-22.9 346.22,-216.12 346.22,-417.74 C346.22,-434.31 359.65,-447.74 376.22,-447.74 C392.79,-447.74 406.22,-434.31 406.22,-417.74 C406.22,-201.18 326.15,6.35 180.76,166.61 C36.39,325.75 -160.31,425.54 -373.12,447.58 C-374.17,447.69 -375.22,447.74 -376.25,447.74c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="203.029" android:translateY="74.06899999999996" android:pivotX="161.971" android:pivotY="-807.569" android:rotation="28.8" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M161.97 62.43 C161.97,62.43 161.96,62.43 161.96,62.43 C45.71,62.4 -67.17,39.79 -173.55,-4.75 C-188.83,-11.15 -196.03,-28.72 -189.63,-44.01 C-183.24,-59.29 -165.66,-66.49 -150.38,-60.09 C-51.37,-18.64 53.72,2.4 161.98,2.43 C178.55,2.44 191.98,15.87 191.97,32.44 C191.97,49 178.54,62.43 161.97,62.43c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="365" android:translateY="73.5">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-609 -244.5 C-609,-244.5 -609,244.5 -609,244.5 C-609,244.5 609,244.5 609,244.5 C609,244.5 609,-244.5 609,-244.5 C609,-244.5 -609,-244.5 -609,-244.5c  M335.44 -4.16 C229.17,40.21 115.13,63.04 -0.04,63 C-115.21,62.96 -229.22,40.05 -335.47,-4.39 C-350.76,-10.79 -357.95,-28.36 -351.56,-43.65 C-345.17,-58.93 -327.59,-66.14 -312.31,-59.74 C-213.39,-18.36 -107.24,2.96 -0.02,3 C107.21,3.04 213.38,-18.22 312.33,-59.53 C327.62,-65.91 345.19,-58.69 351.57,-43.4 C357.95,-28.11 350.73,-10.54 335.44,-4.16c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.3" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="333" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.3" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.8" android:valueTo="-51.3" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
-
-
diff --git a/core/res/res/drawable-w228dp/loader_horizontal_watch.xml b/core/res/res/drawable-w228dp/loader_horizontal_watch.xml
deleted file mode 100644
index 6b86c63..0000000
--- a/core/res/res/drawable-w228dp/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="14dp" android:width="76dp" android:viewportHeight="14" android:viewportWidth="76">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="39" android:translateY="8">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M39 -8 C39,-8 39,8 39,8 C39,8 -39,8 -39,8 C-39,8 -39,-8 -39,-8 C-39,-8 39,-8 39,-8c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-345" android:translateY="-67" android:pivotX="384" android:pivotY="75" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-274.19" android:translateY="-390.077" android:pivotX="658.448" android:pivotY="-390.423" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M231.28 420.42 C226.4,420.42 221.45,419.23 216.88,416.72 C74.61,338.68 -45.02,224 -129.06,85.06 C-171.54,14.82 -204.38,-60.73 -226.66,-139.5 C-249.65,-220.76 -261.31,-305.18 -261.31,-390.42 C-261.31,-406.99 -247.88,-420.42 -231.31,-420.42 C-214.74,-420.42 -201.31,-406.99 -201.31,-390.42 C-201.31,-310.71 -190.42,-231.78 -168.93,-155.83 C-148.11,-82.23 -117.42,-11.63 -77.72,54 C0.86,183.92 112.71,291.15 245.73,364.12 C260.26,372.08 265.58,390.32 257.61,404.85 C252.15,414.79 241.88,420.42 231.28,420.42c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="875.8979999999999" android:translateY="-337.894" android:pivotX="-491.64" android:pivotY="-442.606" android:rotation="28.7">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-398.64 472.61 C-413.82,472.61 -426.84,461.13 -428.44,445.7 C-430.15,429.22 -418.17,414.47 -401.69,412.77 C-191.38,390.98 3.04,292.33 145.75,135.01 C289.46,-23.4 368.6,-228.54 368.6,-442.61 C368.6,-459.17 382.04,-472.61 398.6,-472.61 C415.17,-472.61 428.6,-459.17 428.6,-442.61 C428.6,-213.6 343.93,5.85 190.19,175.33 C37.53,343.61 -170.48,449.13 -395.51,472.44 C-396.56,472.55 -397.6,472.61 -398.64,472.61c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="212.64499999999998" android:translateY="75.14200000000005" android:pivotX="171.613" android:pivotY="-855.642" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M171.61 64.36 C171.61,64.36 171.61,64.36 171.61,64.36 C48.68,64.32 -70.7,40.42 -183.19,-6.68 C-198.47,-13.07 -205.68,-30.65 -199.28,-45.93 C-192.88,-61.22 -175.3,-68.42 -160.02,-62.02 C-54.9,-18.01 56.68,4.33 171.62,4.36 C188.19,4.36 201.62,17.8 201.61,34.36 C201.61,50.93 188.18,64.36 171.61,64.36c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="384" android:translateY="75">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-611 -259 C-611,-259 -611,259 -611,259 C-611,259 611,259 611,259 C611,259 611,-259 611,-259 C611,-259 -611,-259 -611,-259c  M354.66 -6.52 C242.36,40.4 121.76,64.54 -0.04,64.5 C-121.84,64.46 -242.44,40.23 -354.74,-6.76 C-370.04,-13.16 -377.24,-30.73 -370.84,-46.02 C-364.44,-61.3 -346.94,-68.51 -331.64,-62.12 C-226.54,-18.18 -113.84,4.46 -0.04,4.5 C113.76,4.54 226.56,-18.02 331.56,-61.89 C346.86,-68.27 364.46,-61.05 370.86,-45.76 C377.26,-30.47 369.96,-12.9 354.66,-6.52c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="333" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
diff --git a/core/res/res/drawable-w240dp/loader_horizontal_watch.xml b/core/res/res/drawable-w240dp/loader_horizontal_watch.xml
deleted file mode 100644
index ad60bbd..0000000
--- a/core/res/res/drawable-w240dp/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="17dp" android:width="82dp" android:viewportHeight="17" android:viewportWidth="82">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="41" android:translateY="8.5">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M41 -8.5 C41,-8.5 41,8.5 41,8.5 C41,8.5 -41,8.5 -41,8.5 C-41,8.5 -41,-8.5 -41,-8.5 C-41,-8.5 41,-8.5 41,-8.5c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-362.5" android:translateY="-69" android:pivotX="403.5" android:pivotY="77.5" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-291.64799999999997" android:translateY="-414.141" android:pivotX="695.448" android:pivotY="-412.359" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M244.28 442.36 C239.4,442.36 234.45,441.17 229.88,438.66 C79.87,356.38 -46.26,235.46 -134.87,88.96 C-179.66,14.91 -214.28,-64.74 -237.78,-147.79 C-262.02,-233.47 -274.31,-322.49 -274.31,-412.36 C-274.31,-428.93 -260.88,-442.36 -244.31,-442.36 C-227.74,-442.36 -214.31,-428.93 -214.31,-412.36 C-214.31,-328.01 -202.78,-244.49 -180.05,-164.12 C-158.01,-86.24 -125.54,-11.54 -83.53,57.91 C-0.38,195.38 117.97,308.85 258.73,386.05 C273.26,394.02 278.58,412.26 270.61,426.78 C265.15,436.73 254.88,442.36 244.28,442.36c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="923.0530000000001" android:translateY="-359.029" android:pivotX="-519.253" android:pivotY="-467.471" android:rotation="28.7">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-421.02 497.47 C-436.2,497.47 -449.23,485.99 -450.83,470.56 C-452.53,454.08 -440.56,439.34 -424.08,437.63 C-201.54,414.57 4.18,310.19 155.19,143.73 C229.54,61.77 287.7,-31.75 328.04,-134.22 C369.81,-240.3 390.99,-352.42 390.99,-467.47 C390.99,-484.04 404.42,-497.47 420.99,-497.47 C437.56,-497.47 450.99,-484.04 450.99,-467.47 C450.99,-226.02 361.72,5.35 199.63,184.04 C38.67,361.47 -180.63,472.73 -417.89,497.31 C-418.94,497.42 -419.99,497.47 -421.02,497.47c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="222.54600000000002" android:translateY="77.21400000000006" android:pivotX="181.254" android:pivotY="-903.714" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M181.26 66.28 C181.25,66.28 181.25,66.28 181.25,66.28 C51.64,66.25 -74.22,41.06 -192.83,-8.6 C-208.12,-15 -215.32,-32.58 -208.92,-47.86 C-202.52,-63.15 -184.94,-70.35 -169.66,-63.95 C-58.42,-17.38 59.64,6.25 181.26,6.28 C197.83,6.29 211.26,19.72 211.26,36.29 C211.25,52.86 197.82,66.28 181.26,66.28c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="403.5" android:translateY="77.5">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-630.5 -255.5 C-630.5,-255.5 -630.5,255.5 -630.5,255.5 C-630.5,255.5 630.5,255.5 630.5,255.5 C630.5,255.5 630.5,-255.5 630.5,-255.5 C630.5,-255.5 -630.5,-255.5 -630.5,-255.5c  M374 -8.88 C255.5,40.59 128.4,66.04 0,66 C-128.4,65.95 -255.6,40.42 -374,-9.14 C-389.3,-15.53 -396.5,-33.11 -390.1,-48.39 C-383.7,-63.68 -366.2,-70.88 -350.9,-64.49 C-239.7,-18 -120.5,5.96 0,6 C120.4,6.04 239.7,-17.84 350.9,-64.25 C366.2,-70.63 383.7,-63.41 390.1,-48.12 C396.5,-32.83 389.3,-15.26 374,-8.88c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="333" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
-
diff --git a/core/res/res/drawable/accessibility_autoclick_resume.xml b/core/res/res/drawable/accessibility_autoclick_resume.xml
new file mode 100644
index 0000000..ae83e98
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_resume.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright 2025 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:width="24dp"
+    android:height="24dp">
+    <group>
+        <clip-path android:pathData="M0 0H24V24H0V0Z" />
+        <path
+            android:pathData="M8 19V5L19 12L8 19Z"
+            android:fillColor="@color/materialColorPrimary" />
+    </group>
+</vector>
diff --git a/core/res/res/drawable/loader_horizontal_watch.xml b/core/res/res/drawable/loader_horizontal_watch.xml
deleted file mode 100644
index 6b86c63..0000000
--- a/core/res/res/drawable/loader_horizontal_watch.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
-    <aapt:attr name="android:drawable">
-        <vector android:height="14dp" android:width="76dp" android:viewportHeight="14" android:viewportWidth="76">
-            <group android:name="_R_G">
-                <group android:name="_R_G_L_1_G" android:translateX="39" android:translateY="8">
-                    <path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M39 -8 C39,-8 39,8 39,8 C39,8 -39,8 -39,8 C-39,8 -39,-8 -39,-8 C-39,-8 39,-8 39,-8c "/>
-                </group>
-                <group android:name="_R_G_L_0_G" android:translateX="-345" android:translateY="-67" android:pivotX="384" android:pivotY="75" android:scaleX="0.1" android:scaleY="0.1">
-                    <group android:name="_R_G_L_0_G_L_6_G" android:translateX="-274.19" android:translateY="-390.077" android:pivotX="658.448" android:pivotY="-390.423" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_6_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M231.28 420.42 C226.4,420.42 221.45,419.23 216.88,416.72 C74.61,338.68 -45.02,224 -129.06,85.06 C-171.54,14.82 -204.38,-60.73 -226.66,-139.5 C-249.65,-220.76 -261.31,-305.18 -261.31,-390.42 C-261.31,-406.99 -247.88,-420.42 -231.31,-420.42 C-214.74,-420.42 -201.31,-406.99 -201.31,-390.42 C-201.31,-310.71 -190.42,-231.78 -168.93,-155.83 C-148.11,-82.23 -117.42,-11.63 -77.72,54 C0.86,183.92 112.71,291.15 245.73,364.12 C260.26,372.08 265.58,390.32 257.61,404.85 C252.15,414.79 241.88,420.42 231.28,420.42c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_5_G" android:translateX="875.8979999999999" android:translateY="-337.894" android:pivotX="-491.64" android:pivotY="-442.606" android:rotation="28.7">
-                        <path android:name="_R_G_L_0_G_L_5_G_D_0_P_0" android:fillColor="#303030" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-398.64 472.61 C-413.82,472.61 -426.84,461.13 -428.44,445.7 C-430.15,429.22 -418.17,414.47 -401.69,412.77 C-191.38,390.98 3.04,292.33 145.75,135.01 C289.46,-23.4 368.6,-228.54 368.6,-442.61 C368.6,-459.17 382.04,-472.61 398.6,-472.61 C415.17,-472.61 428.6,-459.17 428.6,-442.61 C428.6,-213.6 343.93,5.85 190.19,175.33 C37.53,343.61 -170.48,449.13 -395.51,472.44 C-396.56,472.55 -397.6,472.61 -398.64,472.61c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_2_G" android:translateX="212.64499999999998" android:translateY="75.14200000000005" android:pivotX="171.613" android:pivotY="-855.642" android:rotation="28.7" android:scaleY="0">
-                        <path android:name="_R_G_L_0_G_L_2_G_D_0_P_0" android:fillColor="#ffffff" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M171.61 64.36 C171.61,64.36 171.61,64.36 171.61,64.36 C48.68,64.32 -70.7,40.42 -183.19,-6.68 C-198.47,-13.07 -205.68,-30.65 -199.28,-45.93 C-192.88,-61.22 -175.3,-68.42 -160.02,-62.02 C-54.9,-18.01 56.68,4.33 171.62,4.36 C188.19,4.36 201.62,17.8 201.61,34.36 C201.61,50.93 188.18,64.36 171.61,64.36c "/>
-                    </group>
-                    <group android:name="_R_G_L_0_G_L_0_G" android:translateX="384" android:translateY="75">
-                        <path android:name="_R_G_L_0_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-611 -259 C-611,-259 -611,259 -611,259 C-611,259 611,259 611,259 C611,259 611,-259 611,-259 C611,-259 -611,-259 -611,-259c  M354.66 -6.52 C242.36,40.4 121.76,64.54 -0.04,64.5 C-121.84,64.46 -242.44,40.23 -354.74,-6.76 C-370.04,-13.16 -377.24,-30.73 -370.84,-46.02 C-364.44,-61.3 -346.94,-68.51 -331.64,-62.12 C-226.54,-18.18 -113.84,4.46 -0.04,4.5 C113.76,4.54 226.56,-18.02 331.56,-61.89 C346.86,-68.27 364.46,-61.05 370.86,-45.76 C377.26,-30.47 369.96,-12.9 354.66,-6.52c "/>
-                    </group>
-                </group>
-            </group>
-            <group android:name="time_group"/>
-        </vector>
-    </aapt:attr>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_6_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="333" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_5_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="rotation" android:duration="983" android:startOffset="0" android:valueFrom="28.7" android:valueTo="-51.4" android:valueType="floatType">
-                    <aapt:attr name="android:interpolator">
-                        <pathInterpolator android:pathData="M 0.0,0.0 c0.402,0.136 0.202,0.847 1.0,1.0"/>
-                    </aapt:attr>
-                </objectAnimator>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="_R_G_L_0_G_L_2_G">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="scaleY" android:duration="0" android:startOffset="133" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-    <target android:name="time_group">
-        <aapt:attr name="android:animation">
-            <set android:ordering="together">
-                <objectAnimator android:repeatCount="infinite" android:propertyName="translateX" android:duration="1000" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>
-            </set>
-        </aapt:attr>
-    </target>
-</animated-vector>
diff --git a/core/res/res/drawable/progress_ring_watch.xml b/core/res/res/drawable/progress_ring_watch.xml
index 8250ee6..2e65ff1 100644
--- a/core/res/res/drawable/progress_ring_watch.xml
+++ b/core/res/res/drawable/progress_ring_watch.xml
@@ -16,27 +16,27 @@
   -->
 
 <rotate xmlns:android="http://schemas.android.com/apk/res/android"
-        android:fromDegrees = "270"
-        android:toDegrees="270"
-        android:pivotX="50%"
-        android:pivotY="50%" >
+        android:fromDegrees="270"
+        android:toDegrees="270">
     <layer-list>
         <item>
             <shape
-                android:shape="ring"
-                android:innerRadiusRatio="@dimen/progressbar_inner_radius_ratio"
+                android:shape="arc"
+                android:useLevel="false"
                 android:thickness="@dimen/progressbar_thickness"
-                android:useLevel="false">
-                <solid android:color="@color/materialColorSurfaceContainer"/>
+                android:innerRadiusRatio="@dimen/progressbar_inner_radius_ratio"
+                android:strokeCap="round">
+                <solid android:color="@*android:color/materialColorSurfaceContainer"/>
             </shape>
         </item>
         <item>
             <shape
-                android:shape="ring"
-                android:innerRadiusRatio="@dimen/progressbar_inner_radius_ratio"
+                android:shape="arc"
+                android:useLevel="true"
                 android:thickness="@dimen/progressbar_thickness"
-                android:useLevel="true">
-                <solid android:color="@color/materialColorPrimary"/>
+                android:innerRadiusRatio="@dimen/progressbar_inner_radius_ratio"
+                android:strokeCap="round">
+                <solid android:color="@*android:color/materialColorPrimary"/>
             </shape>
         </item>
     </layer-list>
diff --git a/core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml b/core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml
index 149a5a9..2df1725 100644
--- a/core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml
+++ b/core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml
@@ -45,6 +45,7 @@
         android:maxDrawableWidth="@dimen/notification_icon_circle_size"
         android:maxDrawableHeight="@dimen/notification_icon_circle_size"
         android:scaleType="centerCrop"
+        android:visibility="gone"
         android:importantForAccessibility="no"
         />
     <ViewStub
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 5da0924..788d5f7 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"toegang te verkry tot sensordata oor jou lewenstekens"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Kennisgewings"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"wys kennisgewings"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Venster-inhoud ophaal"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Die inhoud ondersoek van \'n venster waarmee jy interaksie het."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Verken-met-raak aanskakel"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Laat die app toe om jou fotoversameling te wysig."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lees liggings in jou mediaversameling"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Laat die app toe om liggings in jou mediaversameling te lees."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Gebruik biometrie"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gebruik biometrie of skermslot"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifieer dat dit jy is"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-paneel middel"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Outoklik-tipe instellingspaneel"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Linksklik"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Regsklik"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dubbelklik"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Sleep"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Rollees"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Onderbreek"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posisie"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in die BEPERK-groep geplaas"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index c55f1c6..ca145e5 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ስለአስፈላጊ ምልክቶችዎ ያሉ የዳሳሽ ውሂብ ይድረሱ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ማሳወቂያዎች"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ማሳወቂያዎች አሳይ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"የመስኮት ይዘት ሰርስረው ያውጡ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"መስተጋበር የሚፈጥሩት የመስኮት ይዘት ይመርምሩ።"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"በመንካት ያስሱን ያብሩ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"አካባቢዎችን ከሚዲያ ስብስብዎ ማንበብ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"መተግበሪያው አካባቢዎችን ከሚዲያ ስብስብዎ እንዲያነብብ ያስችለዋል።"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ባዮሜትሪኮችን ይጠቀሙ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ባዮሜትሪክስ ወይም ማያ ገፅ መቆለፊያን ይጠቀሙ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"እርስዎን መሆንዎን ያረጋግጡ"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"የDpad ማዕከል"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"የራስ-ሰር ጠቅ ማድረግ ትየባ ቅንብሮች ፓነል"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"የግራ ጠቅታ"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"የቀኝ ጠቅታ"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"ድርብ ጠቅ አድርግ"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"ጎትት"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"ሸብልል"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ባለበት አቁም"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"አቀማመጥ"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ወደ የRESTRICTED ባልዲ ተከትቷል"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index f542d439b..24d628a 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -357,6 +357,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"الوصول إلى بيانات المستشعر حول علاماتك الحيوية"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"الإشعارات"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"عرض الإشعارات"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"استرداد محتوى النافذة:"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"فحص محتوى نافذة يتم التفاعل معها."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"تفعيل الاستكشاف باللمس:"</string>
@@ -652,6 +660,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"للسماح للتطبيق بتعديل مجموعة صورك."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"قراءة المواقع من مجموعة الوسائط التابعة لك"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"استخدام المقاييس الحيوية"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"استخدام المقاييس الحيوية أو قفل الشاشة"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"تأكيد هويتك"</string>
@@ -1157,7 +1197,7 @@
     <string name="year" msgid="5182610307741238982">"سنة"</string>
     <string name="years" msgid="5797714729103773425">"أعوام"</string>
     <string name="now_string_shortest" msgid="3684914126941650330">"الآن"</string>
-    <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g> دقيقة"</string>
+    <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g> د"</string>
     <string name="duration_hours_shortest" msgid="1477752094141971675">"<xliff:g id="COUNT">%d</xliff:g> ساعة"</string>
     <string name="duration_days_shortest" msgid="4083124701676227233">"<xliff:g id="COUNT">%d</xliff:g> يوم"</string>
     <string name="duration_years_shortest" msgid="483982719231145618">"<xliff:g id="COUNT">%d</xliff:g> سنة"</string>
@@ -1973,7 +2013,7 @@
     <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string>
     <string name="toolbar_collapse_description" msgid="8009920446193610996">"تصغير"</string>
     <string name="zen_mode_feature_name" msgid="3785547207263754500">"عدم الإزعاج"</string>
-    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"التعطل"</string>
+    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"فترة التوقّف"</string>
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"ليلة يوم من أيام الأسبوع"</string>
     <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"نهاية الأسبوع"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"حدث"</string>
@@ -2251,14 +2291,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"الزرّ المركزي"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"لوحة إعدادات نوع النقر التلقائي"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"النقر بالزر الأيسر"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"النقر بزر الماوس الأيمن"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"النقر مرّتين"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"سحب"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"الانتقال للأسفل أو للأعلى"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"إيقاف مؤقت"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"تعديل الموضع"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"تم وضع <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> في الحزمة \"محظورة\"."</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index b8afd2e..397afe2 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিব পাৰে"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"জাননী"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"জাননী দেখুৱাওক"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ৱিণ্ড’ সমল বিচাৰি উলিওৱাৰ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"আপুনি চাই থকা ৱিণ্ড’খনৰ সমল পৰীক্ষা কৰাৰ।"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"স্পৰ্শৰ দ্বাৰা অন্বেষণ কৰাৰ সুবিধা অন কৰাৰ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"এপক আপোনাৰ ফট’ সংগ্ৰহ সালসলনি কৰিবলৈ দিয়ে।"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"আপোনাৰ মিডিয়া সংগ্ৰহৰ অৱস্থান পঢ়িবলৈ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"এপক আপোনাৰ মিডিয়া সংগ্ৰহৰ অৱস্থান পঢ়িবলৈ দিয়ে।"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"বায়\'মেট্ৰিক ব্যৱহাৰ কৰক"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"বায়\'মেট্ৰিক অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"এইয়া আপুনিয়েই বুলি সত্যাপন কৰক"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"ডিপেডৰ মাজৰ বুটাম"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"প্ৰকাৰৰ ছেটিঙৰ পেনেলত স্বয়ংক্ৰিয়ভাৱে ক্লিক কৰক"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"বাওঁফালৰ ক্লিক"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"সোঁফালৰ ক্লিক"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"দুবাৰ ক্লিক"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"টানি আনি এৰক"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"স্ক্ৰ’ল কৰক"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"পজ কৰক"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"স্থান"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ক সীমাবদ্ধ বাকেটটোত ৰখা হৈছে"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index affa569..96c77e4 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"Həyati əlamətlər haqqında sensor dataya daxil olun"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirişlər"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirişləri göstərmək"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pəncərənin məzmununu əldə edin"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Toxunuşla öyrənmə funksiyasını aktiv edin"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tətbiqin foto kolleksiyanıza düzəliş etməsinə icazə verir."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"media kolleksiyanızdan məkanları oxuyun"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Tətbiqin media kolleksiyanızdan məkanları oxumasına icazə verin."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrik məlumatlardan istifadə edin"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrik məlumatlardan və ya ekran kilidindən istifadə edin"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Kimliyinizi doğrulayın"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Mərkəzə"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Avtomatik klikləmə növü üzrə ayarlar paneli"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Sola klik"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Sağ düymə ilə toxunun"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"İki dəfə toxunun"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Çəkin"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Sürüşdürün"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Durdurun"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Mövqe"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> MƏHDUDLAŞDIRILMIŞ səbətinə yerləşdirilib"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 3acc8df..6a68f8d 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupa podacima senzora o vitalnim funkcijama"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Obaveštenja"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikazivanje obaveštenja"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"da preuzima sadržaj prozora"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"da uključi Istraživanja dodirom"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Dozvoljava aplikaciji da menja kolekciju slika."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz medijske kolekcije"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Dozvoljava aplikaciji da čita lokacije iz medijske kolekcije."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Koristite biometriju"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Koristite biometriju ili otključavanje ekrana"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite identitet"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 7c827bb..69271ba 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"атрымліваць з датчыка даныя асноўных фізіялагічных паказчыкаў"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Апавяшчэнні"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"паказваць апавяшчэнні"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Атрымліваць змесціва вакна"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Аналізаваць змесціва актыўнага вакна."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Уключаць Азнаямленне дотыкам"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Праграма зможа змяняць фотакалекцыю."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"паказваць месцазнаходжанне ў калекцыі мультымедыя"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Праграма зможа паказваць месцазнаходжанне ў калекцыі мультымедыя."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Выкарыстоўваць біяметрыю"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Выкарыстоўваць біяметрыю ці блакіроўку экрана"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Спраўдзіце, што гэта вы"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index c3a2712..1581ab8 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"достъп до сензорните данни за жизнените ви показатели"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Известия"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"показване на известията"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Извлича съдържанието от прозореца"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Инспектира съдържанието на прозорец, с който взаимодействате."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Включи изследването чрез докосване"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Разрешава на приложението да променя колекцията ви от снимки."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"да чете местоположенията от мултимедийната ви колекция"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Разрешава на приложението да чете местоположенията от мултимедийната ви колекция."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Използване на биометр. данни"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Използване на биометрични данни или опцията за заключване на екрана"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Потвърдете, че сте вие"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Поставена е нова SIM карта"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Докоснете, за да я настроите"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Часовата ви зона се промени"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Вече сте в зоната <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Вече сте във: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Задаване на часа"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Задаване на дата"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Задаване"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Контролен пад – център"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Панел с настройки за типа на автоматичното кликване"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Кликване с ляв бутон"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Кликване с десния бутон"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Кликване два пъти"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Преместване с плъзгане"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Превъртане"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Пауза"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Позиция"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакетът <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е поставен в ОГРАНИЧЕНИЯ контейнер"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index f6492c5..c05ea6d 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"আপনার অত্যাবশ্যক লক্ষণগুলির সম্পর্কে সেন্সর ডেটা অ্যাক্সেস করে"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"বিজ্ঞপ্তি"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"বিজ্ঞপ্তি দেখুন"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"উইন্ডোর কন্টেন্ট ফিরিয়ে আনুন"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ব্যবহার করছেন এমন একটি উইন্ডোর কন্টেন্ট পরীক্ষা করে৷"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"স্পর্শের মাধ্যমে অন্বেষণ করা চালু করুন"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"অ্যাপকে আপনার ফটো সংগ্রহ পরিবর্তন করার অনুমতি দিন।"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ডিয়া সংগ্রহ থেকে লোকেশন দেখতে দিন"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"আপনার মিডিয়া সংগ্রহ থেকে লোকেশন দেখতে অ্যাপকে অনুমতি দিন।"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"বায়োমেট্রিক্স ব্যবহার করুন"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"বায়োমেট্রিক্স অথবা স্ক্রিন লক ব্যবহার করুন"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"আপনার পরিচয় যাচাই করুন"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"ডিপ্যাড (Dpad)-এর মাঝখানে"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"অটোক্লিক টাইপ সেটিংস প্যানেল"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"বাঁদিকের বোতামে ক্লিক করুন"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"মাউসের ডানদিকের বোতামে ক্লিক করুন"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"ডবল ক্লিক করুন"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"টেনে আনুন"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"স্ক্রল করুন"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"পজ করুন"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"পজিশন"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> সীমাবদ্ধ গ্রুপে অন্তর্ভুক্ত করা হয়েছে"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 3ff85ac..ebef234 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupa podacima senzora o vašim vitalnim funkcijama"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Obavještenja"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikaz obavještenja"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"preuzimati sadržaj prozora"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Pregleda sadržaj prozora koji trenutno koristite."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"uključiti Istraživanje dodirom"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Omogućava aplikaciji da mijenja vašu kolekciju fotografija."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz kolekcije medija"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Omogućava aplikaciji da čita lokacije iz vaše kolekcije medija."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Koristi biometriju"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Koristi biometriju ili zaključavanje ekrana"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite identitet"</string>
@@ -2250,8 +2290,8 @@
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Lijevi klik"</string>
     <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Desni klik"</string>
     <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dvostruki klik"</string>
-    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Povuci"</string>
-    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Pomakni se"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Prevlačenje"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Klizanje"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauziraj"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Položaj"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je stavljen u odjeljak OGRANIČENO"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 9b61887..6ddfeaf 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"accedir a les dades del sensor sobre les constants vitals"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificacions"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostra notificacions"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar el contingut de la finestra"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeccionar el contingut d\'una finestra amb què estàs interaccionant."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar Exploració tàctil"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permet que l\'aplicació modifiqui la teva col·lecció de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"llegir les ubicacions de les teves col·leccions multimèdia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permet que l\'aplicació llegeixi les ubicacions de les teves col·leccions multimèdia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Utilitza la biometria"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Fes servir la biometria o el bloqueig de pantalla"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica la teva identitat"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Creu direccional: centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Tauler de configuració del tipus de clic automàtic"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic esquerre"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Fes clic amb el botó dret"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Fes doble clic"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Arrossega"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Desplaça"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Posa en pausa"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posició"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> s\'ha transferit al segment RESTRINGIT"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 9c8cc9a..5e596fc 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"přístup k datům ze senzorů vašich životních funkcí"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Oznámení"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"zobrazovat oznámení"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Načítat obsah oken"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Může prozkoumávat obsah oken, se kterými pracujete."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Zapnout funkci Prozkoumání dotykem"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Umožňuje aplikaci upravit vaši sbírku fotek."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"čtení míst ze sbírky médií"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Umožňuje aplikaci číst místa z vaší sbírky médií."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Použít biometrii"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Použít biometrii nebo zámek obrazovky"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrďte, že jste to vy"</string>
@@ -2090,12 +2130,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"Odepnout"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"Odepnout: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="app_info" msgid="6113278084877079851">"O aplikaci"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"Přímé sdílení cílů"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"Návrhy aplikací"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"Seznam aplikací"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"Spouštění ukázky…"</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"Resetování zařízení…"</string>
@@ -2252,14 +2289,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad střed"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel nastavení typu automatického kliknutí"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Kliknutí levým"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Kliknutí pravým tlačítkem"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dvojité kliknutí"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Přetažení"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Posunutí"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pozastavit"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozice"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balíček <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> byl vložen do sekce OMEZENO"</string>
@@ -2536,12 +2569,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapy"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikace"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaše otisky prstů se nedaří rozpoznat. Nastavte odemknutí otiskem prstu znovu."</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"Zařízení USB bylo připojeno, když bylo zařízení zamknuté"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"Zařízení USB bylo připojeno, když byl Android zamknutý. Pokud zařízení chcete používat, nejdříve Android odemkněte a pak zařízení USB připojte znovu."</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"Podezřelá aktivita USB"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"Datový signál USB byl deaktivován."</string>
 </resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 1b96dbb..8cc1cfe 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få adgang til sensordata om dine vitale værdier"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifikationer"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"vise notifikationer"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Hente indholdet i vinduet"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Undersøge indholdet i et vindue, du interagerer med."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivere Udforsk ved berøring"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tillader, at appen kan ændre din billedsamling."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"læse lokationer fra din mediesamling"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillader, at appen kan læse lokationer fra din mediesamling."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Brug biometri"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Brug biometri eller skærmlås"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verificer, at det er dig"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad, midten"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel med indstillinger for type af automatisk klik"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Venstreklik"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Højreklik"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dobbeltklik"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Træk"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Rul"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Sæt på pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Placering"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blevet placeret i samlingen BEGRÆNSET"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 73e7b9a..7d5672b 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"auf Sensordaten zu deinen Vitaldaten zugreifen"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Benachrichti­gun­gen"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"Benachrichtigungen anzeigen"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Fensterinhalte abrufen"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Tippen &amp; Entdecken\" aktivieren"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ermöglicht der App, deine Fotosammlung zu ändern."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"Standorte aus meiner Mediensammlung abrufen"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Ermöglicht der App, Standorte aus deiner Mediensammlung abzurufen."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrisches Verfahren nutzen"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrisches Verfahren oder Displaysperre verwenden"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Deine Identität bestätigen"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Neue SIM-Karte eingelegt"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Zum Einrichten tippen"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Die Zeitzone hat sich geändert"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Du bist jetzt in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Du bist jetzt in: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Uhrzeit festlegen"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum festlegen"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Speichern"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Steuerkreuz Mitte"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Bereich mit Einstellungen für automatische Klicks"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Linksklick"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Rechtsklicken"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Doppelklicken"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Ziehen"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scrollen"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausieren"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> wurde in den BESCHRÄNKT-Bucket gelegt"</string>
@@ -2430,8 +2466,8 @@
     <string name="default_card_name" msgid="9198284935962911468">"KARTE <xliff:g id="CARDNUMBER">%d</xliff:g>"</string>
     <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Berechtigung für Companion-Smartwatch-Profil zum Verwalten von Smartwatches"</string>
     <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Ermöglicht einer Companion-App, Smartwatches zu verwalten."</string>
-    <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Präsenz von Companion-Geräten beobachten"</string>
-    <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Ermöglicht einer Companion-App, die Präsenz von Companion-Geräten zu beobachten, wenn sie in der Nähe oder weit entfernt sind."</string>
+    <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Präsenz von Begleitgeräten beobachten"</string>
+    <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Ermöglicht einer Companion-App, die Präsenz von Begleitgeräten zu beobachten, wenn sie in der Nähe oder weit entfernt sind."</string>
     <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Companion-Nachrichten senden"</string>
     <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Ermöglicht einer Companion-App, Companion-Nachrichten an andere Geräte zu senden."</string>
     <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Dienste im Vordergrund aus dem Hintergrund starten"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 25a787c..84ca5b7 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Ειδοποιήσεις"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"εμφάνιση ειδοποιήσεων"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Ανάκτηση του περιεχομένου του παραθύρου"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Επιτρέπει στην εφαρμογή να τροποποιήσει τη συλλογή φωτογραφιών σας."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ανάγνωση τοποθεσιών από τη συλλογή πολυμέσων σας"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Επιτρέπει στην εφαρμογή να διαβάσει τοποθεσίες από τη συλλογή πολυμέσων σας."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Χρήση βιομετρικών"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Χρήση βιομετρικών ή κλειδώματος οθόνης"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Επαλήθευση ταυτότητας"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad κέντρο"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Πλαίσιο ρυθμίσεων τύπου αυτόματου κλικ"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Αριστερό κλικ"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Δεξί κλικ"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Διπλό κλικ"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Μεταφορά"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Κύλιση"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Παύση"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Θέση"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Το πακέτο <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> τοποθετήθηκε στον κάδο ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 886beff..ef7238c 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Autoclick type settings panel"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Left-click"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Right-click"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Double-click"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Drag"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scroll"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 33bbc6f..7e83739 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify it’s you"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index f0a9c2a..5b99b57 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window that you\'re interacting with."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Autoclick type settings panel"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Left-click"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Right-click"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Double-click"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Drag"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scroll"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 8fcb412..5ba765b 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"access sensor data about your vital signs"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"show notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Retrieve window content"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspect the content of a window you\'re interacting with."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Turn on Explore by Touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Allows the app to modify your photo collection."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"read locations from your media collection"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Allows the app to read locations from your media collection."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Use biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Use biometrics or screen lock"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verify that it’s you"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Autoclick type settings panel"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Left-click"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Right-click"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Double-click"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Drag"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scroll"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index f46a4d4..d3258dd 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder a los datos de sensores acerca de tus signos vitales"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificaciones"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificaciones"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar el contenido de las ventanas"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeccionará el contenido de la ventana con la que estés interactuando."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar la Exploración táctil"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que la app modifique tu colección de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"leer ubicaciones de tu colección de contenido multimedia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que la app lea las ubicaciones de tu colección de contenido multimedia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar datos biométricos"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar datos biométricos o bloqueo de pantalla"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Comprueba que eres tú"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pad direccional: centro"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel de configuración del tipo de clic automático"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic izquierdo"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Clic con botón derecho"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Hacer doble clic"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Arrastrar"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Desplazamiento"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausar"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posición"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Se colocó <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> en el bucket RESTRICTED"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index d594897..c021a8a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder a datos de sensores de tus constantes vitales"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificaciones"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificaciones"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Comprobar el contenido de la ventana"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecciona el contenido de una ventana con la que estés interactuando."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar la exploración táctil"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que la aplicación modifique tu colección de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"leer las ubicaciones de tu colección de contenido multimedia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que la aplicación lea las ubicaciones de tu colección de contenido multimedia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometría"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometría o bloqueo de pantalla"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica que eres tú"</string>
@@ -1410,7 +1450,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nueva SIM insertada"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toca para configurar"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Tu zona horaria ha cambiado"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ahora estás en <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ahora estás en la <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Establecer hora"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Establecer fecha"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Establecer"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Cruceta: centro"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel de ajustes del tipo de clic automático"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic izquierdo"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Hacer clic con el botón derecho"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Hacer doble clic"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Arrastrar"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Desplazarse"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausar"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posición"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> se ha incluido en el grupo de restringidos"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 5e961f4..ae21583 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"juurdepääs anduri andmetele teie eluliste näitajate kohta"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Märguanded"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"märguannete kuvamine"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Akna sisu toomine"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kasutatava akna sisu kontrollimine."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Puudutusega sirvimise sisselülitamine"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Võimaldab rakendusel muuta teie fotokogu."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"Lugeda teie meediakogus olevaid asukohti"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Võimaldab rakendusel lugeda teie meediakogus olevaid asukohti."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biomeetria kasutamine"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biomeetria või ekraaniluku kasutamine"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Kinnitage oma isik"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 0e450d1..a78754f 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"atzitu bizi-konstanteei buruzko sentsorearen datuak"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Jakinarazpenak"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"jakinarazpenak erakutsi"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Leihoko edukia eskuratu."</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Arakatu irekita daukazun leihoko edukia."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Arakatu ukituta\" aktibatu."</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Argazki bilduma aldatzeko baimena ematen dio aplikazioari."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"multimedia-edukien bildumako kokapena irakurri"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Multimedia-edukien bildumako kokapena irakurtzeko baimena ematen dio aplikazioari."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Erabili sistema biometrikoak"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Erabili sistema biometrikoak edo pantailaren blokeoa"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Egiaztatu zeu zarela"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Norabide-kontrolagailuko erdiko botoia"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Automatikoki klik egiteko eginbide motaren ezarpenen panela"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Egin klik ezkerreko botoiarekin"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Egin klik eskuineko botoiarekin"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Egin klik bikoitza"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Arrastatu"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Egin gora eta behera"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausatu"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Ezarri posizioan"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Murriztuen edukiontzian ezarri da <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 4334713..ddde0b2 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"دسترسی به داده‌های حسگر در رابطه با علائم حیاتی شما"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"اعلان‌ها"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"نمایش اعلان"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"محتوای پنجره را بازیابی کند"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"محتوای پنجره‌ای را که درحال تعامل با آن هستید بررسی می‌کند."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"فعال‌سازی کاوش لمسی"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"به برنامه اجازه می‌دهد مجموعه عکستان را تغییر دهد."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"خواندن مکان‌ها از مجموعه رسانه شما"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"به برنامه اجازه می‌دهد مکان‌ها را از مجموعه رسانه‌تان بخواند."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"استفاده از داده‌های زیست‌سنجشی"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"استفاده از داده‌های زیست‌سنجشی یا قفل صفحه"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"تأیید کنید این شمایید"</string>
@@ -2514,7 +2554,7 @@
     <string name="biometric_dangling_notification_action_set_up" msgid="8246885009807817961">"راه‌اندازی"</string>
     <string name="biometric_dangling_notification_action_not_now" msgid="8095249216864443491">"حالا نه"</string>
     <string name="bg_user_sound_notification_title_alarm" msgid="5251678483393143527">"زنگ هشدار برای <xliff:g id="USER_NAME">%s</xliff:g>"</string>
-    <string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"تغییر کاربر"</string>
+    <string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"تعویض کاربر"</string>
     <string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"بی‌صدا کردن"</string>
     <string name="bg_user_sound_notification_message" msgid="8613881975316976673">"برای بی‌صدا کردن، تک‌ضرب بزنید"</string>
     <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"مرورگر"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 5e3913e..b17ab23 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pääsy anturidataan elintoiminnoistasi"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Ilmoitukset"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"näyttää ilmoituksia"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Noutaa ikkunan sisältöä"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Tarkistaa käyttämäsi ikkunan sisältö."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ottaa kosketuksella tutkimisen käyttöön"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Antaa sovelluksen muokata kuvakokoelmaasi."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lukea mediakokoelmasi sijainteja"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Antaa sovelluksen lukea mediakokoelmasi sijainteja."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Käytä biometriikkaa"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Käytä biometriikkaa tai näytön lukitusta"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Vahvista henkilöllisyytesi"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Suuntanäppäimistö: keskipainike"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Automaattisen klikkaustyypin asetuspaneeli"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Ykköspainike"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Klikkaa kakkospainikkeella"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Kaksoisklikkaa"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Vedä"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Vieritä"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Keskeytä"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Sijainti"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on nyt rajoitettujen ryhmässä"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 6ef3e21..7145e57 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -74,7 +74,7 @@
     <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"Par défaut, les numéros des appelants ne sont pas restreints. Appel suivant : non restreint"</string>
     <string name="page_size_compat_apk_warning" msgid="2982396798449041224">"Cette appli n\'est pas compatible avec les pages de 16 ko. La vérification de l\'alignement de fichiers APK a échoué. Cette appli sera exécutée en mode compatible avec la taille de la page. Pour une meilleure compatibilité, veuillez recompiler l\'application avec la prise en charge de pages de 16 ko. Pour en savoir plus, consultez la page &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt;"</string>
     <string name="page_size_compat_elf_warning" msgid="6753874059564812651">"Cette appli n\'est pas compatible avec les pages de 16 ko. La vérification de l\'alignement de fichiers ELF a échoué. Cette appli sera exécutée en mode compatible avec la taille de la page. Pour une meilleure compatibilité, veuillez recompiler l\'application avec la prise en charge de pages de 16 ko. Pour en savoir plus, consultez la page &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt;"</string>
-    <string name="page_size_compat_apk_and_elf_warning" msgid="7628675779500605390">"Cette appli n\'est pas compatible avec les pages de 16 ko. Les vérifications d\'alignement de fichiers APK et ELF ont échoué. Cette appli sera exécutée en mode compatible avec la taille de la page. Pour une meilleure compatibilité, veuillez recompiler l\'application avec la prise en charge de pages de 16 ko. Pour en savoir plus, consultez la page &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt;"</string>
+    <string name="page_size_compat_apk_and_elf_warning" msgid="7628675779500605390">"Cette appli n\'est pas compatible avec les pages de 16 ko. Les vérifications de l\'alignement de fichiers APK et ELF ont échoué. Cette appli sera exécutée dans un mode compatible avec la taille de la page. Pour une compatibilité optimale, veuillez recompiler l\'application afin de prendre en charge les pages de 16 ko. Pour en savoir plus, consultez la page &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt;"</string>
     <string name="serviceNotProvisioned" msgid="8289333510236766193">"Ce service n\'est pas pris en charge."</string>
     <string name="CLIRPermanent" msgid="166443681876381118">"Impossible de modifier le paramètre relatif au numéro de l\'appelant."</string>
     <string name="auto_data_switch_title" msgid="3286350716870518297">"Données changées à <xliff:g id="CARRIERDISPLAY">%s</xliff:g>"</string>
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"accéder aux données des capteurs sur vos signes vitaux"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"afficher les notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Récupérer le contenu d\'une fenêtre"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Autorise l\'appli à modifier votre collection de photos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lire les positions issues de votre collection multimédia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Autorise l\'appli à lire les positions indiquées dans votre collection multimédia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Utiliser les données biométriques"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utiliser les données biométriques ou le verrouillage de l\'écran"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmez que c\'est vous"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pavé directionnel – centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panneau de configuration des paramètres de type clic automatique"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic gauche"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Clic droit"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Double-cliquer"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Glisser"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Faire défiler"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le compartiment RESTREINT"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 4fd8601..a71348a 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"accéder aux données des capteurs relatives à vos signes vitaux"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifications"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"afficher des notifications"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Récupérer le contenu d\'une fenêtre"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecte le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activer la fonctionnalité Explorer au toucher"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Autorise l\'application à modifier votre bibliothèque photo."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"consulter des positions issues de votre bibliothèque multimédia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Autorise l\'application à consulter des positions issues de votre bibliothèque multimédia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Utiliser la biométrie"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utiliser la biométrie ou le verrouillage de l\'écran"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmez votre identité"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pavé directionnel - Centre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panneau des paramètres du type de clic automatique"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic gauche"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Clic droit"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Double-cliquer"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Faire glisser"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Faire défiler"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le bucket RESTRICTED"</string>
@@ -2486,7 +2522,7 @@
     <string name="satellite_manual_selection_state_popup_cancel" msgid="973605633339469252">"Retour"</string>
     <string name="unarchival_session_app_label" msgid="6811856981546348205">"En attente…"</string>
     <string name="satellite_sos_available_notification_title" msgid="5396708154268096124">"SOS par satellite est maintenant disponible"</string>
-    <string name="satellite_sos_available_notification_summary" msgid="1727088812951848330">"Vous pouvez envoyer des messages aux services d\'urgence s\'il n\'y a pas de réseau mobile ou Wi-Fi. Google Messages doit être votre application de chat par défaut."</string>
+    <string name="satellite_sos_available_notification_summary" msgid="1727088812951848330">"Vous pouvez envoyer des messages aux services d\'urgence s\'il n\'y a pas de réseau mobile ou Wi-Fi. Google Messages doit être votre application de messagerie par défaut."</string>
     <string name="satellite_sos_not_supported_notification_title" msgid="2659100983227637285">"SOS par satellite n\'est pas disponible"</string>
     <string name="satellite_sos_not_supported_notification_summary" msgid="1071762454665310549">"SOS par satellite n\'est pas disponible sur cet appareil"</string>
     <string name="satellite_sos_not_provisioned_notification_title" msgid="8564738683795406715">"SOS par satellite n\'est pas configuré"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 4ce3fc3..e8090b8 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acceder aos datos dos sensores sobre as túas constantes vitais"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificacións"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificacións"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperar contido da ventá"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Activar a exploración táctil"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que a aplicación modifique a túa colección de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ler localizacións da túa colección multimedia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que a aplicación lea as localizacións da túa colección multimedia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Utilizar desbloqueo biométrico"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Utilizar desbloqueo biométrico ou credencial do dispositivo"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica a túa identidade"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Cruceta: centro"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel de configuración do tipo de clic automático"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic co botón esquerdo do rato"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Facer clic co botón dereito"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Facer dobre clic"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Arrastrar"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Desprazar"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausa"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posición"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> incluíuse no grupo RESTRINXIDO"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index fcba3fe..3ddc9da 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"તમારા મહત્વપૂર્ણ ચિહ્નો વિશે સેન્સર ડેટા ઍક્સેસ કરો"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"નોટિફિકેશન"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"નોટિફિકેશન બતાવો"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"વિંડો કન્ટેન્ટ પુનઃપ્રાપ્ત કરો"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"તમે જેની સાથે ક્રિયા-પ્રતિક્રિયા કરી રહ્યાં છો તે વિંડોનું કન્ટેન્ટ તપાસો."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"સ્પર્શ કરીને શોધખોળ કરવું ચાલુ કરો"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"એપને તમારો ફોટો સંગ્રહ સંશોધિત કરવાની મંજૂરી આપે છે."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"આપના મીડિયા સંગ્રહમાંથી સ્થાનો વાંચવા"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"એપને તમારા મીડિયા સંગ્રહમાંથી સ્થાનો વાંચવાની મંજૂરી આપે છે."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"બાયોમેટ્રિક્સનો ઉપયોગ કરો"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"બાયોમેટ્રિક્સ અથવા સ્ક્રીન લૉકનો ઉપયોગ કરો"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"આ તમે જ છો તેની ચકાસણી કરો"</string>
@@ -1408,7 +1448,7 @@
     <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ઍપ ડાઉનલોડ કરો"</string>
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"નવું સિમ દાખલ કર્યું"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"તેને સેટ કરવા માટે ટૅપ કરો"</string>
-    <string name="time_zone_change_notification_title" msgid="5232503069219193218">"તમારો સમય ઝોન બદલાયો છે"</string>
+    <string name="time_zone_change_notification_title" msgid="5232503069219193218">"તમારો ટાઇમ ઝોન બદલાયો છે"</string>
     <string name="time_zone_change_notification_body" msgid="6135793674904665585">"તમે <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)માં છો"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"સમય સેટ કરો"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"તારીખ સેટ કરો"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 66f0ced..a587509 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"अपने महत्वपूर्ण संकेतों के बारे में सेंसर डेटा को ऐक्सेस करें"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"सूचनाएं"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचनाएं दिखाएं"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विंडो का कॉन्टेंट वापस पाएं"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"विंडो पर नज़र आ रहे कॉन्टेंट की जांच करें."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"छूकर, किसी चीज़ से जुड़ी जानकारी सुनने की सुविधा चालू करें"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"इससे ऐप्लिकेशन को आपके फ़ोटो संग्रह में बदलाव करने की मंज़ूरी दी जाती है."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"अपने मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दें"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"इससे ऐप्लिकेशन को आपके मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दी जाती है."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक्स इस्तेमाल करें"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक्स या स्क्रीन लॉक का क्रेडेंशियल इस्तेमाल करें"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"अपनी पहचान की पुष्टि करें"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index aadf118..cfea6ab 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupiti podacima senzora o vašim vitalnim znakovima"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Obavijesti"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikazati obavijesti"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Dohvaćati sadržaj prozora"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Pregledat će sadržaj prozora koji upotrebljavate."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Uključiti značajku Istraži dodirom"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Omogućuje aplikaciji izmjenu vaše zbirke fotografija."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz vaše medijske zbirke"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Omogućuje aplikaciji čitanje lokacija iz vaše medijske zbirke."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Upotreba biometrije"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Upotreba biometrijske autentifikacije ili zaključavanja zaslona"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite da ste to vi"</string>
@@ -1410,7 +1450,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Umetnuta je nova SIM kartica"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite da biste je postavili"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vaša je vremenska zona promijenjena"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sada ste u vremenskoj zoni <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Trenutačna vremenska zona: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Postavite vrijeme"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Postavi datum"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Postavi"</string>
@@ -2246,7 +2286,7 @@
     <string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Lijevo na plohi za smjerove"</string>
     <string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Desno na plohi za smjerove"</string>
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"U središtu plohe za smjerove"</string>
-    <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Ploča postavki vrste automatskog klika"</string>
+    <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Ploča postavki automatskih klikova"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Lijevi klik"</string>
     <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Desni klik"</string>
     <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dvostruki klik"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 39a4cfc..24389d6 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"az érzékelők által mért, életjelekkel kapcsolatos adatok elérése"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Értesítések"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"értesítések megjelenítése"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Ablaktartalom lekérdezése"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"A használt ablak tartalmának vizsgálata."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Felfedezés érintéssel bekapcsolása"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Engedélyezi az alkalmazásnak a fényképgyűjtemény módosítását."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"helyek olvasása a médiagyűjteményből"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Engedélyezi az alkalmazásnak a helyek médiagyűjteményből való olvasását."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometriai feloldás használata"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"A folytatás biometriai feloldással vagy képernyőzárral lehetséges"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Igazolja, hogy Ön az"</string>
@@ -1765,7 +1805,7 @@
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Képernyő megtekintése és kezelése"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Elolvashatja a képernyő tartalmát, és tartalmakat jeleníthet meg más alkalmazások felett."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Műveletek megtekintése és elvégzése"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Követheti az alkalmazásokkal és hardveres érzékelőkkel való interakcióit, és műveleteket végezhet az alkalmazásokkal az Ön nevében."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Követheti az appokkal és hardveres érzékelőkkel való interakcióit, és műveleteket végezhet az appokkal az Ön nevében."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Engedélyezés"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tiltás"</string>
     <string name="accessibility_dialog_button_uninstall" msgid="2952465517671708108">"Eltávolítás"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad – középre"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Automatikus kattintás típusának beállításai panel"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Kattintás bal egérgombbal"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Kattintás jobb egérgombbal"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Duplakattintás"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Húzás"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Görgetés"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Szüneteltetés"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozíció"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"A következő csomag a KORLÁTOZOTT csoportba került: <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index f4b83f2..1125dc9 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"օգտագործել սենսորների տվյալները ձեր օրգանիզմի վիճակի մասին"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Ծանուցումներ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ցուցադրել ծանուցումներ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Առբերել պատուհանի բովանդակությունը"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Վերլուծել գործող պատուհանի բովանդակությունը"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Միացնել Հպման միջոցով հետազոտումը"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Թույլ է տալիս հավելվածին փոփոխել ձեր լուսանկարների հավաքածուն:"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ճանաչել տեղադրության մասին տվյալները մեդիա բովանդակության հավաքածուից"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Թույլ է տալիս հավելվածին ճանաչել տեղադրության մասին տվյալները ձեր մեդիա բովանդակության հավաքածուից:"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Կենսաչափական համակարգեր"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Օգտագործել կենսաչափական համակարգեր կամ էկրանի կողպում"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Հաստատեք ձեր ինքնությունը"</string>
@@ -2088,12 +2128,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"Ապամրացնել"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"Ապամրացնել <xliff:g id="LABEL">%1$s</xliff:g> հավելվածը"</string>
     <string name="app_info" msgid="6113278084877079851">"Հավելվածի մասին"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"Direct Share-ի ստացողներ"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"Առաջարկվող հավելվածներ"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"Հավելվածների ցուցակ"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"Ցուցադրական օգտատերը գործարկվում է…"</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"Սարքը վերակայվում է…"</string>
@@ -2250,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad-ի «Կենտրոն» կոճակ"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Ավտոմատ սեղմման տեսակի կարգավորումների վահանակ"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Ձախ սեղմում"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Սեղմել մկնիկի աջ կոճակը"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Երկու անգամ սեղմել"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Քաշել"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Ոլորել"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Դադարեցնել"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Դիրքը"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> փաթեթը գցվեց ՍԱՀՄԱՆԱՓԱԿՎԱԾ զամբյուղի մեջ"</string>
@@ -2534,12 +2567,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Քարտեզներ"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Հավելվածներ"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ձեր մատնահետքերն այլևս չեն կարող ճանաչվել։ Նորից կարգավորեք մատնահետքով ապակողպումը։"</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"Ապակողպեք Android սարքը"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"Android սարքը կողպված է։ USB կրիչն օգտագործելու համար նախ ապակողպեք Android սարքը, այնուհետև նորից տեղադրեք կրիչը։"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"Հայտնաբերվել է կասկածելի USB կրիչ"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"USB-ով տվյալների փոխանցումն անջատված է։"</string>
 </resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index ce9a7f6..2cd5472 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"mengakses data sensor tentang tanda-tanda vital"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifikasi"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"tampilkan notifikasi"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Membaca konten di jendela"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Memeriksa konten di jendela yang sedang Anda buka."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Mengaktifkan Jelajahi dengan Sentuhan"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Mengizinkan aplikasi untuk memodifikasi koleksi foto Anda."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"membaca lokasi dari koleksi media Anda"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Mengizinkan aplikasi untuk membaca lokasi dari koleksi media Anda."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Gunakan biometrik"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gunakan biometrik atau kunci layar"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifikasi diri Anda"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Tengah"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel setelan jenis klik otomatis"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Klik kiri"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Klik kanan"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Klik dua kali"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Tarik"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scroll"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Jeda"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posisi"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah dimasukkan ke dalam bucket DIBATASI"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index b80efc7..a89a50f 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"aðgangur að skynjaragögnum um lífsmörk þín"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Tilkynningar"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"sýna tilkynningar"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Sækja innihald glugga"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kanna innihald glugga sem þú ert að nota."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Kveikja á snertikönnun"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Leyfir forritinu að breyta myndasafninu þínu."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lesa staðsetningar úr efnissafninu þínu"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Leyfir forritinu að lesa staðsetningar úr efnissafninu þínu."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Nota lífkenni"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Nota lífkenni eða skjálás"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Staðfestu hver þú ert"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nýtt SIM-kort sett í"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Ýttu til að setja það upp"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Tímabeltinu þínu var breytt"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Þú ert nú á <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Tímabeltið þitt er nú <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Veldu tíma"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Veldu dagsetningu"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Velja"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Miðjuhnappur stýriflatar"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Stillingasvæði fyrir tegund sjálfvirks smells"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Vinstrismellur"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Hægrismella"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Tvísmella"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Draga"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Fletta"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Hlé"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Staðsetning"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> var sett í flokkinn TAKMARKAÐ"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 3ca9f7f..47ef283 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"Possono accedere ai dati dei sensori relativi ai tuoi parametri vitali"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifiche"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"Visualizzazione di notifiche"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Recuperare contenuti della finestra"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Esamina i contenuti di una finestra con cui interagisci."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Attivare Esplora al tocco"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Consente all\'app di modificare la tua raccolta di foto."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lettura delle posizioni dalla tua raccolta multimediale"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Consente all\'app di leggere le posizioni dalla tua raccolta multimediale."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usa la biometria"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usa la biometria o il blocco schermo"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifica la tua identità"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index cfa0987..d58084d 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"גישה אל נתוני חיישנים של הסימנים החיוניים שלך"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"התראות"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"הצגת התראות"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"אחזור תוכן של חלון"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"בדיקת התוכן של חלון שאיתו מתבצעת אינטראקציה."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"הפעלה של \'גילוי באמצעות מגע\'"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"מאפשרת לאפליקציה לשנות את אוסף התמונות שלך."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"לקרוא מיקומים מאוסף המדיה שלך"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"מאפשרת לאפליקציה לקרוא מיקומים מאוסף המדיה שלך."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"שימוש במידע ביומטרי"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"שימוש במידע ביומטרי בנעילת מסך"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"אימות הזהות שלך"</string>
@@ -1433,7 +1473,7 @@
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"המכשיר זיהה התקן אודיו אנלוגי"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ההתקן שחיברת לא תואם לטלפון הזה. יש ללחוץ לקבלת מידע נוסף."</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"‏ניפוי באגים ב-USB מחובר"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"‏צריך ללחוץ כדי להשבית את ניפוי הבאגים ב-USB"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"‏לוחצים להשבתת ניפוי הבאגים ב-USB"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"‏יש ללחוץ על ההתראה כדי להשבית ניפוי באגים ב-USB."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ניפוי הבאגים האלחוטי מחובר"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"יש ללחוץ כדי להשבית ניפוי באגים אלחוטי"</string>
@@ -2089,12 +2129,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"ביטול הצמדה"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"ביטול ההצמדה של <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="app_info" msgid="6113278084877079851">"פרטי האפליקציה"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"יעדים לשיתוף ישיר"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"הצעות לאפליקציות"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"רשימת האפליקציות"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"תהליך ההדגמה מתחיל…"</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"מתבצע איפוס של המכשיר…"</string>
@@ -2251,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"‏לחצן אמצעי ב-Dpad"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"חלונית ההגדרות של סוג הקליק האוטומטי"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"לחיצה שמאלית"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"לחיצה ימנית"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"לחיצה כפולה"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"גרירה"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"גלילה"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"השהיה"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"מיקום"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> התווספה לקטגוריה \'מוגבל\'"</string>
@@ -2535,12 +2568,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"מפות"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"אפליקציות"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"טביעות האצבע שלך נשחקו ואי אפשר לזהות אותן. צריך להגדיר \'פתיחה בטביעת אצבע\' מחדש."</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"‏התקן ה-USB מחובר כשהמכשיר נעול"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"‏התקן ה-USB מחובר כשמערכת Android נעולה. כדי להשתמש בהתקן ה-USB, קודם צריך לבטל את הנעילה של Android ואז לחבר את ההתקן מחדש."</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"‏זוהתה פעילות חשודה בהתקן USB"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"‏האות עם הנתונים מהתקן ה-USB הושבת."</string>
 </resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index ad770aa..7e37dff 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"バイタルサインに関するセンサーデータへのアクセス"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"通知を表示"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ウィンドウコンテンツの取得"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"タッチガイドの有効化"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"写真コレクションの変更をアプリに許可します。"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"メディア コレクションの位置情報の読み取り"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"メディア コレクションの位置情報の読み取りをアプリに許可します。"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"生体認証の使用"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"生体認証または画面ロックの使用"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"本人確認"</string>
@@ -1432,7 +1472,7 @@
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"アナログのオーディオ アクセサリーを検出"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"接続したデバイスはこのスマートフォンと互換性がありません。タップすると、詳細を確認できます。"</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"USB デバッグが接続されました"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"無効にするにはここをタップしてください"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"無効にするにはタップしてください"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB デバッグを無効にする場合に選択します。"</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ワイヤレス デバッグが接続されました"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"無効にするにはここをタップしてください"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 481c422..5ecf5b7 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომა"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"შეტყობინებები"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"შეტყობინებების ჩვენება"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ფანჯრის კონტენტის მოძიება"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"იმ ფანჯრის კონტენტის შემოწმება, რომელშიც მუშაობთ."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"„შეხებით აღმოჩენის“ ჩართვა"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"აპი შეძლებს თქვენი ფოტოკოლექციის შეცვლას."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"მდებარეობების გაცნობა თქვენი მედიაკოლექციიდან"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"აპი შეძლებს მდებარეობების გაცნობას თქვენი მედიაკოლექციიდან."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"გამოიყენეთ ბიომეტრიული სისტემა"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"გამოიყენეთ ბიომეტრიული სისტემა ან ეკრანის დაბლოკვა"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"დაადასტურეთ ვინაობა"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 70412be..98addd0 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ағза күйінің көрсеткіштері туралы сенсор деректеріне қатынасу"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Хабарландырулар"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"хабарландыруларды көрсету"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезе контентін оқып отыру"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Ашық тұрған терезе контентін тексеру."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Түртілген элементтерді дыбыстау функциясын қосу"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Қолданбаға суреттер жинағын өзгертуге мүмкіндік береді."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"медиамазмұн жинағынан геодеректерді оқу"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Қолданбаға медиамазмұн жинағынан геодеректерді оқуға мүмкіндік береді."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометриканы пайдалану"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометриканы немесе экран құлпын пайдалану"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Cіз екеніңізді растаңыз"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Жаңа SIM салынды"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Оны орнату үшін түртіңіз"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Уақыт белдеуі өзгертілді"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Қазір <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) уақыт белдеуіндесіз."</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Қазір <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) белдеуіндесіз."</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Уақытты реттеу"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Мезгілін реттеу"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Орнату"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Ортаңғы Dpad түймесі"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Автоматты басу түрі параметрлері панелі"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Сол жағын басу"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Тінтуірдің оң жақ түймесін басу"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Екі рет басу"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Сүйреу"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Айналдыру"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Кідірту"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Орналастыру"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ШЕКТЕЛГЕН себетке салынды."</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index fdd522b..7d0f7785 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ចូលដំណើរការទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ការ​ជូនដំណឹង"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"បង្ហាញ​ការជូនដំណឹង"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ទាញយក​ខ្លឹមសារ​វិនដូ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ពិនិត្យ​ខ្លឹមសារវិនដូ​ដែល​អ្នក​កំពុង​ធ្វើអន្តរកម្ម​ជា​មួយ។"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"បើក​ការ​រក​មើល​​ដោយ​ប៉ះ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"អនុញ្ញាតឱ្យ​កម្មវិធី​កែប្រែ​បណ្ដុំ​រូបថត​របស់​អ្នក។"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"អាន​ទីតាំង​ពី​បណ្ដុំ​មេឌៀ​របស់​អ្នក"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"អនុញ្ញាតឱ្យ​កម្មវិធី​អាន​ទីតាំង​ពីបណ្ដុំ​មេឌៀ​របស់​អ្នក។"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ប្រើ​ជីវមាត្រ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ប្រើជីវមាត្រ ឬ​ការចាក់សោអេក្រង់"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ផ្ទៀងផ្ទាត់ថាជាអ្នក"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 887938c..e3caae5 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸಾರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ನೋಟಿಫಿಕೇಶನ್‌ಗಳು"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ನೀವು ಸಂವಹನ ನಡೆಸುತ್ತಿರುವ ವಿಂಡೋದ ಕಂಟೆಂಟ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಿ."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ಸ್ಪರ್ಶ-ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಆನ್ ಮಾಡುತ್ತದೆ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ನಿಮ್ಮ ಫೋಟೋ ಸಂಗ್ರಹಣೆಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ನಿಮ್ಮ ಮೀಡಿಯಾ ಸಂಗ್ರಹಣೆಯಿಂದ ಸ್ಥಳಗಳನ್ನು ಓದಿ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ನಿಮ್ಮ ಮೀಡಿಯಾ ಸಂಗ್ರಹಣೆಯಿಂದ ಸ್ಥಳಗಳನ್ನು ಓದಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಬಳಸಿ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ಇದು ನೀವೇ ಎಂದು ಪರಿಶೀಲಿಸಿ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index fc39271..ffbe631 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"생체 신호에 관한 센서 데이터에 액세스"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"알림"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"알림 표시"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"창 콘텐츠 가져오기"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"상호작용 중인 창의 콘텐츠를 검사합니다."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"터치하여 탐색 사용"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"앱에서 사진 컬렉션을 수정하도록 허용합니다."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"미디어 컬렉션에서 위치 읽기"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"앱에서 미디어 컬렉션의 위치를 읽도록 허용합니다."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"생체 인식 사용"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"생체 인식 또는 화면 잠금을 사용"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"본인 확인"</string>
@@ -1027,7 +1067,7 @@
     <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"중지"</string>
     <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"되감기"</string>
     <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"빨리 감기"</string>
-    <string name="emergency_calls_only" msgid="3057351206678279851">"긴급 통화만 허용"</string>
+    <string name="emergency_calls_only" msgid="3057351206678279851">"긴급 전화만 허용"</string>
     <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"네트워크 잠김"</string>
     <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM이 PUK 잠김 상태입니다."</string>
     <string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"사용자 가이드를 참조하거나 고객지원팀에 문의하세요."</string>
@@ -1572,7 +1612,7 @@
     <string name="vpn_lockdown_config" msgid="8331697329868252169">"네트워크 또는 VPN 설정 변경"</string>
     <string name="upload_file" msgid="8651942222301634271">"파일 선택"</string>
     <string name="no_file_chosen" msgid="4146295695162318057">"파일을 선택하지 않았습니다."</string>
-    <string name="reset" msgid="3865826612628171429">"초기화"</string>
+    <string name="reset" msgid="3865826612628171429">"재설정"</string>
     <string name="submit" msgid="862795280643405865">"제출"</string>
     <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"운전 앱 실행 중"</string>
     <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"운전 앱을 종료하려면 탭하세요."</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"방향 패드 가운데"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"자동 클릭 유형 설정 패널"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"왼쪽 클릭"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"오른쪽 클릭"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"더블클릭"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"드래그"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"스크롤"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"일시중지"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"위치"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 항목이 RESTRICTED 버킷으로 이동함"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index f8c0022..5f19cf7 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"организмдин абалына көз салган сенсордун дайындарына мүмкүнчүлүк алуу"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Билдирмелер"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"билдирмелерди көрсөтүү"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезедеги нерселерди алып туруу"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Учурда ачылып турган терезедеги маалыматты талдайт."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\"Сыйпалап изилдөө\" мүмкүнчүлүгүн иштетет"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Колдонмого сүрөт жыйнагыңызды өзгөртүүгө мүмкүнчүлүк берет."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"медиа жыйнагыңыз сакталган жерлерди окуу"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Колдонмого медиа жыйнагыңыз сакталган жерлерди окууга мүмкүнчүлүк берет."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометрикалык параметрлерди колдонуу"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометрикалык жөндөөнү же экрандын кулпусун колдонуу"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Өзүңүздү ырастаңыз"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad\'дын ортоңку баскычы"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Авточыкылдатуу түрүнүн параметрлеринин панели"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Сол баскычын чыкылдатуу"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Оң баскычын чыкылдатуу"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Эки жолу чыкылдатуу"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Сүйрөө"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Сыдыруу"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Тындыруу"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Орду"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 429f3f7..fa1ff2b 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ເຂົ້າ​ຫາ​ຂໍ້​ມູນ​ເຊັນ​ເຊີ​ກ່ຽວ​ກັບ​ສັນ​ຍານ​ຊີບ​ຂອງ​ທ່ານ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ການແຈ້ງເຕືອນ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ສະແດງການແຈ້ງເຕືອນ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳຜັດ\""</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ອະນຸຍາດໃຫ້ແອັບແກ້ໄຂຄໍເລັກຊັນຮູບຂອງທ່ານ."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ອ່ານສະຖານທີ່ຈາກຄໍເລັກຊັນມີເດຍຂອງທ່ານ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ອະນຸຍາດໃຫ້ແອັບອ່ານສະຖານທີ່ຈາກຄໍເລັກຊັນມີເດຍຂອງທ່ານ."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ໃຊ້ລະບົບຊີວະມິຕິ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ໃຊ້ລະບົບຊີວະມິຕິ ຫຼື ການລັອກໜ້າຈໍ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ຢັ້ງຢືນວ່າແມ່ນທ່ານ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 3ca681b..b9303fa 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pasiekti jutiklių duomenis apie gyvybinius ženklus"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Pranešimai"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"rodyti pranešimus"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Gauti lango turinį"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Įjungti „Naršyti paliečiant“"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Programai leidžiama keisti nuotraukų kolekciją."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"skaityti vietoves iš medijos kolekcijos"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Programai leidžiama skaityti vietoves iš medijos kolekcijos."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Naudoti biometrinius duomenis"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Naudoti biometrinius duomenis arba ekrano užraktą"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Patvirtinkite, kad tai jūs"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 1e7ffd1..3a1df4b 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"piekļūt sensoru datiem par jūsu veselības rādījumiem"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Paziņojumi"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"rādīt paziņojumus"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Izgūt loga saturu."</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ļauj lietotnei pārveidot jūsu fotoattēlu kolekciju."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"Lasīt atrašanās vietas no jūsu multivides kolekcijas"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Ļauj lietotnei lasīt atrašanās vietas no jūsu multivides kolekcijas."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrijas izmantošana"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrijas vai ekrāna bloķēšanas izmantošana"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Apstipriniet, ka tas esat jūs"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Virzienu slēdzis — centrs"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Automātiskās klikšķināšanas veida iestatījumu panelis"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Noklikšķināt ar peles kreiso pogu"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Noklikšķināt ar peles labo pogu"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Veikt dubultklikšķi"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Vilkt"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Ritināt"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pārtraukt"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozīcija"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Pakotne “<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>” ir ievietota ierobežotā kopā."</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index c1a7c1d..c6d51c7 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"пристапува до податоците од сензорите за виталните функции"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Известувања"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"да прикажува известувања"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"да ги вчитува содржините од прозорците"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"да ги проверува содржините од прозорецот што го користите"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"да вклучи „Истражувај со допир“"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Дозволува апликацијата да ја менува вашата збирка на фотографии."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"да чита локации од вашата збирка на аудиовизуелни содржини"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Дозволува апликацијата да чита локации од вашата збирка на аудиовизуелни содржини."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Користи биометрика"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Користи биометрика или заклучен екран"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Потврдете дека сте вие"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Навигациско копче за средина"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Табла со поставки за вид автоматско кликнување"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Кликни со лево копче"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Кликнување со десно копче"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Кликнување двапати"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Повлекување"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Лизгање"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Паузирај"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Позиционирај"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е ставен во корпата ОГРАНИЧЕНИ"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 5c31433..17fa98b 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"നിങ്ങളുടെ ജീവാധാര ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ വിവരങ്ങൾ ആക്സസ് ചെയ്യുക"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"അറിയിപ്പുകൾ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"അറിയിപ്പുകൾ കാണിക്കുക"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"വിൻഡോ ഉള്ളടക്കം വീണ്ടെടുക്കുക"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"നിങ്ങൾ സംവദിക്കുന്ന ഒരു വിൻഡോയുടെ ഉള്ളടക്കം പരിശോധിക്കുക."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"സ്‌പർശനം വഴി പര്യവേക്ഷണം ചെയ്യുക, ഓണാക്കുക"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"നിങ്ങളുടെ ഫോട്ടോ ശേഖരം പരിഷ്‌ക്കരിക്കുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"നിങ്ങളുടെ മീഡിയ ശേഖരത്തിൽ നിന്നും ലൊക്കേഷനുകൾ റീഡ് ചെയ്യുക"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"നിങ്ങളുടെ മീഡിയ ശേഖരത്തിൽ നിന്നും ലൊക്കേഷനുകൾ റീഡ് ചെയ്യുന്നതിന് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ബയോമെട്രിക്‌സ് ഉപയോഗിക്കുക"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ബയോമെട്രിക്‌സ് അല്ലെങ്കിൽ സ്‌ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ഇത് നിങ്ങളാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 24637fa..48b2aa8 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"таны биеийн байдлын талаарх мэдрэгч бүхий өгөгдөлд нэвтрэх"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Мэдэгдэл"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"мэдэгдэл харуулах"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Цонхны агуулгыг авах"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Хүрэлтээр сонсохыг асаах"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Таны зургийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"медиа цуглуулгаасаа байршлыг унших"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Таны медиа цуглуулгаас байршлыг унших зөвшөөрлийг аппад олгодог."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Биометр ашиглах"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Биометр эсвэл дэлгэцийн түгжээ ашиглах"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Өөрийгөө мөн гэдгийг баталгаажуулаарай"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad гол"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Автомат товшилтын төрлийн тохиргооны түр зуурын самбар"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Зүүн талыг товших"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Баруун талыг товших"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"2 товших"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Чирэх"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Гүйлгэх"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Түр зогсоох"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Байрлал"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>-г ХЯЗГААРЛАСАН сагс руу орууллаа"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 0717eb9..03400f2 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"आपल्‍या महत्त्वाच्या मापनांविषयी सेन्सर डेटा अ‍ॅक्सेस करा"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"सूचना"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचना दाखवा"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विंडोमधील आशय पुन्हा मिळवा"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"तुम्ही वापरत असलेल्‍या विंडोमधील आशय तपासा."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"स्पर्श करून अन्वेषण सुरू करा"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ॲपला तुमच्या फोटो संग्रहामध्ये सुधारणा करण्याची अनुमती देते."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"तुमच्या मीडिया संग्रहातून स्थाने वाचा"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ॲपला तुमच्या मीडिया संग्रहामध्येील स्थाने वाचण्यासाठी अनुमती देते."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक वापरा"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक किंवा स्क्रीन लॉक वापरा"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"हे तुम्हीच आहात याची पडताळणी करा"</string>
@@ -1344,13 +1384,13 @@
     <string name="volume_call" msgid="7625321655265747433">"कॉल-मधील व्हॉल्यूम"</string>
     <string name="volume_bluetooth_call" msgid="2930204618610115061">"ब्लूटूथ कॉल-मधील व्हॉल्यूम"</string>
     <string name="volume_alarm" msgid="4486241060751798448">"अलार्म व्हॉल्यूम"</string>
-    <string name="volume_notification" msgid="6864412249031660057">"सूचना व्हॉल्यूम"</string>
+    <string name="volume_notification" msgid="6864412249031660057">"नोटिफिकेशन व्हॉल्यूम"</string>
     <string name="volume_unknown" msgid="4041914008166576293">"व्हॉल्यूम"</string>
     <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"ब्लूटूथ व्हॉल्यूम"</string>
     <string name="volume_icon_description_ringer" msgid="2187800636867423459">"रिंगटोन व्हॉल्यूम"</string>
     <string name="volume_icon_description_incall" msgid="4491255105381227919">"कॉल व्हॉल्यूम"</string>
     <string name="volume_icon_description_media" msgid="4997633254078171233">"मीडिया व्हॉल्यूम"</string>
-    <string name="volume_icon_description_notification" msgid="579091344110747279">"सूचना व्हॉल्यूम"</string>
+    <string name="volume_icon_description_notification" msgid="579091344110747279">"नोटिफिकेशन व्हॉल्यूम"</string>
     <string name="ringtone_default" msgid="9118299121288174597">"डीफॉल्ट रिंगटोन"</string>
     <string name="ringtone_default_with_actual" msgid="2709686194556159773">"डीफॉल्ट (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
     <string name="ringtone_silent" msgid="397111123930141876">"काहीही नाही"</string>
@@ -2228,7 +2268,7 @@
     <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"होम"</string>
     <string name="accessibility_system_action_back_label" msgid="4205361367345537608">"मागे जा"</string>
     <string name="accessibility_system_action_recents_label" msgid="4782875610281649728">"अलीकडील ॲप्स"</string>
-    <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"सूचना"</string>
+    <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"नोटिफिकेशन"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"क्विक सेटिंग्ज"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"पॉवर डायलॉग"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्‍क्रीन लॉक करा"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 5cac65d..889324c 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"akses data penderia tentang tanda vital anda"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Pemberitahuan"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"tunjukkan pemberitahuan"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Dapatkan kembali kandungan tetingkap"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Hidupkan Teroka melalui Sentuhan"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Membenarkan apl mengubah suai koleksi foto anda."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"baca lokasi daripada koleksi media anda"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Membenarkan apl membaca lokasi daripada koleksi media anda."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Gunakan biometrik"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gunakan biometrik atau kunci skrin"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Sahkan diri anda"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 10bcd1b..67f0841 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"သင်၏အရေးကြီးသော ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံကိရိယာဒေတာကို ရယူရန်"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"အကြောင်းကြားချက်များ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"အကြောင်းကြားချက်များ ပြနိုင်သည်"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ဝင်းဒိုးတွင် ပါရှိသည်များကို ပြန်လည်ရယူရန်"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"သင်အသုံးပြုနေသော ဝင်းဒိုးတွင် ပါရှိသည်များကို ကြည့်ရှုစစ်ဆေးသည်။"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"တို့ထိခြင်းဖြင့် ရှာဖွေမှုကို ဖွင့်ရန်"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခြင်း"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"အက်ပ်အား သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခွင့်ပေးသည်။"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ဇီဝမက်ထရစ်အချက်အလက်များ သုံးခြင်း"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ဇီဝမက်ထရစ်အချက်အလက်များ (သို့) ဖန်သားပြင်လော့ခ်ချခြင်းကို သုံးခြင်း"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"သင်ဖြစ်ကြောင်း အတည်ပြုပါ"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad အလယ်"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"အော်တိုနှိပ်ခြင်း အမျိုးအစား ဆက်တင်အကန့်"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ဘယ်ကလစ်"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"ညာဘက်ခလုတ်ကို နှိပ်ရန်"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"နှစ်ချက်နှိပ်ရန်"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"ဖိဆွဲရန်"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"လှိမ့်ရန်"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ခဏရပ်ရန်"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"နေရာ"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ကို တားမြစ်ထားသော သိမ်းဆည်းမှုအတွင်းသို့ ထည့်ပြီးပါပြီ"</string>
@@ -2518,7 +2554,7 @@
     <string name="biometric_dangling_notification_action_set_up" msgid="8246885009807817961">"စနစ်ထည့်သွင်းရန်"</string>
     <string name="biometric_dangling_notification_action_not_now" msgid="8095249216864443491">"ယခုမလုပ်ပါ"</string>
     <string name="bg_user_sound_notification_title_alarm" msgid="5251678483393143527">"<xliff:g id="USER_NAME">%s</xliff:g> အတွက် နှိုးစက်"</string>
-    <string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"အသုံးပြုသူ ပြောင်းရန်"</string>
+    <string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"အသုံးပြုသူပြောင်းရန်"</string>
     <string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"အသံပိတ်ရန်"</string>
     <string name="bg_user_sound_notification_message" msgid="8613881975316976673">"အသံပိတ်ရန် တို့ပါ"</string>
     <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ဘရောင်ဇာ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 800f118..44458ba 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få tilgang til sensordata om de vitale tegnene dine"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Varsler"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"vise varsler"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"hente innhold i vinduer"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Appen analyserer innholdet i vinduer du samhandler med."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"slå på berøringsutforsking"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Lar appen gjøre endringer i bildesamlingen din."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lese posisjoner fra mediesamlingen din"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Lar appen lese posisjoner fra mediesamlingen din."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Bruk biometri"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Bruk biometri eller skjermlås"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Bekreft at det er deg"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Midt på styrepilene"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Innstillingspanel for type autoklikk"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Venstreklikk"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Høyreklikk"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dobbeltklikk"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Dra"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Rull"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Sett på pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Plassér"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blitt plassert i TILGANGSBEGRENSET-toppmappen"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index ce0c67e..2591a15 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"तपाईंको महत्त्वपूर्ण संकेत बारे सेन्सर डेटा पहुँच गर्नुहोस्"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"नोटिफिकेसनहरू"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"सूचनाहरू देखाउनुहोस्"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"यसले एपलाई तपाईंको तस्बिरको सङ्ग्रह परिमार्जन गर्न दिन्छ।"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"आफ्नो मिडियाको सङ्ग्रहका स्थानहरू पढ्नुहोस्‌"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"यसले एपलाई तपाईंको मिडिया सङ्ग्रहका स्थानहरू पढ्न दिन्छ।"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"बायोमेट्रिक्स प्रयोग गर्नुहोस्"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"बायोमेट्रिक्स वा स्क्रिन लक प्रयोग गर्नुहोस्"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"यो व्यक्ति तपाईं नै हो भन्ने प्रमाणित गर्नुहोस्"</string>
@@ -1344,13 +1384,13 @@
     <string name="volume_call" msgid="7625321655265747433">"इन-कल भोल्युम"</string>
     <string name="volume_bluetooth_call" msgid="2930204618610115061">"ब्लुटुथ भित्री-कल मात्रा"</string>
     <string name="volume_alarm" msgid="4486241060751798448">"आलर्मको भोल्युम"</string>
-    <string name="volume_notification" msgid="6864412249031660057">"सूचनाको भोल्युम"</string>
+    <string name="volume_notification" msgid="6864412249031660057">"नोटिफिकेसनको भोल्युम"</string>
     <string name="volume_unknown" msgid="4041914008166576293">"मात्रा"</string>
     <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"ब्लुटुथ भोल्युम"</string>
     <string name="volume_icon_description_ringer" msgid="2187800636867423459">"घन्टिको आवाज मात्रा"</string>
     <string name="volume_icon_description_incall" msgid="4491255105381227919">"कला मात्रा"</string>
     <string name="volume_icon_description_media" msgid="4997633254078171233">"मिडियाको भोल्युम"</string>
-    <string name="volume_icon_description_notification" msgid="579091344110747279">"सूचनाको भोल्युम"</string>
+    <string name="volume_icon_description_notification" msgid="579091344110747279">"नोटिफिकेसनको भोल्युम"</string>
     <string name="ringtone_default" msgid="9118299121288174597">"डिफल्ट रिङटोन"</string>
     <string name="ringtone_default_with_actual" msgid="2709686194556159773">"डिफल्ट (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
     <string name="ringtone_silent" msgid="397111123930141876">"कुनै पनि होइन"</string>
@@ -2088,12 +2128,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"अनपिन गर्नुहोस्"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> लाई अनपिन गर्नुहोस्"</string>
     <string name="app_info" msgid="6113278084877079851">"एपका बारे जानकारी"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"सामग्री सीधै सेयर गर्नका निम्ति चयन गरिएका व्यक्ति वा समूहहरू"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"सिफारिस गरिएका एपहरू"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"एपहरूको सूची"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"डेमो सुरु गर्दै…"</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"यन्त्रलाई रिसेट गर्दै…"</string>
@@ -2250,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad को बिचको बटन"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"अटोक्लिकको प्रकारसम्बन्धी सेटिङको प्यानल"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"बायाँ क्लिक गर्नुहोस्"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"राइट क्लिक गर्नुहोस्"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"डबल क्लिक गर्नुहोस्"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"ड्र्याग गर्नुहोस्"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"स्क्रोल गर्नुहोस्"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"पज गर्नुहोस्"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"स्थिति"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> लाई प्रतिबन्धित बाल्टीमा राखियो"</string>
@@ -2534,12 +2567,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"नक्सा"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"एपहरू"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"तपाईंको फिंगरप्रिन्ट अब पहिचान गर्न सकिँदैन। फिंगरप्रिन्ट अनलक फेरि सेटअप गर्नुहोस्।"</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"लक भएपछि USB डिभाइस घुसाइएको छ"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"Android लक भएपछि USB डिभाइस घुसाइएको छ। USB डिभाइस प्रयोग गर्न कृपया सुरुमा Android अनलक गर्नुहोस् र त्यसपछि USB डिभाइस फेरि घुसाउनुहोस्।"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"USB सम्बन्धी शङ्कास्पद गतिविधि"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"USB डेटा सिग्नल अफ गरिएको छ।"</string>
 </resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 3466641..bbdc1bb 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"toegang krijgen tot sensorgegevens over je vitale functies"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Meldingen"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"meldingen tonen"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Content van vensters ophalen"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"De content inspecteren van een venster waarmee je interactie hebt."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Verkennen via aanraking aanzetten"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Hiermee sta je de app toe je fotocollectie aan te passen."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"locaties van je mediacollecties bekijken"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrische gegevens gebruiken"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrische gegevens of schermvergrendeling gebruiken"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Je identiteit bevestigen"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nieuwe simkaart geplaatst"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tik om dit in te stellen"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Je tijdzone is gewijzigd"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Je bent nu in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Je tijdzone is <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Tijd instellen"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum instellen"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Instellen"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 418231f..a1b24eb 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ଆପଣଙ୍କ ଗୁରୁତପୂର୍ଣ୍ଣ ସଂକେତଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍‍ ଡାଟା ଆକ୍ସେସ୍‍ କରେ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ୱିଣ୍ଡୋ କଣ୍ଟେଣ୍ଟ ହାସଲ କରନ୍ତୁ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ଆପଣ କାମ କରୁଥିବା ୱିଣ୍ଡୋର କଣ୍ଟେଣ୍ଟକୁ ଯାଞ୍ଚ କରନ୍ତୁ।"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ସ୍ପର୍ଶ ଦ୍ୱାରା ଏକ୍ସପ୍ଲୋର୍‍ ଅନ୍‍ କରନ୍ତୁ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ଆପଣଙ୍କ ଫଟୋ ସଂଗ୍ରହ ପରିବର୍ତ୍ତନ କରିବାକୁ ଆପ୍‍ ଅନୁମତି ଦେଇଥାଏ।"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ଆପଣଙ୍କ ମିଡିଆ ସଂଗ୍ରହ ଠାରୁ ଲୋକେସନ୍‍ଗୁଡିକୁ ପଢନ୍ତୁ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ଆପଣଙ୍କ ମିଡିଆ ସଂଗ୍ରହ ଠାରୁ ଅବସ୍ଥାନଗୁଡିକୁ ପଢିବାକୁ ଆପ୍‍ ଅନୁମତି ଦେଇଥାଏ।"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ବାୟୋମେଟ୍ରିକ୍ସ ବ୍ୟବହାର କରନ୍ତୁ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ବାୟୋମେଟ୍ରିକ୍ସ ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
@@ -1572,7 +1612,7 @@
     <string name="vpn_lockdown_config" msgid="8331697329868252169">"ନେଟ୍‌ୱର୍କ କିମ୍ବା VPN ସେଟିଙ୍ଗ ବଦଳାନ୍ତୁ"</string>
     <string name="upload_file" msgid="8651942222301634271">"ଫାଇଲ୍ ଚୟନ କରନ୍ତୁ"</string>
     <string name="no_file_chosen" msgid="4146295695162318057">"କୌଣସି ଫାଇଲ୍ ଚୟନ କରାଯାଇନାହିଁ"</string>
-    <string name="reset" msgid="3865826612628171429">"ରିସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="reset" msgid="3865826612628171429">"ରିସେଟ କରନ୍ତୁ"</string>
     <string name="submit" msgid="862795280643405865">"ଦାଖଲ କରନ୍ତୁ"</string>
     <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ଡ୍ରାଇଭିଙ୍ଗ ଆପ୍ ଚାଲୁଛି"</string>
     <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ଡ୍ରାଇଭିଙ୍ଗ ଆପ୍‌ରୁ ବାହାରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad କେନ୍ଦ୍ର"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ଅଟୋକ୍ଲିକ ପ୍ରକାର ସେଟିଂସ ପେନେଲ"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ବାମ ବଟନ କ୍ଲିକ କରନ୍ତୁ"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"ଡାହାଣ କ୍ଲିକ କରନ୍ତୁ"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"ଦୁଇ ଥର କ୍ଲିକ କରନ୍ତୁ"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"ଡ୍ରାଗ କରନ୍ତୁ"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ବିରତ କରନ୍ତୁ"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"ସ୍ଥିତି"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>କୁ ପ୍ରତିବନ୍ଧିତ ବକେଟରେ ରଖାଯାଇଛି"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 26769a6..70dcd66 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ਆਪਣੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਚਿੰਨ੍ਹਾਂ ਬਾਰੇ ਸੰਵੇਦਕ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"ਸੂਚਨਾਵਾਂ ਦਿਖਾਓ"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ਵਿੰਡੋ ਸਮੱਗਰੀ ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰਨਾ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ਉਸ ਵਿੰਡੋ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅੰਤਰਕਿਰਿਆ ਕਰ ਰਹੇ ਹੋ"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"\'ਸਪੱਰਸ਼ ਰਾਹੀਂ ਪੜਚੋਲ ਕਰੋ\' ਚਾਲੂ ਕਰਨਾ"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਟੋ ਸੰਗ੍ਰਹਿ ਨੂੰ ਸੋਧਣ ਦਿੰਦੀ ਹੈ।"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ਤੁਹਾਡੇ ਮੀਡੀਆ ਸੰਗ੍ਰਹਿ ਦੇ ਟਿਕਾਣਿਆਂ ਨੂੰ ਪੜ੍ਹਨਾ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਮੀਡੀਆ ਸੰਗ੍ਰਹਿ ਦੇ ਟਿਕਾਣਿਆਂ ਨੂੰ ਪੜ੍ਹਨ ਦਿੰਦੀ ਹੈ।"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ਬਾਇਓਮੈਟ੍ਰਿਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ਬਾਇਓਮੈਟ੍ਰਿਕ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index e091700..c92c2bb 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"dostęp do danych czujnika podstawowych funkcji życiowych"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Powiadomienia"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"pokazuj powiadomienia"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pobieranie zawartości okna"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Włączenie czytania dotykiem"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Zezwala aplikacji na modyfikowanie kolekcji zdjęć."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"odczytywanie lokalizacji z kolekcji multimediów"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Zezwala aplikacji na odczytywanie lokalizacji z kolekcji multimediów."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Używaj biometrii"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Używaj biometrii lub blokady ekranu"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potwierdź, że to Ty"</string>
@@ -1411,7 +1451,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Włożono nową kartę SIM"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Kliknij, by skonfigurować"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Zmieniła się Twoja strefa czasowa"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Jesteś teraz w strefie <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Twoja aktualna strefa to <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Ustaw godzinę"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Ustaw datę"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Ustaw"</string>
@@ -2249,14 +2289,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad – środek"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel ustawień typu automatycznego kliknięcia"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Kliknięcie lewym przyciskiem"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Kliknięcie prawym przyciskiem"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dwukrotne kliknięcie"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Przeciąganie"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Przewijanie"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Wstrzymaj"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozycja"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Umieszczono pakiet <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> w zasobniku danych RESTRICTED"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 06b43cb..99c4375 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acesse dados do sensor sobre seus sinais vitais"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Acessar conteúdo de uma janela"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar por toque"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que o app modifique sua coleção de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ler locais na sua coleção de mídias"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que o app leia os locais na sua coleção de mídias."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometria"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometria ou bloqueio de tela"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme que é você"</string>
@@ -1970,7 +2010,7 @@
     <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string>
     <string name="toolbar_collapse_description" msgid="8009920446193610996">"Recolher"</string>
     <string name="zen_mode_feature_name" msgid="3785547207263754500">"Não perturbe"</string>
-    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Tempo de inatividade"</string>
+    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Intervalo"</string>
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string>
     <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index f48c326..a453546 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"aceder a dados do sensor acerca dos seus sinais vitais"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Obter conteúdo da janela"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar Através do Toque"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que a app modifique a sua coleção de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ler as localizações a partir da sua coleção de multimédia"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que a app leia as localizações a partir da sua coleção de multimédia."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar a biometria"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar a biometria ou o bloqueio de ecrã"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme a sua identidade"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 06b43cb..99c4375 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"acesse dados do sensor sobre seus sinais vitais"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificações"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"mostrar notificações"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Acessar conteúdo de uma janela"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Ativar Explorar por toque"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite que o app modifique sua coleção de fotos."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ler locais na sua coleção de mídias"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite que o app leia os locais na sua coleção de mídias."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Usar biometria"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Usar biometria ou bloqueio de tela"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirme que é você"</string>
@@ -1970,7 +2010,7 @@
     <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string>
     <string name="toolbar_collapse_description" msgid="8009920446193610996">"Recolher"</string>
     <string name="zen_mode_feature_name" msgid="3785547207263754500">"Não perturbe"</string>
-    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Tempo de inatividade"</string>
+    <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Intervalo"</string>
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string>
     <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 73f532a..28728b5 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"să acceseze datele de la senzori despre semnele vitale"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Notificări"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"să afișeze notificări"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"să preia conținutul ferestrei"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspectează conținutul unei ferestre cu care interacționezi."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"să activeze funcția Explorează prin atingere"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Permite aplicației să-ți modifice colecția de fotografii."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"să citească locațiile din colecția media"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Permite aplicației să citească locațiile din colecția ta media."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Folosește sistemele biometrice"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Folosește sistemele biometrice sau blocarea ecranului"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Confirmă-ți identitatea"</string>
@@ -2248,14 +2288,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centru"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panoul de setări pentru clicul automat"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic stânga"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Clic dreapta"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dublu clic"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Trage"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Derulează"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Întrerupe"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Poziție"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a fost adăugat la grupul RESTRICȚIONATE"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index e0e0807..f587a73 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"доступ к данным датчиков о состоянии организма"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Уведомления"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"показ уведомлений"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Получать содержимое окна"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Анализировать содержимое активного окна."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Включать Изучение касанием"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Приложение сможет вносить изменения в вашу фотоколлекцию."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"Доступ к геоданным в медиаколлекции"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Приложение получит доступ к геоданным в вашей медиаколлекции."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Использовать биометрию"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Использовать биометрию или блокировку экрана"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Подтвердите, что это вы"</string>
@@ -1014,7 +1054,7 @@
     <string name="lockscreen_password_wrong" msgid="8605355913868947490">"Повторите попытку"</string>
     <string name="lockscreen_storage_locked" msgid="634993789186443380">"Разблок. для доступа ко всем функциям и данным"</string>
     <string name="faceunlock_multiple_failures" msgid="681991538434031708">"Все попытки войти с помощью фейсконтроля использованы"</string>
-    <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM-карта отсутствует"</string>
+    <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Нет SIM-карты"</string>
     <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"В планшете отсутствует SIM-карта."</string>
     <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"В устройстве Android TV отсутствует SIM-карта."</string>
     <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"В телефоне отсутствует SIM-карта."</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 45dd5df..f30a483 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ඔබේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත පිවිසෙන්න"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"දැනුම්දීම්"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"දැනුම්දීම් පෙන්වන්න"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ඔබ අන්තර්ක්‍රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ස්පර්ශයෙන් ගවේෂණය සක්‍රිය කරන්න"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ඔබගේ ඡායාරූප එකතුව වෙනස් කිරීමට යෙදුමට ඉඩ දෙයි."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"ඔබගේ මාධ්‍ය එකතුවෙන් ස්ථාන කියවන්න"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ඔබගේ මාධ්‍ය එකතුවෙන් ස්ථාන කියවීමට යෙදුමට ඉඩ දෙයි."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ජෛවමිතික භාවිත කරන්න"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ජෛවමිතික හෝ තිර අගුල භාවිත කරන්න"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"එය ඔබ බව තහවුරු කරන්න"</string>
@@ -2088,12 +2128,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"ගලවන්න"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ඇමුණුම ඉවත් කරන්න"</string>
     <string name="app_info" msgid="6113278084877079851">"යෙදුම් තොරතුරු"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"සෘජු බෙදා ගැනීමේ ඉලක්ක"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"යෙදුම් යෝජනා"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"යෙදුම් ලැයිස්තුව"</string>
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"ආදර්ශනය ආරම්භ කරමින්..."</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"උපාංගය යළි සකසමින්..."</string>
@@ -2250,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad මැද"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ස්වයං ක්ලික් ආකාර සැකසීම් පැනලය"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"වම්පස ක්ලිකය"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"දකුණු ක්ලිකය"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"දෙවරක් ක්ලික් කරන්න"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"අදින්න"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"අනුචලනය කරන්න"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"විරාම කරන්න"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"ස්ථානය"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> අවහිර කළ බාල්දියට දමා ඇත"</string>
@@ -2534,12 +2567,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"සිතියම්"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"යෙදුම්"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ඔබේ ඇඟිලි සලකුණු තවදුරටත් හඳුනාගත නොහැක. ඇඟිලි සලකුණු අගුළු හැරීම නැවත පිහිටුවන්න."</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"අගුළු දමා ඇති විට USB උපාංගය පේනුගත කර ඇත"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"Android අගුළු දමා ඇති විට USB උපාංගය පේනුගත කර ඇත. උපාංගය භාවිතා කිරීමට, පළමුව Android අගුළු හැර, පසුව එය භාවිතා කිරීමට USB උපාංගය නැවත ඇතුළු කරන්න."</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"සැක සහිත USB ක්‍රියාකාරකම"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"USB දත්ත සංඥාව අබල කර ඇත."</string>
 </resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index d675978..49600ce 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"prístup k dátam senzorov vašich životných funkcií"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Upozornenia"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"zobrazovať upozornenia"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Načítať obsah okna"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Môžete preskúmať obsah okna, s ktorým pracujete."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Zapnúť funkciu Preskúmanie dotykom"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Umožňuje aplikácii upravovať zbierku fotiek."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"čítať polohy zo zbierky médií"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Umožňuje aplikácii čítať polohy zo zbierky médií."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Použiť biometrické údaje"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Použiť biometrické údaje alebo zámku obrazovky"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrďte, že ste to vy"</string>
@@ -1433,8 +1473,8 @@
     <string name="usb_power_notification_message" msgid="7284765627437897702">"Pripojené zariadenie sa nabíja. Ďalšie možností získate klepnutím."</string>
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Bolo zistené analógové zvukové príslušenstvo"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Pripojené zariadenie nie je kompatibilné s týmto telefónom. Ďalšie informácie zobrazíte klepnutím."</string>
-    <string name="adb_active_notification_title" msgid="408390247354560331">"Ladenie cez USB je pripojené"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím vypnite ladenie cez USB"</string>
+    <string name="adb_active_notification_title" msgid="408390247354560331">"Ladenie cez USB je zapnuté"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím vypnete"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Vyberte, ak chcete zakázať ladenie cez USB."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bezdrôtové ladenie je pripojené"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Klepnutím vypnete bezdrôtové ladenie"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 0136f5f8..c8dc4ee 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"dostop do podatkov tipala o vaših vitalnih znakih"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Obvestila"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikaz obvestil"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pridobiti vsebino okna"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Preverjanje vsebine okna, ki ga uporabljate."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Vklopiti raziskovanje z dotikom"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Aplikaciji omogoča spreminjanje zbirke fotografij."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"branje lokacij v predstavnostni zbirki"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Aplikaciji omogoča branje lokacij v predstavnostni zbirki."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Uporaba biometrike"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Uporaba biometrike ali odklepanja s poverilnico"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potrdite, da ste res vi"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 37aa8bf..fa3eeae 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"qasu tek të dhënat e sensorëve rreth shenjave të tua jetësore"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Njoftimet"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"shfaq njoftimet"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Të nxjerrë përmbajtjen e dritares"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Të aktivizojë veçorinë \"Eksploro me prekje\""</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Lejon aplikacionin të modifikojë koleksionin tënd të fotografive."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"lexo vendndodhjet nga koleksioni yt i medias"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Lejon aplikacionin të lexojë vendndodhjet nga koleksioni yt i medias."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Përdor sistemet biometrike"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Përdor sistemet biometrike ose kyçjen e ekranit"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifiko që je ti"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Qendra e bllokut të drejtimit"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Paneli i cilësimeve për llojin e klikimit automatik"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Klikimi majtas"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Kliko djathtas"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Kliko dy herë"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Zvarrit"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Lëviz"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Vendos në pauzë"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozicioni"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> është vendosur në grupin E KUFIZUAR"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index a4f0e55..5481023 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -354,6 +354,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"приступа подацима сензора о виталним функцијама"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Обавештења"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"приказивање обавештења"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"да преузима садржај прозора"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Проверава садржај прозора са којим остварујете интеракцију."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"да укључи Истраживања додиром"</string>
@@ -649,6 +657,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Дозвољава апликацији да мења колекцију слика."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"читање локација из медијске колекције"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Дозвољава апликацији да чита локације из медијске колекције."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Користите биометрију"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Користите биометрију или откључавање екрана"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Потврдите идентитет"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index e56097f..38634d5 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få åtkomst till sensordata om dina vitalparametrar"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Aviseringar"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"visa aviseringar"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Hämta fönsterinnehåll"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Granska innehållet i ett fönster som du interagerar med."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Aktivera Explore by touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tillåter att appen gör ändringar i din fotosamling."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"läsa av platser i din mediesamling"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillåter att appen läser av platser i din mediesamling."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Använd biometri"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Använd biometrisk data eller skärmlåset"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifiera din identitet"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Styrkors, mitten"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Inställningspanel för typ av automatiskt klick"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Vänsterklick"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Högerklicka"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Dubbelklicka"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Trycka och dra"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Scrolla"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausa"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> har placerats i hinken RESTRICTED"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 03a581a..b6eab89 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"fikia data ya kitambuzi kuhusu alama zako muhimu"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Arifa"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"kuonyesha arifa"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Kufikia maudhui ya dirisha"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kuchunguza maudhui ya dirisha unalotumia."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Kuwasha \'Chunguza kwa Kugusa\'"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Inaruhusu programu kubadilisha mkusanyiko wa picha zako."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"kusoma maeneo kwenye mkusanyiko wa vipengee vyako"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Inaruhusu programu kusoma maeneo kwenye mkusanyiko wa vipengee vyako."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Tumia bayometriki"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Tumia bayometriki au mbinu ya kufunga skrini"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Thibitisha kuwa ni wewe"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM mpya imewekwa"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Gusa ili uiweke"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Saa za eneo lako zimebadilika"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sasa unatumia saa za eneo za <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sasa unatumia <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Weka saa"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Weka tarehe"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Weka"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Kitufe cha katikati cha Dpad"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Kidirisha cha mipangilio ya aina ya kubofya kiotomatiki"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Bofya kushoto"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Bofya kulia"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Bofya mara mbili"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Buruta"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Sogeza"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Sitisha"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Nafasi"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> kimewekwa katika kikundi KILICHODHIBITIWA"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 16c021e..d48f4a2 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"உங்கள் உடல் இயக்கம் பற்றி உணர்விகள் கூறும் தகவலைப் பார்க்கலாம்"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"அறிவிப்புகள்"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"அறிவிப்புகளைக் காட்டும்"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"சாளர உள்ளடக்கத்தைப் பெறும்"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"நீங்கள் பணியாற்றிக் கொண்டிருக்கும் சாளரத்தின் உள்ளடக்கத்தைப் பார்க்கலாம்."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"தொடுவதன் மூலம் அறிவதை இயக்கும்"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"உங்களின் படத் தொகுப்பை மாற்ற ஆப்ஸை அனுமதிக்கும்."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"மீடியா தொகுப்பிலிருந்து இடங்களை அறிதல்"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"உங்களின் மீடியா தொகுப்பிலிருந்து இடங்களை அறிந்துகொள்ள ஆப்ஸை அனுமதிக்கும்."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"பயோமெட்ரிக்ஸைப் பயன்படுத்து"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"பயோமெட்ரிக்ஸையோ திரைப் பூட்டையோ பயன்படுத்து"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"நீங்கள்தான் என உறுதிசெய்க"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"மையப் பகுதியைக் காட்டும் பட்டன்"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ஆட்டோ கிளிக் வகை அமைப்புகள் பேனல்"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"இடது கிளிக்"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"வலது கிளிக் செய்யும்"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"இரு கிளிக் செய்யும்"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"இழுக்கும்"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"நகர்த்தும்"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"இடைநிறுத்து"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"நிலை"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> என்பதை வரம்பிடப்பட்ட பக்கெட்திற்குள் சேர்க்கப்பட்டது"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index c565618..84e56d2 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాను యాక్సెస్ చేస్తుంది"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"నోటిఫికేషన్‌లు"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"నోటిఫికేషన్‌లను చూపండి"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"విండో కంటెంట్‍ను తిరిగి పొందుతుంది"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"మీరు పరస్పర చర్య చేస్తున్న విండో కంటెంట్‌‍ను పరిశీలిస్తుంది."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"తాకడం ద్వారా విశ్లేషణను ఆన్ చేయండి"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"మీ ఫోటో సేకరణను ఎడిట్ చేయడానికి యాప్‌ను అనుమతిస్తుంది."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"మీ మీడియా సేకరణ నుండి లొకేషన్లను చదవండి"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"మీ మీడియా సేకరణ నుండి లొకేషన్లను చదవడానికి యాప్‌ను అనుమతిస్తుంది."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"బయోమెట్రిక్స్‌ను ఉపయోగించండి"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"బయోమెట్రిక్స్‌ను లేదా స్క్రీన్ లాక్‌ను ఉపయోగించండి"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ఈ చర్య చేస్తోంది మీరేనని వెరిఫై చేయండి"</string>
@@ -887,7 +927,7 @@
     <item msgid="6216981255272016212">"అనుకూలం"</item>
   </string-array>
   <string-array name="emailAddressTypes">
-    <item msgid="7786349763648997741">"ఇల్లు"</item>
+    <item msgid="7786349763648997741">"హోమ్‌"</item>
     <item msgid="435564470865989199">"కార్యాలయం"</item>
     <item msgid="4199433197875490373">"ఇతరం"</item>
     <item msgid="3233938986670468328">"అనుకూలం"</item>
@@ -1153,7 +1193,7 @@
     <string name="year" msgid="5182610307741238982">"సంవత్సరం"</string>
     <string name="years" msgid="5797714729103773425">"సంవత్సరాలు"</string>
     <string name="now_string_shortest" msgid="3684914126941650330">"ఇప్పుడు"</string>
-    <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g>నిమిషం"</string>
+    <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g>ని"</string>
     <string name="duration_hours_shortest" msgid="1477752094141971675">"<xliff:g id="COUNT">%d</xliff:g>గంట"</string>
     <string name="duration_days_shortest" msgid="4083124701676227233">"<xliff:g id="COUNT">%d</xliff:g>రోజు"</string>
     <string name="duration_years_shortest" msgid="483982719231145618">"<xliff:g id="COUNT">%d</xliff:g>సం"</string>
@@ -2020,7 +2060,7 @@
     <string name="call_notification_screening_text" msgid="8396931408268940208">"ఇన్‌కమింగ్ కాల్‌ను స్క్రీన్ చేయండి"</string>
     <string name="default_notification_channel_label" msgid="3697928973567217330">"వర్గీకరించబడలేదు"</string>
     <string name="promotional_notification_channel_label" msgid="7414844730492860233">"ప్రమోషన్లు"</string>
-    <string name="social_notification_channel_label" msgid="106520267132019945">"సామాజికం"</string>
+    <string name="social_notification_channel_label" msgid="106520267132019945">"సోషల్ మీడియా"</string>
     <string name="news_notification_channel_label" msgid="4299937455247883311">"వార్తలు"</string>
     <string name="recs_notification_channel_label" msgid="4945985121418684297">"సిఫార్సులు"</string>
     <string name="importance_from_user" msgid="2782756722448800447">"మీరు ఈ నోటిఫికేషన్‌ల ప్రాముఖ్యతను సెట్ చేశారు."</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"DPad మధ్యన"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ఆటో-క్లిక్ టైప్ సెట్టింగ్‌ల ప్యానెల్"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ఎడమ క్లిక్"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"రైట్-క్లిక్"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"డబుల్ క్లిక్"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"లాగండి"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"స్క్రోల్ చేయండి"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"పాజ్ చేయండి"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"స్థానం"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> పరిమితం చేయబడిన బకెట్‌లో ఉంచబడింది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index f4a3651..e16a28a 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพของคุณ"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"การแจ้งเตือน"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"แสดงการแจ้งเตือน"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"เรียกข้อมูลเนื้อหาของหน้าต่าง"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"เปิด \"แตะเพื่อสำรวจ\""</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"อนุญาตให้แอปแก้ไขคอลเล็กชันรูปภาพของคุณ"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"อ่านตำแหน่งจากคอลเล็กชันสื่อของคุณ"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"อนุญาตให้แอปอ่านตำแหน่งจากคอลเล็กชันสื่อของคุณ"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"ใช้ข้อมูลไบโอเมตริก"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"ใช้ข้อมูลไบโอเมตริกหรือการล็อกหน้าจอ"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"ยืนยันว่าเป็นตัวคุณ"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 8782970..98de106 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"i-access ang data ng sensor tungkol sa iyong vital signs"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Mga Notification"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"magpakita ng mga notification"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Kunin ang content ng window"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"I-on ang Explore by Touch"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Pinapayagan ang app na baguhin ang iyong koleksyon ng larawan."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"basahin ang mga lokasyon mula sa iyong koleksyon ng media"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Pinapayagan ang app na basahin ang mga lokasyon mula sa iyong koleksyon ng media."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Gumamit ng biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Gumamit ng biometrics o lock ng screen"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"I-verify na ikaw ito"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Center"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel ng mga setting ng uri ng autoclick"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Mag-left click"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Mag-right click"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Mag-double click"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"I-drag"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Mag-scroll"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"I-pause"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posisyon"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Inilagay ang <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> sa PINAGHIHIGPITANG bucket"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 7048a83..2ec15ca 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"hayati belirtilerinizle ilgili sensör verilerine erişme"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirimler"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirimleri göster"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pencere içeriğini alma"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Dokunarak Keşfet\'i açma"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Uygulamanın fotoğraf koleksiyonunuzu değiştirmesine izin verir."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"medya koleksiyonunuzdaki konumları okuma"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Uygulamanın medya koleksiyonunuzdaki konumları okumasına izin verir."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biyometri kullan"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biyometri veya ekran kilidi kullan"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Kimliğinizi doğrulayın"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"Yeni SIM kart takıldı"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"Kurmak için dokunun"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Saat diliminiz değişti"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Artık <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) saat dilimindesiniz"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) saat dilimindesiniz"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Saati ayarlayın"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Tarihi ayarlayın"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Ayarla"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Orta"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Otomatik tıklama türü ayarları paneli"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Sol tıklama"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Sağ tıklama"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Çift tıklama"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Sürükleme"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Kaydırma"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Duraklatma"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Konum"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> KISITLANMIŞ gruba yerleştirildi"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index a366990..9aeee9c 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -355,6 +355,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"отримувати доступ до інформації датчиків про ваші життєві показники"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Сповіщення"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"показувати сповіщення"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Отримувати вміст вікна"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Перевіряти вміст вікна, з яким ви взаємодієте."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Увімкнути функцію дослідження дотиком"</string>
@@ -650,6 +658,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Додаток зможе змінювати вашу колекцію фотографій."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"розпізнавати геодані з колекції медіа-вмісту"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Додаток зможе розпізнавати геодані з вашої колекції медіа-вмісту."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Доступ через біометрію"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Використовувати біометрію або дані для розблокування екрана"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Підтвердьте, що це ви"</string>
@@ -2090,12 +2130,9 @@
     <string name="unpin_target" msgid="3963318576590204447">"Відкріпити"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"Відкріпити додаток <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="app_info" msgid="6113278084877079851">"Про додатки"</string>
-    <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
-    <skip />
-    <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
-    <skip />
-    <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
-    <skip />
+    <string name="shortcut_group_a11y_title" msgid="2992150163811583865">"Цілі прямого надання доступу"</string>
+    <string name="suggested_apps_group_a11y_title" msgid="2804876567839501831">"Рекомендовані додатки"</string>
+    <string name="all_apps_group_a11y_title" msgid="7020352520224108745">"Список додатків"</string>
     <string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"Запуск демонстрації…"</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"Скидання налаштувань пристрою…"</string>
@@ -2252,14 +2289,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Центральна кнопка панелі керування"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Панель налаштувань типу автоматичного натискання"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Натиснути лівою кнопкою миші"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Натиснути правою кнопкою миші"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Двічі натиснути"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Перетягнути"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Прокрутити"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Призупинити"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Змінити позицію"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" додано в сегмент з обмеженнями"</string>
@@ -2536,12 +2569,8 @@
     <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карти"</string>
     <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Додатки"</string>
     <string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ваші відбитки пальців більше не розпізнаються. Налаштуйте розблокування відбитком пальця повторно."</string>
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
-    <skip />
-    <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
-    <skip />
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_title" msgid="468577168569874967">"USB-пристрій підключено до заблокованого пристрою"</string>
+    <string name="usb_apm_usb_plugged_in_when_locked_notification_text" msgid="6695268246267993166">"USB-пристрій підключено, коли пристрій Android заблоковано. Щоб використовувати USB-пристрій, вийміть і знову вставте його після того, як розблокуєте пристрій Android."</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_title" msgid="3461195995882871461">"Підозрілі дії з USB-пристроєм"</string>
+    <string name="usb_apm_usb_suspicious_activity_notification_text" msgid="6537085605929303187">"Передавання даних через USB вимкнено."</string>
 </resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index b725a12..f934b87 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"اپنی علامات حیات کے متعلق سنسر ڈیٹا تک رسائی حاصل کریں"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"اطلاعات"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"اطلاعات دکھائیں"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ونڈو مواد بازیافت کرنے کی"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"کسی ایسی ونڈو کے مواد کا معائنہ کریں جس کے ساتھ آپ تعامل کر رہے ہیں۔"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"ٹچ کے ذریعے دریافت کریں کو آن کرنے کی"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"ایپ کو آپ کی تصویر کے مجموعے میں ترمیم کی اجازت دیتا ہے۔"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"اپنی میڈيا کے مجموعے سے مقامات پڑھیں"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"ایپ کو آپ کی میڈيا کے مجموعے سے مقامات پڑھنے کی اجازت دیتا ہے۔"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"بایو میٹرکس استعمال کریں"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"بایو میٹرکس یا اسکرین لاک استعمال کریں"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"توثیق کریں کہ یہ آپ ہیں"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index a834669..942be79 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"organizm holati haqidagi sezgich ma’lumotlariga kirish"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Bildirishnomalar"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"bildirishnomalarni chiqarish"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Oynadagi kontentni o‘qiydi"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Joriy oynadagi kontent mazmunini aniqlaydi."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Teginib o‘rganish xizmatini yoqadi"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ilovaga suratlar to‘plamingizni o‘zgartirishga ruxsat beradi."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"multimedia to‘plamidan joylashuv axborotini o‘qish"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Ilovaga multimedia to‘plamingizdan joylashuv axborotini o‘qishga ruxsat beradi."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrik tasdiqlash"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrika yoki ekran qulfi"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Oʻzingizni taniting"</string>
@@ -1431,11 +1471,11 @@
     <string name="usb_power_notification_message" msgid="7284765627437897702">"Ulangan qurilma quvvatlanmoqda. Boshqa parametrlar uchun bosing."</string>
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Analogli audio uskuna aniqlandi"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Biriktirilgan qurilma mazkur telefon bilan mos emas. Batafsil axborot olish uchun bu yerga bosing."</string>
-    <string name="adb_active_notification_title" msgid="408390247354560331">"USB debagging ulandi"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"USB debaggingni uzish uchun bosing"</string>
+    <string name="adb_active_notification_title" msgid="408390247354560331">"USB debaging ulandi"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"Uzish uchun bosing"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB orqali nosozliklarni tuzatishni o‘chirib qo‘yish uchun bosing."</string>
-    <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wi-Fi orqali debagging yoqildi"</string>
-    <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Wi-Fi orqali debagging uzilishi uchun bosing"</string>
+    <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wi-Fi orqali debaging yoqildi"</string>
+    <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Wi-Fi orqali debaging uzilishi uchun bosing"</string>
     <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Uni faolsizlantirish uchun bosing."</string>
     <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Xavfsizlik sinovi rejimi yoqildi"</string>
     <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Xavfsizlik sinovi rejimini faolsizlantirish uchun zavod sozlamalariga qaytaring."</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad – markazga"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Avtomatik klik turi sozlamalari paneli"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Chap klik"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Oʻng klik"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Ikki marta bosish"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Tortish"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Aylantirish"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauza"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Joylashuvi"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> cheklangan turkumga joylandi"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index c07ff1d..947a9b4 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"truy cập dữ liệu cảm biến về dấu hiệu sinh tồn của bạn"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Thông báo"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"hiển thị thông báo"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Truy xuất nội dung cửa sổ"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Bật tính năng Khám phá bằng cách chạm"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Cho phép ứng dụng này sửa đổi bộ sưu tập ảnh của bạn."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"đọc vị trí từ bộ sưu tập phương tiện"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Dùng dữ liệu sinh trắc học"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Dùng dữ liệu sinh trắc học hoặc phương thức khóa màn hình"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh danh tính của bạn"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Căn giữa bằng bàn phím di chuyển"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Bảng cài đặt loại tự động nhấp"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Nhấp chuột trái"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Nhấp chuột phải"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Nhấp đúp"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Kéo"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Cuộn"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Tạm dừng"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Vị trí"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Đã đưa <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> vào bộ chứa BỊ HẠN CHẾ"</string>
diff --git a/core/res/res/values-w192dp/dimens_watch.xml b/core/res/res/values-w192dp/dimens_watch.xml
deleted file mode 100644
index c6bf767..0000000
--- a/core/res/res/values-w192dp/dimens_watch.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-<resources>
-    <!-- 16.7% of display size -->
-    <dimen name="base_error_dialog_top_padding">32dp</dimen>
-    <!-- 5.2% of display size -->
-    <dimen name="base_error_dialog_padding">10dp</dimen>
-    <!-- 20.83% of display size -->
-    <dimen name="base_error_dialog_bottom_padding">40dp</dimen>
-
-    <!--  watch's indeterminate progress bar dimens based on the current screen size -->
-    <dimen name="loader_horizontal_min_width_watch">67dp</dimen>
-    <dimen name="loader_horizontal_min_height_watch">15dp</dimen>
-</resources>
diff --git a/core/res/res/values-w216dp/dimens_watch.xml b/core/res/res/values-w216dp/dimens_watch.xml
deleted file mode 100644
index e14ce5e..0000000
--- a/core/res/res/values-w216dp/dimens_watch.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-
-<resources>
-    <!--  watch's indeterminate progress bar dimens based on the current screen size -->
-    <dimen name="loader_horizontal_min_width_watch">72dp</dimen>
-    <dimen name="loader_horizontal_min_height_watch">16dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/core/res/res/values-w228dp/dimens_watch.xml b/core/res/res/values-w228dp/dimens_watch.xml
deleted file mode 100644
index 3c62656..0000000
--- a/core/res/res/values-w228dp/dimens_watch.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2025 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.
-  -->
-<resources>
-    <!--  watch's indeterminate progress bar dimens based on the current screen size -->
-    <dimen name="loader_horizontal_min_width">76dp</dimen>
-    <dimen name="loader_horizontal_min_height">14dp</dimen>
-</resources>
diff --git a/core/res/res/values-w240dp/dimens_material.xml b/core/res/res/values-w240dp/dimens_material.xml
index e30aea4..bd26c8b 100644
--- a/core/res/res/values-w240dp/dimens_material.xml
+++ b/core/res/res/values-w240dp/dimens_material.xml
@@ -21,8 +21,4 @@
     <dimen name="screen_percentage_12">28.8dp</dimen>
     <dimen name="screen_percentage_15">36dp</dimen>
     <dimen name="screen_percentage_3646">87.5dp</dimen>
-
-    <!--  watch's indeterminate progress bar dimens based on the current screen size -->
-    <dimen name="progress_indeterminate_horizontal_min_width_watch">80dp</dimen>
-    <dimen name="progress_indeterminate_horizontal_min_height_watch">17dp</dimen>
 </resources>
diff --git a/core/res/res/values-watch/styles_device_defaults.xml b/core/res/res/values-watch/styles_device_defaults.xml
index eeb66e7..fb7dbb0 100644
--- a/core/res/res/values-watch/styles_device_defaults.xml
+++ b/core/res/res/values-watch/styles_device_defaults.xml
@@ -42,8 +42,5 @@
         <item name="indeterminateOnly">false</item>
         <!-- Use Wear Material3 ring shape as default determinate drawable -->
         <item name="progressDrawable">@drawable/progress_ring_watch</item>
-        <item name="indeterminateDrawable">@drawable/loader_horizontal_watch</item>
-        <item name="android:minWidth">@dimen/loader_horizontal_min_width_watch</item>
-        <item name="android:minHeight">@dimen/loader_horizontal_min_height_watch</item>
     </style>
 </resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index c746d3c..46c53eb 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"访问与您的生命体征相关的传感器数据"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"显示通知"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"检索窗口内容"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"检测您与之互动的窗口的内容。"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"启用触摸浏览"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"允许该应用修改您的照片收藏。"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"从您的媒体收藏中读取位置信息"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"允许该应用从您的媒体收藏中读取位置信息。"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物识别"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物识别或屏幕锁定凭据"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"验证是您本人在操作"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"方向键中心"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"自动点击类型设置面板"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"点击鼠标左键"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"右键点击"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"双击"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"拖动"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"滚动"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"暂停"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"位置"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已被放入受限存储分区"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index c6b952c..d013a47 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"存取與你生命體徵相關的感應器資料"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"顯示通知"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"擷取視窗內容"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"檢查你使用中的視窗內容。"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"開啟「輕觸探索」功能"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"允許應用程式修改你的相片集。"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"讀取媒體集的位置"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"允許應用程式讀取媒體集的位置。"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物識別"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物識別或螢幕鎖定"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"驗證是你本人"</string>
@@ -1409,7 +1449,7 @@
     <string name="carrier_app_notification_title" msgid="5815477368072060250">"已插入新的 SIM 卡"</string>
     <string name="carrier_app_notification_text" msgid="6567057546341958637">"輕按即可設定"</string>
     <string name="time_zone_change_notification_title" msgid="5232503069219193218">"你的時區已變更"</string>
-    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"你現在處於 <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
+    <string name="time_zone_change_notification_body" msgid="6135793674904665585">"目前所在時區為<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"設定時間"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"日期設定"</string>
     <string name="date_time_set" msgid="4603445265164486816">"設定"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"十字鍵中心鍵"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"自動點擊類型設定面板"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"按一下左鍵"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"按一下右鍵"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"連按兩下"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"拖曳"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"捲動"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"暫停"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"位置"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已納入受限制的儲存區"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index ca0402a..f1c9dcd 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"存取與你生命徵象相關的感應器資料"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"通知"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"顯示通知"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"擷取視窗內容"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"檢查你存取的視窗內容。"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"啟用輕觸探索功能"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"允許應用程式修改你的相片收藏。"</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"讀取你的媒體收藏的位置資訊"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"允許應用程式讀取你的媒體收藏的位置資訊。"</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"使用生物辨識功能"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"使用生物辨識或螢幕鎖定功能"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"驗證你的身分"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad 置中"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"自動點選類型設定面板"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"按滑鼠左鍵"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"按一下滑鼠右鍵"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"按兩下"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"拖曳"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"捲動"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"暫停"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"位置"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"已將「<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>」移入受限制的值區"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 96d6b57..5732cec 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -353,6 +353,14 @@
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"finyelela idatha yesizweli mayelana nezimpawu zakho ezibalulekile"</string>
     <string name="permgrouplab_notifications" msgid="5472972361980668884">"Izaziso"</string>
     <string name="permgroupdesc_notifications" msgid="4608679556801506580">"bonisa izaziso"</string>
+    <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) -->
+    <skip />
+    <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) -->
+    <skip />
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Thola okuqukethwe kwewindi"</string>
     <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string>
     <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Vula ukuhlola ngokuthinta"</string>
@@ -648,6 +656,38 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Ivumela uhlelo lwakho lokusebenza ukuthi lilungise iqoqo lakho lesithombe."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"funda izindawo kusukela kuqoqo lakho lemidiya"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Ivumela uhlelo lokusebenza ukuthi lifunde izindawo kusukela kuqoqo lakho lemidiya."</string>
+    <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) -->
+    <skip />
+    <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) -->
+    <skip />
+    <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) -->
+    <skip />
+    <!-- no translation found for permlab_face_tracking (2272048395128283324) -->
+    <skip />
+    <!-- no translation found for permdesc_face_tracking (2622783922311211866) -->
+    <skip />
+    <!-- no translation found for permlab_hand_tracking (6478233866595566940) -->
+    <skip />
+    <!-- no translation found for permdesc_hand_tracking (8639715900104966456) -->
+    <skip />
+    <!-- no translation found for permlab_head_tracking (1309731456372087270) -->
+    <skip />
+    <!-- no translation found for permdesc_head_tracking (231597390513699188) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) -->
+    <skip />
+    <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) -->
+    <skip />
+    <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) -->
+    <skip />
+    <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) -->
+    <skip />
+    <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) -->
+    <skip />
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Sebenzisa i-biometrics"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Sebenzisa i-biometrics noma ukukhiya isikrini"</string>
     <string name="biometric_dialog_default_title" msgid="55026799173208210">"Qinisekisa ukuthi nguwe"</string>
@@ -2247,14 +2287,10 @@
     <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Isikhungo se-Dpad"</string>
     <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Iphaneli yamasethingi ohlobo lokuchofoza ngokuzenzekelayo"</string>
     <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Chofoza kwesokunxele"</string>
-    <!-- no translation found for accessibility_autoclick_right_click (4353495816526181293) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_double_click (2103826849116176478) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_drag (1499559489796843224) -->
-    <skip />
-    <!-- no translation found for accessibility_autoclick_scroll (3499385943728726933) -->
-    <skip />
+    <string name="accessibility_autoclick_right_click" msgid="4353495816526181293">"Chofoza ngakwesokudla"</string>
+    <string name="accessibility_autoclick_double_click" msgid="2103826849116176478">"Chofoza kabili"</string>
+    <string name="accessibility_autoclick_drag" msgid="1499559489796843224">"Hudula"</string>
+    <string name="accessibility_autoclick_scroll" msgid="3499385943728726933">"Skrola"</string>
     <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Misa"</string>
     <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Indawo"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"I-<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ifakwe kubhakede LOKUKHAWULELWE"</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 6611178..d2c993ae 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -6934,6 +6934,8 @@
             <enum name="line" value="2" />
             <!-- Ring shape. -->
             <enum name="ring" value="3" />
+            <!-- ARC shape. -->
+            <enum name="arc" value="4"/>
         </attr>
         <!-- Inner radius of the ring expressed as a ratio of the ring's width. For instance,
              if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9.
@@ -6966,6 +6968,12 @@
         <attr name="opticalInsetRight" />
         <!-- Bottom optical inset. -->
         <attr name="opticalInsetBottom" />
+        <!-- Attributes that customize the stroke line cap. @hide -->
+        <attr name="strokeCap" format="enum">
+            <enum name="butt" value="0"/>
+            <enum name="round" value="1"/>
+            <enum name="square" value="2"/>
+        </attr>
     </declare-styleable>
 
     <!-- Used to specify the size of the shape for GradientDrawable. -->
diff --git a/core/res/res/values/dimens_watch.xml b/core/res/res/values/dimens_watch.xml
index 1984591..7462b73 100644
--- a/core/res/res/values/dimens_watch.xml
+++ b/core/res/res/values/dimens_watch.xml
@@ -52,7 +52,7 @@
     <dimen name="primary_content_alpha_device_default">0.38</dimen>
 
     <!--  values for wear material3 progress bar(progress indicator)  -->
-    <item name="progressbar_inner_radius_ratio" format="float" type="dimen">2.12</item>
+    <item name="progressbar_inner_radius_ratio" format="float" type="dimen">2</item>
     <dimen name="progressbar_thickness">8dp</dimen>
     <dimen name="progressbar_elevation">0.1dp</dimen>
 
@@ -61,8 +61,4 @@
     <dimen name="disabled_alpha_wear_material3">0.12</dimen>
     <!-- Alpha transparency applied to elements which are considered primary (e.g. primary text) -->
     <dimen name="primary_content_alpha_wear_material3">0.38</dimen>
-
-    <!--  watch's indeterminate progress bar dimens -->
-    <dimen name="loader_horizontal_min_width">68dp</dimen>
-    <dimen name="loader_horizontal_min_height">13dp</dimen>
 </resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 2c68bd2..26f0ab3 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -5648,6 +5648,8 @@
   <java-symbol type="id" name="accessibility_autoclick_pause_button" />
   <java-symbol type="id" name="accessibility_autoclick_position_layout" />
   <java-symbol type="id" name="accessibility_autoclick_position_button" />
+  <java-symbol type="drawable" name="accessibility_autoclick_pause" />
+  <java-symbol type="drawable" name="accessibility_autoclick_resume" />
 
   <!-- For HapticFeedbackConstants configurability defined at HapticFeedbackCustomization -->
   <java-symbol type="string" name="config_hapticFeedbackCustomizationFile" />
diff --git a/core/tests/coretests/src/android/content/pm/SystemFeaturesCacheTest.java b/core/tests/coretests/src/android/content/pm/SystemFeaturesCacheTest.java
index ce4aa42..8b513cb 100644
--- a/core/tests/coretests/src/android/content/pm/SystemFeaturesCacheTest.java
+++ b/core/tests/coretests/src/android/content/pm/SystemFeaturesCacheTest.java
@@ -21,12 +21,16 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.os.Parcel;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assume.assumeTrue;
+
 import android.util.ArrayMap;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -36,6 +40,19 @@
 
     private SystemFeaturesCache mCache;
 
+    private SystemFeaturesCache mOriginalSingletonCache;
+
+    @Before
+    public void setUp() {
+        mOriginalSingletonCache = SystemFeaturesCache.getInstance();
+    }
+
+    @After
+    public void tearDown() {
+        SystemFeaturesCache.clearInstance();
+        SystemFeaturesCache.setInstance(mOriginalSingletonCache);
+    }
+
     @Test
     public void testNoFeatures() throws Exception {
         SystemFeaturesCache cache = new SystemFeaturesCache(new ArrayMap<String, FeatureInfo>());
@@ -84,29 +101,57 @@
     }
 
     @Test
-    public void testParcel() throws Exception {
+    public void testGetAndSetFeatureVersions() throws Exception {
         ArrayMap<String, FeatureInfo> features = new ArrayMap<>();
         features.put(FEATURE_WATCH, createFeature(FEATURE_WATCH, 0));
         SystemFeaturesCache cache = new SystemFeaturesCache(features);
 
-        Parcel parcel = Parcel.obtain();
-        SystemFeaturesCache parceledCache;
-        try {
-            parcel.writeParcelable(cache, 0);
-            parcel.setDataPosition(0);
-            parceledCache = parcel.readParcelable(getClass().getClassLoader());
-        } finally {
-            parcel.recycle();
-        }
+        assertThat(cache.getSdkFeatureVersions().length)
+                .isEqualTo(PackageManager.SDK_FEATURE_COUNT);
 
-        assertThat(parceledCache.maybeHasFeature(FEATURE_WATCH, 0))
+        SystemFeaturesCache clonedCache = new SystemFeaturesCache(cache.getSdkFeatureVersions());
+        assertThat(cache.getSdkFeatureVersions()).isEqualTo(clonedCache.getSdkFeatureVersions());
+
+        assertThat(clonedCache.maybeHasFeature(FEATURE_WATCH, 0))
                 .isEqualTo(cache.maybeHasFeature(FEATURE_WATCH, 0));
-        assertThat(parceledCache.maybeHasFeature(FEATURE_PICTURE_IN_PICTURE, 0))
+        assertThat(clonedCache.maybeHasFeature(FEATURE_PICTURE_IN_PICTURE, 0))
                 .isEqualTo(cache.maybeHasFeature(FEATURE_PICTURE_IN_PICTURE, 0));
-        assertThat(parceledCache.maybeHasFeature("custom.feature", 0))
+        assertThat(clonedCache.maybeHasFeature("custom.feature", 0))
                 .isEqualTo(cache.maybeHasFeature("custom.feature", 0));
     }
 
+    @Test
+    public void testInvalidFeatureVersions() throws Exception {
+        // Raw feature version arrays must match the predefined SDK feature count.
+        int[] invalidFeatureVersions = new int[PackageManager.SDK_FEATURE_COUNT - 1];
+        assertThrows(
+                IllegalArgumentException.class,
+                () -> new SystemFeaturesCache(invalidFeatureVersions));
+    }
+
+    @Test
+    public void testSingleton() throws Exception {
+        ArrayMap<String, FeatureInfo> features = new ArrayMap<>();
+        features.put(FEATURE_WATCH, createFeature(FEATURE_WATCH, 0));
+        SystemFeaturesCache cache = new SystemFeaturesCache(features);
+
+        SystemFeaturesCache.clearInstance();
+        assertThrows(IllegalStateException.class, () -> SystemFeaturesCache.getInstance());
+
+        SystemFeaturesCache.setInstance(cache);
+        assertThat(SystemFeaturesCache.getInstance()).isEqualTo(cache);
+
+        assertThrows(
+                IllegalStateException.class,
+                () -> SystemFeaturesCache.setInstance(new SystemFeaturesCache(features)));
+    }
+
+    @Test
+    public void testSingletonAutomaticallySetWithFeatureEnabled() {
+        assumeTrue(android.content.pm.Flags.cacheSdkSystemFeatures());
+        assertThat(SystemFeaturesCache.getInstance()).isNotNull();
+    }
+
     private static FeatureInfo createFeature(String name, int version) {
         FeatureInfo fi = new FeatureInfo();
         fi.name = name;
diff --git a/core/tests/coretests/src/android/os/PerfettoTraceTest.java b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
index c5c2554..fb743d2 100644
--- a/core/tests/coretests/src/android/os/PerfettoTraceTest.java
+++ b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
@@ -77,6 +77,8 @@
     private static final String TAG = "PerfettoTraceTest";
     private static final String FOO = "foo";
     private static final String BAR = "bar";
+    private static final String TEXT_ABOVE_4K_SIZE =
+            new String(new char[8192]).replace('\0', 'a');
 
     private static final Category FOO_CATEGORY = new Category(FOO);
     private static final int MESSAGE = 1234567;
@@ -155,41 +157,6 @@
 
     @Test
     @RequiresFlagsEnabled(android.os.Flags.FLAG_PERFETTO_SDK_TRACING_V2)
-    public void testDebugAnnotationsWithLambda() throws Exception {
-        TraceConfig traceConfig = getTraceConfig(FOO);
-
-        PerfettoTrace.Session session = new PerfettoTrace.Session(true, traceConfig.toByteArray());
-
-        PerfettoTrace.instant(FOO_CATEGORY, "event").addArg("long_val", 123L).emit();
-
-        byte[] traceBytes = session.close();
-
-        Trace trace = Trace.parseFrom(traceBytes);
-
-        boolean hasTrackEvent = false;
-        boolean hasDebugAnnotations = false;
-        for (TracePacket packet: trace.getPacketList()) {
-            TrackEvent event;
-            if (packet.hasTrackEvent()) {
-                hasTrackEvent = true;
-                event = packet.getTrackEvent();
-
-                if (TrackEvent.Type.TYPE_INSTANT.equals(event.getType())
-                        && event.getDebugAnnotationsCount() == 1) {
-                    hasDebugAnnotations = true;
-
-                    List<DebugAnnotation> annotations = event.getDebugAnnotationsList();
-                    assertThat(annotations.get(0).getIntValue()).isEqualTo(123L);
-                }
-            }
-        }
-
-        assertThat(hasTrackEvent).isTrue();
-        assertThat(hasDebugAnnotations).isTrue();
-    }
-
-    @Test
-    @RequiresFlagsEnabled(android.os.Flags.FLAG_PERFETTO_SDK_TRACING_V2)
     public void testNamedTrack() throws Exception {
         TraceConfig traceConfig = getTraceConfig(FOO);
 
@@ -440,7 +407,6 @@
 
         boolean hasTrackEvent = false;
         boolean hasSourceLocation = false;
-
         for (TracePacket packet: trace.getPacketList()) {
             TrackEvent event;
             if (packet.hasTrackEvent()) {
@@ -467,6 +433,53 @@
 
     @Test
     @RequiresFlagsEnabled(android.os.Flags.FLAG_PERFETTO_SDK_TRACING_V2)
+    public void testProtoWithSlowPath() throws Exception {
+        TraceConfig traceConfig = getTraceConfig(FOO);
+
+        PerfettoTrace.Session session = new PerfettoTrace.Session(true, traceConfig.toByteArray());
+
+        PerfettoTrace.instant(FOO_CATEGORY, "event_proto")
+                .beginProto()
+                .beginNested(33L)
+                .addField(4L, 2L)
+                .addField(3, TEXT_ABOVE_4K_SIZE)
+                .endNested()
+                .addField(2001, "AIDL::IActivityManager")
+                .endProto()
+                .emit();
+
+        byte[] traceBytes = session.close();
+
+        Trace trace = Trace.parseFrom(traceBytes);
+
+        boolean hasTrackEvent = false;
+        boolean hasSourceLocation = false;
+        for (TracePacket packet: trace.getPacketList()) {
+            TrackEvent event;
+            if (packet.hasTrackEvent()) {
+                hasTrackEvent = true;
+                event = packet.getTrackEvent();
+
+                if (TrackEvent.Type.TYPE_INSTANT.equals(event.getType())
+                        && event.hasSourceLocation()) {
+                    SourceLocation loc = event.getSourceLocation();
+                    if (TEXT_ABOVE_4K_SIZE.equals(loc.getFunctionName())
+                            && loc.getLineNumber() == 2) {
+                        hasSourceLocation = true;
+                    }
+                }
+            }
+
+            collectInternedData(packet);
+        }
+
+        assertThat(hasTrackEvent).isTrue();
+        assertThat(hasSourceLocation).isTrue();
+        assertThat(mCategoryNames).contains(FOO);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(android.os.Flags.FLAG_PERFETTO_SDK_TRACING_V2)
     public void testProtoNested() throws Exception {
         TraceConfig traceConfig = getTraceConfig(FOO);
 
diff --git a/core/tests/coretests/src/android/view/AccessibilityInteractionControllerTest.java b/core/tests/coretests/src/android/view/AccessibilityInteractionControllerTest.java
index d91541f..d6426b0 100644
--- a/core/tests/coretests/src/android/view/AccessibilityInteractionControllerTest.java
+++ b/core/tests/coretests/src/android/view/AccessibilityInteractionControllerTest.java
@@ -25,6 +25,7 @@
 import android.app.Service;
 import android.app.UiAutomation;
 import android.graphics.Rect;
+import android.os.Process;
 import android.os.SystemClock;
 import android.text.TextUtils;
 import android.view.accessibility.AccessibilityEvent;
@@ -32,6 +33,7 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityTestActivity;
 import android.view.accessibility.AccessibilityWindowInfo;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -47,6 +49,7 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mockito;
 
 import java.util.List;
 import java.util.concurrent.TimeoutException;
@@ -136,6 +139,20 @@
         }
     }
 
+    @Test
+    public void getWindowSurfaceInfo_shouldCallCallbackWithWindowSurfaceDataFromVri()
+            throws Exception {
+        final ViewRootImpl vri = mButton.getRootView().getViewRootImpl();
+        IWindowSurfaceInfoCallback callback = Mockito.mock(IWindowSurfaceInfoCallback.class);
+
+        sInstrumentation.runOnMainSync(() ->
+                mAccessibilityInteractionController.getWindowSurfaceInfoClientThread(callback));
+        sInstrumentation.waitForIdleSync();
+
+        Mockito.verify(callback).provideWindowSurfaceInfo(
+                vri.getWindowFlags(), Process.myUid(), vri.getSurfaceControl());
+    }
+
     private void launchActivity() {
         final Object waitObject = new Object();
         final int[] location = new int[2];
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index a289df0..c40137f 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -16,8 +16,6 @@
 
 package android.view;
 
-import static android.app.UiModeManager.MODE_NIGHT_NO;
-import static android.app.UiModeManager.MODE_NIGHT_YES;
 import static android.util.SequenceUtils.getInitSeq;
 import static android.view.HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING;
 import static android.view.InputDevice.SOURCE_ROTARY_ENCODER;
@@ -69,10 +67,8 @@
 import android.annotation.NonNull;
 import android.app.Instrumentation;
 import android.app.UiModeManager;
-import android.app.UiModeManager.ForceInvertType;
 import android.content.Context;
 import android.graphics.ForceDarkType;
-import android.graphics.ForceDarkType.ForceDarkTypeDef;
 import android.graphics.Rect;
 import android.hardware.display.DisplayManagerGlobal;
 import android.os.Binder;
@@ -97,12 +93,9 @@
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import com.android.compatibility.common.util.ShellIdentityUtils;
-import com.android.compatibility.common.util.TestUtils;
 import com.android.cts.input.BlockingQueueEventVerifier;
 import com.android.window.flags.Flags;
 
-import com.google.common.truth.Expect;
-
 import org.hamcrest.Matcher;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -131,8 +124,6 @@
 
     @Rule
     public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
-    @Rule
-    public final Expect mExpect = Expect.create();
 
     private ViewRootImpl mViewRootImpl;
     private View mView;
@@ -1516,34 +1507,49 @@
     }
 
     @Test
-    @RequiresFlagsEnabled(FLAG_FORCE_INVERT_COLOR)
-    public void updateConfiguration_returnsExpectedForceDarkMode() {
-        waitForSystemNightModeActivated(true);
+    public void forceInvertOffDarkThemeOff_forceDarkModeDisabled() {
+        mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
+        ShellIdentityUtils.invokeWithShellPermissions(() -> {
+            Settings.Secure.putInt(
+                    sContext.getContentResolver(),
+                    Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
+                    /* value= */ 0
+            );
+            var uiModeManager = sContext.getSystemService(UiModeManager.class);
+            uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
+        });
 
-        verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ true,
-                UiModeManager.FORCE_INVERT_TYPE_DARK, ForceDarkType.FORCE_INVERT_COLOR_DARK);
-        verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ false,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
-        verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ true,
-                UiModeManager.FORCE_INVERT_TYPE_DARK, ForceDarkType.FORCE_INVERT_COLOR_DARK);
-        verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ false,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+        sInstrumentation.runOnMainSync(() ->
+                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
+        );
 
-        waitForSystemNightModeActivated(false);
-
-        verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ true,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
-        verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ false,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
-        verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ true,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
-        verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ false,
-                UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+        assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.NONE);
     }
 
     @Test
-    @EnableFlags(FLAG_FORCE_INVERT_COLOR)
+    public void forceInvertOnDarkThemeOff_forceDarkModeEnabled() {
+        mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
+        ShellIdentityUtils.invokeWithShellPermissions(() -> {
+            Settings.Secure.putInt(
+                    sContext.getContentResolver(),
+                    Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
+                    /* value= */ 1
+            );
+            var uiModeManager = sContext.getSystemService(UiModeManager.class);
+            uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
+        });
+
+        sInstrumentation.runOnMainSync(() ->
+                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
+        );
+
+        assertThat(mViewRootImpl.determineForceDarkType())
+                .isEqualTo(ForceDarkType.FORCE_INVERT_COLOR_DARK);
+    }
+
+    @Test
     public void forceInvertOffForceDarkOff_forceDarkModeDisabled() {
+        mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
         ShellIdentityUtils.invokeWithShellPermissions(() -> {
             Settings.Secure.putInt(
                     sContext.getContentResolver(),
@@ -1556,14 +1562,15 @@
         });
 
         sInstrumentation.runOnMainSync(() ->
-                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
+                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
+        );
 
         assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.NONE);
     }
 
     @Test
-    @EnableFlags(FLAG_FORCE_INVERT_COLOR)
     public void forceInvertOffForceDarkOn_forceDarkModeEnabled() {
+        mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
         ShellIdentityUtils.invokeWithShellPermissions(() -> {
             Settings.Secure.putInt(
                     sContext.getContentResolver(),
@@ -1575,7 +1582,8 @@
         });
 
         sInstrumentation.runOnMainSync(() ->
-                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
+                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
+        );
 
         assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.FORCE_DARK);
     }
@@ -1782,39 +1790,4 @@
                     () -> view.getViewTreeObserver().removeOnDrawListener(listener));
         }
     }
-
-    private void waitForSystemNightModeActivated(boolean active) {
-        ShellIdentityUtils.invokeWithShellPermissions(() ->
-                sInstrumentation.runOnMainSync(() -> {
-                    var uiModeManager = sContext.getSystemService(UiModeManager.class);
-                    uiModeManager.setNightModeActivated(active);
-                }));
-        sInstrumentation.waitForIdleSync();
-    }
-
-    private void verifyForceDarkType(boolean isAppInNightMode, boolean isForceInvertEnabled,
-            @ForceInvertType int expectedForceInvertType,
-            @ForceDarkTypeDef int expectedForceDarkType) {
-        var uiModeManager = sContext.getSystemService(UiModeManager.class);
-        ShellIdentityUtils.invokeWithShellPermissions(() -> {
-            uiModeManager.setApplicationNightMode(
-                    isAppInNightMode ? MODE_NIGHT_YES : MODE_NIGHT_NO);
-            Settings.Secure.putInt(
-                    sContext.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
-                    isForceInvertEnabled ? 1 : 0);
-        });
-
-        sInstrumentation.runOnMainSync(() ->
-                mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
-        try {
-            TestUtils.waitUntil("Waiting for force invert state changed",
-                    () -> (uiModeManager.getForceInvertState() == expectedForceInvertType));
-        } catch (Exception e) {
-            Log.e(TAG, "Unexpected error trying to apply force invert state. " + e);
-            e.printStackTrace();
-        }
-
-        mExpect.that(mViewRootImpl.determineForceDarkType()).isEqualTo(expectedForceDarkType);
-    }
 }
diff --git a/core/tests/coretests/src/android/view/ViewRootRectTrackerTest.java b/core/tests/coretests/src/android/view/ViewRootRectTrackerTest.java
new file mode 100644
index 0000000..c66e100
--- /dev/null
+++ b/core/tests/coretests/src/android/view/ViewRootRectTrackerTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.testng.AssertJUnit.assertEquals;
+
+import android.graphics.Rect;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.google.common.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Collections;
+import java.util.List;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ViewRootRectTrackerTest {
+    private ViewRootRectTracker mTracker;
+    private final List<Rect> mRects = Lists.newArrayList(new Rect(0, 0, 5, 5),
+            new Rect(5, 5, 10, 10));
+
+    @Before
+    public void setUp() {
+        mTracker = new ViewRootRectTracker(v -> Collections.emptyList());
+    }
+
+    @Test
+    public void setRootRectsAndComputeTest() {
+        mTracker.setRootRects(mRects);
+        mTracker.computeChanges();
+        assertEquals(mRects, mTracker.getLastComputedRects());
+    }
+
+    @Test
+    public void waitingForComputeChangesTest() {
+        mTracker.setRootRects(mRects);
+        assertTrue(mTracker.isWaitingForComputeChanges());
+        mTracker.computeChangedRects();
+        assertFalse(mTracker.isWaitingForComputeChanges());
+
+        View mockView = mock(View.class);
+        mTracker.updateRectsForView(mockView);
+        assertTrue(mTracker.isWaitingForComputeChanges());
+        mTracker.computeChangedRects();
+        assertFalse(mTracker.isWaitingForComputeChanges());
+    }
+}
diff --git a/graphics/java/android/framework_graphics.aconfig b/graphics/java/android/framework_graphics.aconfig
index a63cbee..fdbee3c 100644
--- a/graphics/java/android/framework_graphics.aconfig
+++ b/graphics/java/android/framework_graphics.aconfig
@@ -42,3 +42,11 @@
   description: "Add DISPLAY_BT2020 ColorSpace support"
   bug: "344038816"
 }
+
+flag {
+  name: "gradient_drawable_shape_rounded_cap"
+  is_fixed_read_only: true
+  namespace: "core_graphics"
+  description: "Make GradientDrawable support drawing ring with rounded stroke cap."
+  bug: "380000245"
+}
diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java
index 65854dd..ef6b728 100644
--- a/graphics/java/android/graphics/HardwareRenderer.java
+++ b/graphics/java/android/graphics/HardwareRenderer.java
@@ -658,6 +658,13 @@
     }
 
     /**
+     * @hide
+     */
+    public void addObserver(long nativeObserver) {
+        nAddObserver(mNativeProxy, nativeObserver);
+    }
+
+    /**
      * TODO: Public API this?
      *
      * @hide
@@ -667,6 +674,13 @@
     }
 
     /**
+     * @hide
+     */
+    public void removeObserver(long nativeObserver) {
+        nRemoveObserver(mNativeProxy, nativeObserver);
+    }
+
+    /**
      * Sets the desired color mode on this renderer. Whether or not the actual rendering
      * will use the requested colorMode depends on the hardware support for such rendering.
      *
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index 29d033e..ff1dc93 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -16,7 +16,11 @@
 
 package android.graphics.drawable;
 
+import static com.android.graphics.flags.Flags.FLAG_GRADIENT_DRAWABLE_SHAPE_ROUNDED_CAP;
+import static com.android.graphics.flags.Flags.gradientDrawableShapeRoundedCap;
+
 import android.annotation.ColorInt;
+import android.annotation.FlaggedApi;
 import android.annotation.FloatRange;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -125,8 +129,14 @@
      */
     public static final int RING = 3;
 
+    /**
+     * Shape is an arc.
+     */
+    @FlaggedApi(FLAG_GRADIENT_DRAWABLE_SHAPE_ROUNDED_CAP)
+    public static final int ARC = 4;
+
     /** @hide */
-    @IntDef({RECTANGLE, OVAL, LINE, RING})
+    @IntDef({RECTANGLE, OVAL, LINE, RING, ARC})
     @Retention(RetentionPolicy.SOURCE)
     public @interface Shape {}
 
@@ -167,6 +177,17 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface RadiusType {}
 
+    private static final int BUTT = 0;
+
+    private static final int ROUND = 1;
+
+    private static final int SQUARE = 2;
+
+    /** @hide */
+    @IntDef({BUTT, ROUND, SQUARE})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface StrokeCap {}
+
     private static final float DEFAULT_INNER_RADIUS_RATIO = 3.0f;
     private static final float DEFAULT_THICKNESS_RATIO = 9.0f;
 
@@ -191,6 +212,8 @@
     private boolean mMutated;
     private Path mRingPath;
     private boolean mPathIsDirty = true;
+    private Path mArcPath;
+    private Path mArcOutlinePath;
 
     /** Current gradient radius, valid when {@link #mGradientIsDirty} is false. */
     private float mGradientRadius;
@@ -850,6 +873,55 @@
                 }
                 break;
             }
+            case ARC:
+                if (gradientDrawableShapeRoundedCap()) {
+                    // TODO(b/394988176): Consider applying ARC drawing logic to RING shape.
+                    float centerX = mRect.centerX();
+                    float centerY = mRect.centerY();
+                    float thickness =
+                            st.mThickness != -1 ? st.mThickness
+                                    : mRect.width() / st.mThicknessRatio;
+                    float radius = st.mInnerRadius != -1 ? st.mInnerRadius
+                            : mRect.width() / st.mInnerRadiusRatio;
+                    radius -= thickness;
+                    float sweep = st.mUseLevelForShape ? (360.0f * getLevel() / 10000.0f) : 360f;
+                    mRect.set(centerX - radius, centerY - radius, centerX + radius,
+                            centerY + radius);
+
+                    // Prepare paint. Set style to STROKE for purpose of drawing line ARC.
+                    mFillPaint.setStyle(Paint.Style.STROKE);
+                    mFillPaint.setStrokeWidth(thickness);
+                    mFillPaint.setStrokeCap(getStrokeLineCapForPaint(st.mStrokeCap));
+                    canvas.drawArc(mRect, 0.0f, sweep,  /* useCenter= */ false, mFillPaint);
+
+                    if (haveStroke) {
+                        if (mArcPath == null) {
+                            mArcPath = new Path();
+                        } else {
+                            mArcPath.reset();
+                        }
+                        if (mArcOutlinePath == null) {
+                            mArcOutlinePath = new Path();
+                        } else {
+                            mArcOutlinePath.reset();
+                        }
+                        if (sweep == 360f) {
+                            mArcPath.addOval(mRect, Path.Direction.CW);
+                        } else {
+                            mArcPath.arcTo(mRect, 0.0f, sweep, /* forceMoveTo= */ false);
+                        }
+
+                        // The arc path doesn't have width. So, to get the outline of the result arc
+                        // shape, we need to apply the paint effect to the path; then use the
+                        // output as the result outline.
+                        mFillPaint.getFillPath(mArcPath, mArcOutlinePath);
+                        canvas.drawPath(mArcOutlinePath, mStrokePaint);
+                    }
+
+                    // Restore to FILL
+                    mFillPaint.setStyle(Paint.Style.FILL);
+                    break;
+                }
             case RING:
                 Path path = buildRing(st);
                 canvas.drawPath(path, mFillPaint);
@@ -993,6 +1065,36 @@
     }
 
     /**
+     * Return current drawable's stroke line cap. Note that this is only respected when drawable is
+     * {@link Shape#ARC}.
+     *
+     * @return the {@link StrokeCap} of current drawable.
+     * @attr ref android.R.styleable#GradientDrawable_strokeCap
+     * @see #setStrokeCap(int)
+     *
+     * @hide
+     */
+    @StrokeCap
+    public int getStrokeCap() {
+        return mGradientState.mStrokeCap;
+    }
+
+    /**
+     * Configure the stroke line cap type that drawable will use while drawing. Note that this is
+     * only respected when drawable is {@link Shape#ARC}.
+     *
+     * @param strokeCapType the stroke line cap type that the drawable will use while drawing.
+     * @attr ref android.R.styleable#GradientDrawable_strokeCap
+     * @see #getStrokeCap
+     *
+     * @hide
+     */
+    public void setStrokeCap(@StrokeCap int strokeCapType) {
+        mGradientState.mStrokeCap = strokeCapType;
+        invalidateSelf();
+    }
+
+    /**
      * Configure the padding of the gradient shape
      * @param left Left padding of the gradient shape
      * @param top Top padding of the gradient shape
@@ -1066,6 +1168,15 @@
         return ringPath;
     }
 
+    private Paint.Cap getStrokeLineCapForPaint(@StrokeCap int strokeLineCap) {
+        return switch (strokeLineCap) {
+            case BUTT -> Paint.Cap.BUTT;
+            case ROUND -> Paint.Cap.ROUND;
+            case SQUARE -> Paint.Cap.SQUARE;
+            default -> Paint.Cap.SQUARE;
+        };
+    }
+
     /**
      * Changes this drawable to use a single color instead of a gradient.
      * <p>
@@ -1484,7 +1595,7 @@
         state.mShape = a.getInt(R.styleable.GradientDrawable_shape, state.mShape);
         state.mDither = a.getBoolean(R.styleable.GradientDrawable_dither, state.mDither);
 
-        if (state.mShape == RING) {
+        if (state.mShape == RING || state.mShape == ARC) {
             state.mInnerRadius = a.getDimensionPixelSize(
                     R.styleable.GradientDrawable_innerRadius, state.mInnerRadius);
 
@@ -1503,6 +1614,9 @@
 
             state.mUseLevelForShape = a.getBoolean(
                     R.styleable.GradientDrawable_useLevel, state.mUseLevelForShape);
+
+            state.mStrokeCap = a.getInt(
+                    R.styleable.GradientDrawable_strokeCap, state.mStrokeCap);
         }
 
         final int tintMode = a.getInt(R.styleable.GradientDrawable_tintMode, -1);
@@ -2045,6 +2159,9 @@
         public int mInnerRadius = -1;
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 124050218)
         public int mThickness = -1;
+        @UnsupportedAppUsage(trackingBug = 380000245)
+        @StrokeCap public int mStrokeCap = ROUND;
+
         public boolean mDither = false;
         public Insets mOpticalInsets = Insets.NONE;
 
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index 5444c26..b4d594f 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Apphandvatsel"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Appikoon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Volskerm"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Rekenaarmodus"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Verdeelde skerm"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Meer"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Sweef"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Verander aspekverhouding"</string>
     <string name="close_text" msgid="4986518933445178928">"Maak toe"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Maak kieslys toe"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Maak kieslys oop"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimeer skerm"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Verander grootte"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App kan nie hierheen geskuif word nie"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Verander grootte van linkerkantse venster"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Verander grootte van regterkantse venster"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimeer of stel venstergrootte terug"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Gaan na deelskermmodus"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Gaan na werkskermvenstermodus"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Verander grootte van linkerkantse venster"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Verander grootte van regterkantse venster"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimeer of stel venstergrootte terug"</string>
diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml
index f3bc29d..9ec8001 100644
--- a/libs/WindowManager/Shell/res/values-am/strings.xml
+++ b/libs/WindowManager/Shell/res/values-am/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"የመተግበሪያ መያዣ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"የመተግበሪያ አዶ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ሙሉ ማያ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"የዴስክቶፕ ሁነታ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"የተከፈለ ማያ ገፅ"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ተጨማሪ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ተንሳፋፊ"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ምጥጥነ ገፅታ ለውጥ"</string>
     <string name="close_text" msgid="4986518933445178928">"ዝጋ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ምናሌ ዝጋ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"ምናሌን ክፈት"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"የማያ ገጹ መጠን አሳድግ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"መጠን ቀይር"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"መተግበሪያ ወደዚህ መንቀሳቀስ አይችልም"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"የመተግበሪያ መስኮትን ወደ ግራ መጠን ቀይር"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"የመተግበሪያ መስኮትን ወደ ቀኝ መጠን ቀይር"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ወደ የተከፈለ ማያ ገፅ ሁነታ ግባ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ወደ የዴስክቶፕ መስኮት ሁነታ ግባ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"መስኮትን ወደ ግራ መጠን ቀይር"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"መስኮትን ወደ ቀኝ መጠን ቀይር"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml
index 60f27cf..1680922 100644
--- a/libs/WindowManager/Shell/res/values-ar/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ar/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"مقبض التطبيق"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"رمز التطبيق"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ملء الشاشة"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"وضع سطح المكتب"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"العرض المخصّص للكمبيوتر المكتبي"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"تقسيم الشاشة"</string>
     <string name="more_button_text" msgid="3655388105592893530">"المزيد"</string>
     <string name="float_button_text" msgid="9221657008391364581">"نافذة عائمة"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"تغيير نسبة العرض إلى الارتفاع"</string>
     <string name="close_text" msgid="4986518933445178928">"إغلاق"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"إغلاق القائمة"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"فتح القائمة"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"‫<xliff:g id="APP_NAME">%1$s</xliff:g> (العرض المخصّص للكمبيوتر المكتبي)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"تكبير الشاشة إلى أقصى حدّ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"تغيير الحجم"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"لا يمكن نقل التطبيق إلى هنا"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"تغيير حجم نافذة التطبيق بمحاذاتها إلى اليمين"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"تغيير حجم نافذة التطبيق بمحاذاتها إلى اليسار"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"تكبير حجم النافذة أو استعادته"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"تفعيل \"وضع تقسيم الشاشة\""</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"تفعيل وضع عرض المحتوى في النافذة الحالية على سطح المكتب"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"فتح القائمة"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"تفعيل \"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>\""</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغيير حجم النافذة بمحاذاتها إلى اليمين"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغيير حجم النافذة بمحاذاتها إلى اليسار"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"تكبير حجم النافذة أو استعادته"</string>
diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml
index 0f43347..05860c2 100644
--- a/libs/WindowManager/Shell/res/values-as/strings.xml
+++ b/libs/WindowManager/Shell/res/values-as/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"এপৰ হেণ্ডেল"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"এপৰ চিহ্ন"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"সম্পূৰ্ণ স্ক্ৰীন"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ডেস্কটপ ম’ড"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"বিভাজিত স্ক্ৰীন"</string>
     <string name="more_button_text" msgid="3655388105592893530">"অধিক"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ওপঙা"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"আকাৰৰ অনুপাত সলনি কৰক"</string>
     <string name="close_text" msgid="4986518933445178928">"বন্ধ কৰক"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"মেনু বন্ধ কৰক"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"মেনু খোলক"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"স্ক্ৰীন মেক্সিমাইজ কৰক"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"আকাৰ সলনি কৰক"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ইয়ালৈ এপ্‌টো আনিব নোৱাৰি"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"বাওঁফালে এপ্‌ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"সোঁফালে এপ্‌ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"বিভাজিত-স্ক্ৰীন ম’ড দিয়ক"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ডেস্কটপ ৱিণ্ড’ইং ম’ড দিয়ক"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"সোঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"বাওঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml
index aced354..ea64749 100644
--- a/libs/WindowManager/Shell/res/values-az/strings.xml
+++ b/libs/WindowManager/Shell/res/values-az/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Tətbiq ləqəbi"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Tətbiq ikonası"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Masaüstü Rejimi"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Ardı"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Üzən pəncərə"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Tərəflər nisbətini dəyişin"</string>
     <string name="close_text" msgid="4986518933445178928">"Bağlayın"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menyunu bağlayın"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menyunu açın"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranı maksimum böyüdün"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ölçüsünü dəyişin"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Tətbiqi bura köçürmək mümkün deyil"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Tətbiq pəncərəsinin ölçüsünü sola dəyişin"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Tətbiq pəncərəsinin ölçüsünü sağa dəyişin"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Bölünmüş ekran rejiminə daxil olun"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Masaüstü pəncərə rejiminə daxil olun"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pəncərə ölçüsünü sola dəyişin"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pəncərə ölçüsünü sağa dəyişin"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string>
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
index b07c612..deec04f 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Preko celog ekrana"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Režim za računare"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Prikaz za računare"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Podeljeni ekran"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Još"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Plutajuće"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Promeni razmeru"</string>
     <string name="close_text" msgid="4986518933445178928">"Zatvorite"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite meni"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otvorite meni"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz za računare)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Povećaj ekran"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Promeni veličinu"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacija ne može da se premesti ovde"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promenite veličinu prozora aplikacije nalevo"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promenite veličinu prozora aplikacije nadesno"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Uvećajte ili vratite veličinu prozora"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Uđite u režim podeljenog ekrana"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Uđite u režim prozora na računaru"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvorite Meni"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Unesite <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promenite veličinu prozora nalevo"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promenite veličinu prozora nadesno"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Uvećajte ili vratite veličinu prozora"</string>
diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml
index 4c2950b..d26c37b 100644
--- a/libs/WindowManager/Shell/res/values-be/strings.xml
+++ b/libs/WindowManager/Shell/res/values-be/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Маркер праграмы"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Значок праграмы"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"На ўвесь экран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Рэжым працоўнага стала"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Версія для камп’ютараў"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Падзяліць экран"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Яшчэ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Зрабіць рухомым акном"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Змяніць суадносіны бакоў"</string>
     <string name="close_text" msgid="4986518933445178928">"Закрыць"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Закрыць меню"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Адкрыць меню"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (версія для камп’ютараў)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Разгарнуць на ўвесь экран"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Змяніць памер"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Нельга перамясціць сюды праграму"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Змяніць памер акна (злева)"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Змяніць памер акна (справа)"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Разгарнуць акно ці аднавіць яго памер"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Уключыць рэжым падзеленага экрана"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Уключыць рэжым вокнаў працоўнага стала"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Адкрыць меню"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Увесці \"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>\""</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змяніць памер акна і перамясціць да левага краю"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змяніць памер акна і перамясціць да правага краю"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Разгарнуць акно ці аднавіць яго памер"</string>
diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml
index fcc4d83..0bb5960 100644
--- a/libs/WindowManager/Shell/res/values-bg/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bg/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Манипулатор за приложението"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Икона на приложението"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Цял екран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Режим за настолни компютри"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Разделяне на екрана"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Още"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Плаващо"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промяна на съотношението"</string>
     <string name="close_text" msgid="4986518933445178928">"Затваряне"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Затваряне на менюто"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Отваряне на менюто"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Увеличаване на екрана"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Преоразмеряване"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Приложението не може да бъде преместено тук"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Преоразмеряване на прозореца на приложението наляво"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Преоразмеряване на прозореца на приложението надясно"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Увеличаване или възстановяване на размера на прозореца"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Активиране на режима за разделен екран"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Активиране на режима за настолни компютри"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Преоразмеряване на прозореца наляво"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Преоразмеряване на прозореца надясно"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увеличаване или възстановяване на размера на прозореца"</string>
diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml
index b2c435e..ae63e04 100644
--- a/libs/WindowManager/Shell/res/values-bn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bn/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"অ্যাপের হ্যান্ডেল"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"অ্যাপ আইকন"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ফুলস্ক্রিন"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ডেস্কটপ মোড"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"স্প্লিট স্ক্রিন"</string>
     <string name="more_button_text" msgid="3655388105592893530">"আরও"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ফ্লোট"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"অ্যাস্পেক্ট রেশিও পরিবর্তন করুন"</string>
     <string name="close_text" msgid="4986518933445178928">"বন্ধ করুন"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"\'মেনু\' বন্ধ করুন"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"মেনু খুলুন"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"স্ক্রিন বড় করুন"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ছোট বড় করুন"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"অ্যাপটি এখানে সরানো যাবে না"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"বাঁদিকে অ্যাপ উইন্ডো রিসাইজ করুন"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ডানদিকে অ্যাপ উইন্ডো রিসাইজ করুন"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"স্প্লিট স্ক্রিন মোডে প্রবেশ করুন"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ডেস্কটপ উইন্ডোইং মোডে প্রবেশ করুন"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"বাঁদিকে উইন্ডো রিসাইজ করুন"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ডানদিকে উইন্ডো রিসাইজ করুন"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string>
diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml
index 8c1619c..b7c76b5 100644
--- a/libs/WindowManager/Shell/res/values-bs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bs/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Ručica aplikacije"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Cijeli ekran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Način rada radne površine"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Prikaz na računalu"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Podijeljeni ekran"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Više"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Lebdeći"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Promjena formata slike"</string>
     <string name="close_text" msgid="4986518933445178928">"Zatvaranje"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zatvaranje menija"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otvaranje menija"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz na računalu)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimiziraj ekran"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Promijeni veličinu"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ne možete premjestiti aplikaciju ovdje"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promjena veličine prozora aplikacije lijevo"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promjena veličine prozora aplikacije desno"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimiziranje ili vraćanje veličine prozora"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pokretanje načina rada podijeljenog ekrana"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pokretanje načina rada s prozorima na radnoj površini"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvorite izbornik"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Unesite <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promjena veličine prozora i poravnanje lijevo"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promjena veličine prozora i poravnanje desno"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziranje ili vraćanje veličine prozora"</string>
diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml
index 37802f4..80dd380 100644
--- a/libs/WindowManager/Shell/res/values-ca/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ca/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Identificador de l\'aplicació"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icona de l\'aplicació"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Mode d\'escriptori"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Més"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flotant"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Canvia la relació d\'aspecte"</string>
     <string name="close_text" msgid="4986518933445178928">"Tanca"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Tanca el menú"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Obre el menú"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximitza la pantalla"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Canvia la mida"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"L\'aplicació no es pot moure aquí"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Canvia la mida de la finestra de l\'aplicació a l\'esquerra"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Canvia la mida de la finestra de l\'aplicació a la dreta"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximitza o restaura la mida de la finestra"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entra al mode de pantalla dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entra al mode d\'enfinestrament a l\'escriptori"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Canvia la mida de la finestra a l\'esquerra"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Canvia la mida de la finestra a la dreta"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximitza o restaura la mida de la finestra"</string>
diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml
index c4514eb..e47d1f6 100644
--- a/libs/WindowManager/Shell/res/values-cs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-cs/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Popisovač aplikace"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikace"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Celá obrazovka"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Režim počítače"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Zobrazení na počítači"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Rozdělená obrazovka"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Více"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Plovoucí"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Změnit poměr stran"</string>
     <string name="close_text" msgid="4986518933445178928">"Zavřít"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zavřít nabídku"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otevřít nabídku"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (zobrazení na počítači)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximalizovat obrazovku"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Změnit velikost"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikaci sem nelze přesunout"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Změnit velikost okna aplikace vlevo"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Změnit velikost okna aplikace vpravo"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximalizovat nebo obnovit velikost okna"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Přechod do režimu rozdělené obrazovky"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Přejít do režimu okenního systému pro počítače"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otevřít nabídku"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Přejít do režimu <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Přichytit okno vlevo"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Přichytit okno vpravo"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovat nebo obnovit velikost okna"</string>
diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml
index e662a16..c465ce3 100644
--- a/libs/WindowManager/Shell/res/values-da/strings.xml
+++ b/libs/WindowManager/Shell/res/values-da/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Apphåndtag"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Fuld skærm"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Computertilstand"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Opdelt skærm"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mere"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Svævende"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Skift billedformat"</string>
     <string name="close_text" msgid="4986518933445178928">"Luk"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Luk menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Åbn menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimér skærm"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Tilpas størrelse"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Apps kan ikke flyttes hertil"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Juster størrelsen på appvinduet til venstre"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Juster størrelsen på appvinduet til højre"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimer eller gendan vinduesstørrelse"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Åbn opdelt skærm"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Åbn tilstanden for vinduer på computeren"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Juster størrelsen på vinduet til venstre"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Juster størrelsen på vinduet til højre"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gendan vinduesstørrelse"</string>
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index 7b21719..567dd7a 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"App-Ziehpunkt"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App-Symbol"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Vollbild"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktopmodus"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Splitscreen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mehr"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Frei schwebend"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Seitenverhältnis ändern"</string>
     <string name="close_text" msgid="4986518933445178928">"Schließen"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menü schließen"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menü öffnen"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Bildschirm maximieren"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Größe ändern"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Die App kann nicht hierher verschoben werden"</string>
@@ -142,13 +144,15 @@
     <string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Wiederherstellen"</string>
     <string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Links andocken"</string>
     <string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Rechts andocken"</string>
-    <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Größe des linken App-Fensters anpassen"</string>
-    <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Größe des rechten App-Fensters anpassen"</string>
+    <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Größe des App-Fensters links anpassen"</string>
+    <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Größe des App-Fensters rechts anpassen"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Fenstergröße maximieren oder wiederherstellen"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Splitscreen-Modus aktivieren"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Desktop-Fenstermodus aktivieren"</string>
-    <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Fenstergröße links anpassen"</string>
-    <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Fenstergröße rechts anpassen"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
+    <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Fenstergröße nach links anpassen"</string>
+    <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Fenstergröße nach rechts anpassen"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Fenstergröße maximieren oder wiederherstellen"</string>
     <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Fenstergröße maximieren oder wiederherstellen"</string>
     <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-Fenster minimieren"</string>
diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml
index eb45a31..489a4ce 100644
--- a/libs/WindowManager/Shell/res/values-el/strings.xml
+++ b/libs/WindowManager/Shell/res/values-el/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Λαβή εφαρμογής"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Εικονίδιο εφαρμογής"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Πλήρης οθόνη"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Λειτουργία επιφάνειας εργασίας"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Διαχωρισμός οθόνης"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Περισσότερα"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Κινούμενο"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Αλλαγή λόγου διαστάσεων"</string>
     <string name="close_text" msgid="4986518933445178928">"Κλείσιμο"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Κλείσιμο μενού"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Άνοιγμα μενού"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Μεγιστοποίηση οθόνης"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Αλλαγή μεγέθους"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Δεν είναι δυνατή η μετακίνηση της εφαρμογής εδώ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Αλλαγή μεγέθους παραθύρου εφαρμογής αριστερά"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Αλλαγή μεγέθους παραθύρου εφαρμογής δεξιά"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Είσοδος στη λειτουργία διαχωρισμού οθόνης"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Είσοδος στη λειτουργία προσαρμογής σε παράθυρο υπολογιστή"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Αλλαγή μεγέθους παραθύρου προς τα αριστερά"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Αλλαγή μεγέθους παραθύρου προς τα δεξιά"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
index 8dc27da..1a3d422 100644
--- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"App handle"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"More"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
     <string name="close_text" msgid="4986518933445178928">"Close"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Open menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Enter split-screen mode"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Enter desktop windowing mode"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
index 20d141e..e552f95 100644
--- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"App handle"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App Icon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop Mode"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Desktop View"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"More"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
     <string name="close_text" msgid="4986518933445178928">"Close"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Close Menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Open Menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Desktop View)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximize Screen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximize or restore window size"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Enter split screen mode"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Enter desktop windowing mode"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Open Menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Enter <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximize or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
index 8dc27da..1a3d422 100644
--- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"App handle"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"More"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
     <string name="close_text" msgid="4986518933445178928">"Close"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Open menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Enter split-screen mode"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Enter desktop windowing mode"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
index 8dc27da..1a3d422 100644
--- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"App handle"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"More"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Change aspect ratio"</string>
     <string name="close_text" msgid="4986518933445178928">"Close"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Open menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximise screen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Resize"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"App can\'t be moved here"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximise or restore window size"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Enter split-screen mode"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Enter desktop windowing mode"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string>
diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
index 24c2bed..93aa1b6 100644
--- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Controlador de la app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ícono de la app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo de escritorio"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Más"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar relación de aspecto"</string>
     <string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir el menú"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar el tamaño"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"No se puede mover la app aquí"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ajustar el tamaño de la ventana de la app hacia la izquierda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ajustar el tamaño de la ventana de la app hacia la derecha"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar o restablecer el tamaño de la ventana"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Activar el modo de pantalla dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Ingresar al modo ventana de computadora"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ajustar el tamaño de la ventana hacia la izquierda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ajustar el tamaño de la ventana hacia la derecha"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restablecer el tamaño de la ventana"</string>
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index dd9635d..27c5b80 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Controlador de la aplicación"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icono de la aplicación"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo Escritorio"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Más"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar relación de aspecto"</string>
     <string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir menú"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"La aplicación no se puede mover aquí"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Cambiar tamaño de la ventana de la aplicación izquierda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Cambiar tamaño de la ventana de la aplicación derecha"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar o restaurar tamaño de la ventana"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Activar modo Pantalla dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Activar modo Escritorio basado en ventanas"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Cambiar tamaño de la ventana a la izquierda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Cambiar tamaño de la ventana a la derecha"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restaurar tamaño de la ventana"</string>
diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml
index 56b5f0b..c8ab83e 100644
--- a/libs/WindowManager/Shell/res/values-et/strings.xml
+++ b/libs/WindowManager/Shell/res/values-et/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Rakenduse element"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Rakenduse ikoon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Täisekraan"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Lauaarvuti režiim"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Jagatud ekraanikuva"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Rohkem"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Hõljuv"</string>
@@ -132,11 +133,12 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Kuvasuhte muutmine"</string>
     <string name="close_text" msgid="4986518933445178928">"Sule"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Sule menüü"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Ava menüü"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Kuva täisekraanil"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Suuruse muutmine"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Rakendust ei saa siia teisaldada"</string>
-    <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Kaasahaarav"</string>
+    <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Mahuta"</string>
     <string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Taasta"</string>
     <string name="desktop_mode_maximize_menu_maximize_button_text" msgid="3090199175564175845">"Maksimeeri"</string>
     <string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Taasta"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Rakenduse akna suuruse muutmine vasakul"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Rakenduse akna suuruse muutmine paremal"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Akna suuruse maksimeerimine või taastamine"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Poolitatud ekraani režiimi sisenemine"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Töölaua akende kuvamise režiimi sisenemine"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Akna suuruse muutmine, vasakule"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Akna suuruse muutmine, paremale"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Akna suuruse maksimeerimine või taastamine"</string>
diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml
index 9898af0..abd92ab 100644
--- a/libs/WindowManager/Shell/res/values-eu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-eu/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Aplikazioaren kontrol-puntua"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Aplikazioaren ikonoa"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pantaila osoa"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Ordenagailuetarako modua"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Pantaila zatitzea"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Gehiago"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Leiho gainerakorra"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Aldatu aspektu-erlazioa"</string>
     <string name="close_text" msgid="4986518933445178928">"Itxi"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Itxi menua"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Ireki menua"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Handitu pantaila"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Aldatu tamaina"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikazioa ezin da hona ekarri"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Aldatu aplikazioaren leihoaren tamaina eta eraman ezkerrera"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Aldatu aplikazioaren leihoaren tamaina eta eraman eskuinera"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizatu edo leheneratu leihoaren tamaina"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Sartu pantaila zatituaren moduan"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Sartu ordenagailuan leihoak erabiltzeko moduan"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Aldatu leihoaren tamaina eta eraman ezkerrera"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Aldatu leihoaren tamaina eta eraman eskuinera"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizatu edo leheneratu leihoaren tamaina"</string>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index 22ef61f..651635a 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"دستگیره برنامه"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"نماد برنامه"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"تمام‌صفحه"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"حالت رایانه"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"صفحهٔ دونیمه"</string>
     <string name="more_button_text" msgid="3655388105592893530">"بیشتر"</string>
     <string name="float_button_text" msgid="9221657008391364581">"شناور"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"تغییر نسبت ابعادی"</string>
     <string name="close_text" msgid="4986518933445178928">"بستن"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"بستن منو"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"باز کردن منو"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"بزرگ کردن صفحه"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"تغییر اندازه"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"برنامه را نمی‌توان به اینجا منتقل کرد"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"تغییر اندازه پنجره برنامه در چپ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"تغییر اندازه پنجره برنامه در راست"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"بیشینه‌سازی یا بازیابی اندازه پنجره"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ورود به حالت صفحه تقسیم‌شده"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"رفتن به حالت پردازش پنجره‌ای میز کار"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغییر اندازه پنجره به چپ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغییر اندازه پنجره به راست"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"بیشینه‌سازی یا بازیابی اندازه پنجره"</string>
diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml
index b23c833..47e9ea3 100644
--- a/libs/WindowManager/Shell/res/values-fi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fi/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Sovelluksen tunnus"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Sovelluskuvake"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Koko näyttö"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Työpöytätila"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Jaettu näyttö"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Lisää"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Kelluva ikkuna"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Vaihda kuvasuhdetta"</string>
     <string name="close_text" msgid="4986518933445178928">"Sulje"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Sulje valikko"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Avaa valikko"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Suurenna näyttö"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Muuta kokoa"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Sovellusta ei voi siirtää tänne"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Muuta vasemmanpuoleisen sovellusikkunan kokoa"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Muuta oikeanpuoleisen sovellusikkunan kokoa"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Suurenna ikkuna tai palauta ikkunan koko"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Avaa kahtia jaettu näyttö"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Siirry työpöydän ikkunointitilaan"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Muuta vasemmanpuoleisen ikkunan kokoa"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Muuta vasemmanpuoleisen ikkunan kokoa"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Suurenna ikkuna tai palauta ikkunan koko"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
index 34b5b0a..dc2025f 100644
--- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icône de l\'appli"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Plein écran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Mode Bureau"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Affichage sur un ordinateur de bureau"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Écran divisé"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Plus"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flottant"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Modifier les proportions"</string>
     <string name="close_text" msgid="4986518933445178928">"Fermer"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Ouvrir le menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (affichage sur un ordinateur de bureau)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Agrandir l\'écran"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionner"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Impossible de déplacer l\'appli ici"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionner la fenêtre de l\'appli à gauche"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionner la fenêtre de l\'appli à droite"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Agrandir ou restaurer la taille de la fenêtre"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrer en mode Écran divisé"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrer en mode Fenêtrage bureau"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Ouvrir le menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Entrez <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml
index be41bba..038a90d 100644
--- a/libs/WindowManager/Shell/res/values-fr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icône d\'application"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Plein écran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Mode ordinateur"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Écran partagé"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Plus"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flottante"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Modifier le format"</string>
     <string name="close_text" msgid="4986518933445178928">"Fermer"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Ouvrir le menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Mettre en plein écran"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionner"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Impossible de déplacer l\'appli ici"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionner la fenêtre de l\'appli vers la gauche"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionner la fenêtre de l\'appli vers la droite"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Agrandir ou restaurer la taille de la fenêtre"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Passer en mode Écran partagé"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Activer le mode fenêtrage du bureau"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string>
diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml
index aa2f639..a2a6b3e 100644
--- a/libs/WindowManager/Shell/res/values-gl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gl/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Controlador da aplicación"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icona de aplicación"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo de escritorio"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Máis"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambiar a proporción"</string>
     <string name="close_text" msgid="4986518933445178928">"Pechar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Pechar o menú"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir o menú"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Non se pode mover aquí a aplicación"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Axustar o tamaño da ventá da aplicación á esquerda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Axustar o tamaño da ventá da aplicación á dereita"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamaño da ventá"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de pantalla dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de ventás do ordenador"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Axustar o tamaño da ventá á esquerda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Axustar o tamaño da ventá á dereita"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamaño da ventá"</string>
diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml
index dcd5738..196784b 100644
--- a/libs/WindowManager/Shell/res/values-gu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gu/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"ઍપનું હૅન્ડલ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ઍપનું આઇકન"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"પૂર્ણસ્ક્રીન"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ડેસ્કટૉપ મોડ"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"ડેસ્કટૉપ વ્યૂ"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"સ્ક્રીનને વિભાજિત કરો"</string>
     <string name="more_button_text" msgid="3655388105592893530">"વધુ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ફ્લોટિંગ વિન્ડો"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"સાપેક્ષ ગુણોત્તર બદલો"</string>
     <string name="close_text" msgid="4986518933445178928">"બંધ કરો"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"મેનૂ બંધ કરો"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"મેનૂ ખોલો"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ડેસ્કટૉપ વ્યૂ)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"સ્ક્રીન કરો મોટી કરો"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"કદ બદલો"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ઍપ અહીં ખસેડી શકાતી નથી"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ડાબી બાજુથી ઍપની વિન્ડોનું કદ બદલો"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"જમણી બાજુથી ઍપની વિન્ડોનું કદ બદલો"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"સ્ક્રીન-વિભાજન મોડ દાખલ કરો"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ડેસ્કટૉપ વિન્ડો મોડ દાખલ કરો"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"મેનૂ ખોલો"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> દાખલ કરો"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ડાબી બાજુ વિન્ડોનું કદ બદલો"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"જમણી બાજુ વિન્ડોનું કદ બદલો"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index 4bf2d92..f1f2a0a 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ऐप्लिकेशन का हैंडल"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ऐप्लिकेशन आइकॉन"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"फ़ुलस्क्रीन"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"डेस्कटॉप मोड"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन मोड"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ज़्यादा देखें"</string>
     <string name="float_button_text" msgid="9221657008391364581">"फ़्लोट"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदलें"</string>
     <string name="close_text" msgid="4986518933445178928">"बंद करें"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"मेन्यू बंद करें"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"मेन्यू खोलें"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रीन को बड़ा करें"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"साइज़ बदलें"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ऐप्लिकेशन को यहां मूव नहीं किया जा सकता"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ऐप्लिकेशन विंडो का साइज़ बाईं ओर से बदलें"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ऐप्लिकेशन विंडो का साइज़ दाईं ओर से बदलें"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"स्प्लिट स्क्रीन मोड में चालू करें"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"डेस्कटॉप विंडो मोड में जाएं"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विंडो का साइज़ बाईं ओर से बदलें"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विंडो का साइज़ दाईं ओर से बढ़ाएं"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string>
diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml
index 157822c..b1187dc 100644
--- a/libs/WindowManager/Shell/res/values-hr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hr/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Pokazivač aplikacije"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Puni zaslon"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Stolni način rada"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Prikaz na računalu"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Razdvojeni zaslon"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Više"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Plutajući"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Promijeni omjer slike"</string>
     <string name="close_text" msgid="4986518933445178928">"Zatvorite"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite izbornik"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otvaranje izbornika"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (prikaz na računalu)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimalno povećaj zaslon"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Promijeni veličinu"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacija se ne može premjestiti ovdje"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promijeni veličinu prozora aplikacije ulijevo"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promijeni veličinu prozora aplikacije udesno"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimiziraj ili vrati veličinu prozora"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pokreni način podijeljenog zaslona"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pokreni način prikaza u prozorima na računalu"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvorite izbornik"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Unesite <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promijeni veličinu prozora ulijevo"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promijeni veličinu prozora udesno"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziraj ili vrati veličinu prozora"</string>
diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml
index 546a465..5d52c48 100644
--- a/libs/WindowManager/Shell/res/values-hu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hu/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"App fogópontja"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Alkalmazásikon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Teljes képernyő"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Asztali üzemmód"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Osztott képernyő"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Továbbiak"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Lebegő"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Méretarány módosítása"</string>
     <string name="close_text" msgid="4986518933445178928">"Bezárás"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menü bezárása"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menü megnyitása"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Képernyő méretének maximalizálása"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Átméretezés"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Az alkalmazás nem helyezhető át ide"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Alkalmazásablak átméretezése balra"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Alkalmazásablak átméretezése jobbra"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ablak teljes méretre állítása vagy visszaállítása"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Belépés osztott képernyős módba"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Asztali ablakkezelési mód indítása"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ablak átméretezése balra"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ablak átméretezése jobbra"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ablak teljes méretre állítása vagy visszaállítása"</string>
diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml
index 39a395f..b7b4422 100644
--- a/libs/WindowManager/Shell/res/values-hy/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hy/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Հավելվածի կեղծանուն"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Հավելվածի պատկերակ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Լիաէկրան"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Համակարգչի ռեժիմ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Տրոհված էկրան"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Ավելին"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Լողացող պատուհան"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Փոխել կողմերի հարաբերակցությունը"</string>
     <string name="close_text" msgid="4986518933445178928">"Փակել"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Փակել ընտրացանկը"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Բացել ընտրացանկը"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ծավալել էկրանը"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Փոխել չափը"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Հավելվածը հնարավոր չէ տեղափոխել այստեղ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ձգել հավելվածի պատուհանը դեպի ձախ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ձգել հավելվածի պատուհանը դեպի աջ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Մտնել էկրանի տրոհման ռեժիմ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Մտնել համակարգչի ռեժիմ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ձգել պատուհանը դեպի ձախ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ձգել պատուհանը դեպի աջ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string>
diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml
index 09ce525..a3ed7c3 100644
--- a/libs/WindowManager/Shell/res/values-in/strings.xml
+++ b/libs/WindowManager/Shell/res/values-in/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Penanganan aplikasi"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikon Aplikasi"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Layar Penuh"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Mode Desktop"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Layar Terpisah"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Lainnya"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Mengambang"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Ubah rasio aspek"</string>
     <string name="close_text" msgid="4986518933445178928">"Tutup"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Tutup Menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Buka Menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Perbesar Layar"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ubah ukuran"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikasi tidak dapat dipindahkan ke sini"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ubah ukuran jendela aplikasi ke kiri"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ubah ukuran jendela aplikasi ke kanan"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimalkan atau pulihkan ukuran jendela"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Masuk ke mode layar terpisah"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Masuk ke mode windowing desktop"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah ukuran jendela ke kiri"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah ukuran jendela ke kanan"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimalkan atau pulihkan ukuran jendela"</string>
diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml
index 61c1d0e..e8ecad1 100644
--- a/libs/WindowManager/Shell/res/values-is/strings.xml
+++ b/libs/WindowManager/Shell/res/values-is/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Handfang forrits"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Tákn forrits"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Allur skjárinn"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Skjáborðsstilling"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Skjáskipting"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Meira"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Reikult"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Breyta myndhlutfalli"</string>
     <string name="close_text" msgid="4986518933445178928">"Loka"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Loka valmynd"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Opna valmynd"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Stækka skjá"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Breyta stærð"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ekki er hægt að færa forritið hingað"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Breyta stærð forritsglugga til vinstri"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Breyta stærð forritsglugga til hægri"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Hámarka eða endurheimta stærð glugga"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Skipta skjánum"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Opna gluggastillingu í tölvu"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Breyta stærð glugga til vinstri"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Breyta stærð glugga til hægri"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Hámarka eða endurheimta stærð glugga"</string>
diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml
index fab259e..630e9ee 100644
--- a/libs/WindowManager/Shell/res/values-it/strings.xml
+++ b/libs/WindowManager/Shell/res/values-it/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Punto di manipolazione app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icona dell\'app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Schermo intero"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modalità desktop"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Schermo diviso"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Altro"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Mobile"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Cambia proporzioni"</string>
     <string name="close_text" msgid="4986518933445178928">"Chiudi"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Chiudi il menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Apri il menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Massimizza schermo"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ridimensiona"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Impossibile spostare l\'app qui"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ridimensiona la finestra dell\'app a sinistra"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ridimensiona la finestra dell\'app a destra"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ingrandisci o ripristina le dimensioni della finestra"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Attiva la modalità schermo diviso"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Attiva la modalità finestre del desktop"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ridimensiona la finestra a sinistra"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ridimensiona la finestra a destra"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ingrandisci o ripristina le dimensioni della finestra"</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml
index b164b11..102d646 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"נקודת אחיזה לאפליקציה"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"סמל האפליקציה"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"מסך מלא"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ממשק המחשב"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"מסך מפוצל"</string>
     <string name="more_button_text" msgid="3655388105592893530">"עוד"</string>
     <string name="float_button_text" msgid="9221657008391364581">"בלונים"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"שינוי יחס הגובה-רוחב"</string>
     <string name="close_text" msgid="4986518933445178928">"סגירה"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"סגירת התפריט"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"פתיחת התפריט"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"הגדלת המסך"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"שינוי הגודל"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"לא ניתן להעביר את האפליקציה לכאן"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"שינוי הגודל של חלון האפליקציה שמשמאל"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"שינוי הגודל של חלון האפליקציה שמימין"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"שחזור של גודל החלון או הגדלת החלון"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"כניסה למצב מסך מפוצל"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"כניסה למצב שינוי הגודל של החלונות בממשק המחשב"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"שינוי גודל החלון שמשמאל"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"שינוי גודל החלון שמימין"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"שחזור של גודל החלון או הגדלת החלון"</string>
diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml
index 3fe2a51..ac0df9c 100644
--- a/libs/WindowManager/Shell/res/values-ja/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ja/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"アプリハンドル"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"アプリのアイコン"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"全画面表示"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"デスクトップ モード"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"デスクトップ ビュー"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"分割画面"</string>
     <string name="more_button_text" msgid="3655388105592893530">"その他"</string>
     <string name="float_button_text" msgid="9221657008391364581">"フローティング"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"アスペクト比を変更"</string>
     <string name="close_text" msgid="4986518933445178928">"閉じる"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"メニューを閉じる"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"メニューを開く"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g>(デスクトップ ビュー)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"画面の最大化"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"サイズ変更"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"アプリはここに移動できません"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"アプリ ウィンドウを左側にサイズ変更する"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"アプリ ウィンドウを右側にサイズ変更する"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"分割画面モードに切り替える"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"デスクトップ ウィンドウ モードに切り替える"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"メニューを開く"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>に切り替え"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ウィンドウを左側にサイズ変更する"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ウィンドウを右側にサイズ変更する"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string>
diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml
index 1be19af..84fab6f 100644
--- a/libs/WindowManager/Shell/res/values-ka/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ka/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"აპის იდენტიფიკატორი"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"აპის ხატულა"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"სრულ ეკრანზე"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"დესკტოპის რეჟიმი"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"დესკტოპის ხედი"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"ეკრანის გაყოფა"</string>
     <string name="more_button_text" msgid="3655388105592893530">"სხვა"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ფარფატი"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"თანაფარდობის შეცვლა"</string>
     <string name="close_text" msgid="4986518933445178928">"დახურვა"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"მენიუს დახურვა"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"მენიუს გახსნა"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (დესკტოპის ხედი)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"აპლიკაციის გაშლა სრულ ეკრანზე"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ზომის შეცვლა"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"აპის აქ გადატანა შეუძლებელია"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"აპის მარცხენა ფანჯრის ზომის შეცვლა"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"აპის მარჯვენა ფანჯრის ზომის შეცვლა"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"გაყოფილი ეკრანის რეჟიმში შესვლა"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"დესკტოპის ფანჯრის რეჟიმში შესვლა"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"მენიუს გახსნა"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"შეიყვანეთ <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ფანჯრის ზომის შეცვლა მარცხნივ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ფანჯრის ზომის შეცვლა მარჯვნივ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string>
diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml
index 5bd8519..31a0153 100644
--- a/libs/WindowManager/Shell/res/values-kk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kk/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Қолданба идентификаторы"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Қолданба белгішесі"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Толық экран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Компьютер режимі"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлу"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Қосымша"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Қалқыма"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Арақатынасты өзгерту"</string>
     <string name="close_text" msgid="4986518933445178928">"Жабу"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Мәзірді жабу"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Мәзірді ашу"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Экранды ұлғайту"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Өлшемін өзгерту"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Қолданба бұл жерге қойылмайды."</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Қолданба терезесінің өлшемін сол жақтан өзгерту"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Қолданба терезесінің өлшемін оң жақтан өзгерту"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Терезе өлшемін ұлғайту не қалпына келтіру"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Экранды бөлу режиміне өту"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Жұмыс үстелінің терезе режиміне өту"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезе өлшемін сол жаққа өзгерту"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезе өлшемін оң жаққа өзгерту"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезе өлшемін ұлғайту не қалпына келтіру"</string>
diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml
index f511897..9a7db67 100644
--- a/libs/WindowManager/Shell/res/values-km/strings.xml
+++ b/libs/WindowManager/Shell/res/values-km/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ឈ្មោះអ្នកប្រើប្រាស់កម្មវិធី"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"រូប​កម្មវិធី"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"អេក្រង់​ពេញ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"មុខងារកុំព្យូទ័រ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"មុខងារ​បំបែក​អេក្រង់"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ច្រើនទៀត"</string>
     <string name="float_button_text" msgid="9221657008391364581">"អណ្ដែត"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ប្ដូរ​​សមាមាត្រ"</string>
     <string name="close_text" msgid="4986518933445178928">"បិទ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"បិទ​ម៉ឺនុយ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"បើកម៉ឺនុយ"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ពង្រីកអេក្រង់"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ប្ដូរ​ទំហំ"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"មិនអាចផ្លាស់ទីកម្មវិធីមកទីនេះបានទេ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ប្ដូរទំហំវិនដូកម្មវិធីទៅឆ្វេង"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ប្ដូរទំហំវិនដូកម្មវិធីទៅស្ដាំ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ចូលទៅមុខងារ​បំបែក​អេក្រង់"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ចូលទៅមុខងារវិនដូកុំព្យូទ័រ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ប្ដូរទំហំវិនដូទៅឆ្វេង"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ប្ដូរទំហំវិនដូទៅស្ដាំ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml
index 3bd5527..e9fa2cf 100644
--- a/libs/WindowManager/Shell/res/values-kn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kn/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ಆ್ಯಪ್ ಹ್ಯಾಂಡಲ್"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ಆ್ಯಪ್ ಐಕಾನ್"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ಫುಲ್‌ಸ್ಕ್ರೀನ್"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ಡೆಸ್ಕ್‌ಟಾಪ್ ಮೋಡ್"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ಇನ್ನಷ್ಟು"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ಫ್ಲೋಟ್"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ದೃಶ್ಯಾನುಪಾತವನ್ನು ಬದಲಾಯಿಸಿ"</string>
     <string name="close_text" msgid="4986518933445178928">"ಮುಚ್ಚಿ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ಮೆನು ಮುಚ್ಚಿ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"ಮೆನು ತೆರೆಯಿರಿ"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಮ್ಯಾಕ್ಸಿಮೈಸ್ ಮಾಡಿ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ಮರುಗಾತ್ರಗೊಳಿಸಿ"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ಆ್ಯಪ್ ಅನ್ನು ಇಲ್ಲಿಗೆ ಸರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಎಡ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಬಲ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ಡೆಸ್ಕ್‌ಟಾಪ್ ವಿಂಡೋಯಿಂಗ್ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml
index 65add57..dcdbaba 100644
--- a/libs/WindowManager/Shell/res/values-ko/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ko/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"앱 핸들"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"앱 아이콘"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"전체 화면"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"데스크톱 모드"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"데스크톱 뷰"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"화면 분할"</string>
     <string name="more_button_text" msgid="3655388105592893530">"더보기"</string>
     <string name="float_button_text" msgid="9221657008391364581">"플로팅"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"가로세로 비율 변경"</string>
     <string name="close_text" msgid="4986518933445178928">"닫기"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"메뉴 닫기"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"메뉴 열기"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g>(데스크톱 뷰)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"화면 최대화"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"크기 조절"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"앱을 여기로 이동할 수 없음"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"앱 창 크기 왼쪽으로 조절"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"앱 창 크기 오른쪽으로 조절"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"창 최대화 또는 크기 복원"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"화면 분할 모드 시작"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"데스크톱 창 모드 시작"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"메뉴 열기"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> 입력"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"창 크기 왼쪽으로 조절"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"창 크기 오른쪽으로 조절"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"창 최대화 또는 크기 복원"</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index 96c2226..3716741 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Колдонмонун маркери"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Колдонмонун сүрөтчөсү"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Толук экран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Компьютер режими"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлүү"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Дагы"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Калкыма"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Тараптардын катнашын өзгөртүү"</string>
     <string name="close_text" msgid="4986518933445178928">"Жабуу"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Менюну жабуу"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Менюну ачуу"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Экранды чоңойтуу"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Өлчөмүн өзгөртүү"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Колдонмону бул жерге жылдырууга болбойт"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Колдонмонун терезесинин өлчөмүн солго өзгөртүү"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Колдонмонун терезесинин өлчөмүн оңго өзгөртүү"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Экранды бөлүү режимине өтүү"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Иш тактанын терезелери режимине өтүү"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезенин өлчөмүн солго өзгөртүү"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезенин өлчөмүн оңго өзгөртүү"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string>
diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml
index 9337efc..a1d9d29 100644
--- a/libs/WindowManager/Shell/res/values-lo/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lo/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ຊື່ຜູ້ໃຊ້ແອັບ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ໄອຄອນແອັບ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ເຕັມຈໍ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ໂໝດເດັສທັອບ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"ແບ່ງໜ້າຈໍ"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ເພີ່ມເຕີມ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ລອຍ"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ປ່ຽນອັດຕາສ່ວນຮູບ"</string>
     <string name="close_text" msgid="4986518933445178928">"ປິດ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ປິດເມນູ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"ເປີດເມນູ"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ປັບຈໍໃຫຍ່ສຸດ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ປັບຂະໜາດ"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ບໍ່ສາມາດຍ້າຍແອັບມາບ່ອນນີ້ໄດ້"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ປັບຂະໜາດໜ້າຈໍແອັບໄປທາງຊ້າຍ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ປັບຂະໜາດໜ້າຈໍແອັບໄປທາງຂວາ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ເຂົ້າສູ່ໂໝດແບ່ງໜ້າຈໍ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ເຂົ້າສູ່ໂໝດໜ້າຈໍເດັສທັອບ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ປັບຂະໜາດໜ້າຈໍໄປທາງຊ້າຍ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ປັບຂະໜາດໜ້າຈໍໄປທາງຂວາ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string>
diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml
index ede2564..7ebd43d 100644
--- a/libs/WindowManager/Shell/res/values-lt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lt/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Programos kreipinys"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Programos piktograma"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Visas ekranas"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Stalinio kompiuterio režimas"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Rodinio versija staliniams kompiuteriams"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Išskaidyto ekrano režimas"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Daugiau"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Slankusis langas"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Keisti kraštinių santykį"</string>
     <string name="close_text" msgid="4986518933445178928">"Uždaryti"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Uždaryti meniu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Atidaryti meniu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ (rodinio versija staliniams kompiuteriams)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Išskleisti ekraną"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Pakeisti dydį"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Programos negalima perkelti čia"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Pakeisti programos lango dydį kairėje"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Pakeisti programos lango dydį dešinėje"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Padidinti arba atkurti lango dydį"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Išskaidyto ekrano režimo įjungimas"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Įjungti darbalaukio pateikimo lange režimą"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Atidaryti meniu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Eiti į „<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>“"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pakeisti lango dydį kairėje"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pakeisti lango dydį dešinėje"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Padidinti arba atkurti lango dydį"</string>
diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml
index 24a969b..3fcbbe2 100644
--- a/libs/WindowManager/Shell/res/values-lv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lv/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Lietotnes turis"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Lietotnes ikona"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pilnekrāna režīms"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Darbvirsmas režīms"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Sadalīt ekrānu"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Vairāk"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Peldošs"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Mainīt malu attiecību"</string>
     <string name="close_text" msgid="4986518933445178928">"Aizvērt"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Aizvērt izvēlni"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Atvērt izvēlni"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimizēt ekrānu"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Mainīt lielumu"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Lietotni nevar pārvietot šeit."</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Mainīt lietotnes loga lielumu uz kreiso pusi"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Mainīt lietotnes loga lielumu uz labo pusi"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimizēt vai atjaunot loga lielumu"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Ieslēgt ekrāna sadalīšanas režīmu"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Ieslēgt darbvirsmas logu režīmu"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Mainīt loga lielumu uz kreiso pusi"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Mainīt loga lielumu uz labo pusi"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizēt vai atjaunot loga lielumu"</string>
diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml
index f7177ac..76b62ec1 100644
--- a/libs/WindowManager/Shell/res/values-mk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mk/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Прекар на апликацијата"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Икона на апликацијата"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Цел екран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Режим за компјутер"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Поделен екран"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Повеќе"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Лебдечко"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промени го соодносот"</string>
     <string name="close_text" msgid="4986518933445178928">"Затворете"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Отвори го менито"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Максимизирај го екранот"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени ја гол."</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Апликацијата не може да се премести овде"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Променете ја големината на прозорецот на апликацијата одлево"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Променете ја големината на прозорецот на апликацијата оддесно"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Максимизирајте или вратете ја големината на прозорецот"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Влезете во „Режим на поделен екран“"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Влезете во „Режим со прозорци на работната површина“"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Променете ја големината на прозорецот налево"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Променете ја големината на прозорецот надесно"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Максимизирајте или вратете ја големината на прозорецот"</string>
diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml
index 89215b6..d9d0cf9 100644
--- a/libs/WindowManager/Shell/res/values-ml/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ml/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ആപ്പ് ഹാൻഡിൽ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ആപ്പ് ഐക്കൺ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"പൂർണ്ണസ്ക്രീൻ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ഡെസ്‌ക്ടോപ്പ് മോഡ്"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"സ്‌ക്രീൻ വിഭജനം"</string>
     <string name="more_button_text" msgid="3655388105592893530">"കൂടുതൽ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ഫ്ലോട്ട്"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"വീക്ഷണ അനുപാതം മാറ്റുക"</string>
     <string name="close_text" msgid="4986518933445178928">"അടയ്ക്കുക"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"മെനു അടയ്ക്കുക"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"മെനു തുറക്കുക"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"സ്‌ക്രീൻ വലുതാക്കുക"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"വലുപ്പം മാറ്റുക"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ആപ്പ് ഇവിടേക്ക് നീക്കാനാകില്ല"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ഇടത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"വലത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"വിന്‍ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"സ്പ്ലിറ്റ് സ്ക്രീൻ മോഡിൽ പ്രവേശിക്കുക"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ഡെസ്ക്ടോപ്പ് വിൻഡോയിംഗ് മോഡിൽ പ്രവേശിക്കുക"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ഇടത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"വലത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"വിന്‍ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index b38026c..875ecea 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Аппын бариул"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Aппын дүрс тэмдэг"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Бүтэн дэлгэц"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Дэлгэцийн горим"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Дэлгэцийг хуваах"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Бусад"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Хөвөгч"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Аспектын харьцааг өөрчлөх"</string>
     <string name="close_text" msgid="4986518933445178928">"Хаах"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Цэсийг хаах"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Цэсийг нээх"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Дэлгэцийг томруулах"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Хэмжээг өөрчлөх"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Аппыг ийш зөөх боломжгүй"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Аппын цонхны хэмжээг зүүн тал руу өөрчлөх"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Аппын цонхны хэмжээг баруун тал руу өөрчлөх"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Дэлгэц хуваах горимд орох"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Дэлгэцийн цонхны горимд орох"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Цонхны хэмжээг зүүн тал руу өөрчлөх"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Цонхны хэмжээг баруун тал руу өөрчлөх"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string>
diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml
index d9c1d1f..73c16e6 100644
--- a/libs/WindowManager/Shell/res/values-mr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mr/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"अ‍ॅपचे हँडल"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"अ‍ॅप आयकन"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"फुलस्‍क्रीन"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"डेस्कटॉप मोड"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन"</string>
     <string name="more_button_text" msgid="3655388105592893530">"आणखी"</string>
     <string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"आस्पेक्ट रेशो बदला"</string>
     <string name="close_text" msgid="4986518933445178928">"बंद करा"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"मेनू बंद करा"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"मेनू उघडा"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रीन मोठी करा"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"आकार बदला"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"अ‍ॅप इथे हलवू शकत नाही"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"अ‍ॅप विंडोचा डावीकडून आकार बदला"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"अ‍ॅप विंडोचा उजवीकडून आकार बदला"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"स्प्लिट स्क्रीन मोड एंटर करा"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"डेस्कटॉप विंडोइंग मोड एंटर करा"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"अ‍ॅप विंडोचा डावीकडे आकार बदला"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"अ‍ॅप विंडोचा उजवीकडे आकार बदला"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string>
diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml
index a54ef14..81e00c5 100644
--- a/libs/WindowManager/Shell/res/values-ms/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ms/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Pengendalian apl"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikon Apl"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Skrin penuh"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Mod Desktop"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Paparan Desktop"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Skrin Pisah"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Lagi"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Terapung"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Tukar nisbah bidang"</string>
     <string name="close_text" msgid="4986518933445178928">"Tutup"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Tutup Menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Buka Menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (Paparan Desktop)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimumkan Skrin"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ubah saiz"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Apl tidak boleh dialihkan ke sini"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Butang kiri ubah saiz tetingkap apl"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Butang kanan ubah saiz tetingkap apl"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimumkan atau pulihkan saiz tetingkap"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Masuki mod skrin pisah"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Masuki mod tetingkap desktop"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Buka Menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Masukkan <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah saiz tetingkap ke sebelah kiri"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah saiz tetingkap ke sebelah kanan"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimumkan atau pulihkan saiz tetingkap"</string>
diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml
index 1f4db6d..be7cca5 100644
--- a/libs/WindowManager/Shell/res/values-my/strings.xml
+++ b/libs/WindowManager/Shell/res/values-my/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"အက်ပ်သုံးသူအမည်"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"အက်ပ်သင်္ကေတ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ဖန်သားပြင်အပြည့်"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ဒက်စ်တော့မုဒ်"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"မျက်နှာပြင် ခွဲ၍ပြသရန်"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ပိုပြပါ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"မျှောရန်"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"အချိုးအစား ပြောင်းရန်"</string>
     <string name="close_text" msgid="4986518933445178928">"ပိတ်ရန်"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"မီနူး ပိတ်ရန်"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"မီနူး ဖွင့်ရန်"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"စခရင်ကို ချဲ့မည်"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"အရွယ်ပြင်ရန်"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"အက်ပ်ကို ဤနေရာသို့ ရွှေ့၍မရပါ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"အက်ပ်ဝင်းဒိုး ဘယ်ဘက်ကို အရွယ်ပြင်ရန်"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"အက်ပ်ဝင်းဒိုး ညာဘက်ကို အရွယ်ပြင်ရန်"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"မျက်နှာပြင်ခွဲပြခြင်းမုဒ်သို့ ဝင်ရန်"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ဒက်စ်တော့ ဝင်းဒိုးမုဒ်သို့ ဝင်ရန်"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ဝင်းဒိုးကို ဘယ်ဘက်သို့ အရွယ်ပြင်ရန်"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ဝင်းဒိုးကို ညာဘက်သို့ အရွယ်ပြင်ရန်"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string>
diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml
index 586a50f..c213b7b 100644
--- a/libs/WindowManager/Shell/res/values-nb/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nb/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Apphåndtak"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Fullskjerm"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Skrivebordmodus"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Delt skjerm"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mer"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Svevende"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Endre høyde/bredde-forholdet"</string>
     <string name="close_text" msgid="4986518933445178928">"Lukk"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Lukk menyen"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Åpne menyen"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimer skjermen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Endre størrelse"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Appen kan ikke flyttes hit"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Endre størrelsen på appvinduet til venstre"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Endre størrelsen på appvinduet til høyre"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimer eller gjenopprett størrelsen på vinduet"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Start modusen for delt skjerm"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Start vindusmodus for skrivebordet"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Endre størrelsen på vinduet til venstre"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Endre størrelsen på vinduet til høyre"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gjenopprett størrelsen på vinduet"</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index f66fb1d..e5f4cbe 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"एपको ह्यान्डल"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"एपको आइकन"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"फुल स्क्रिन"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"डेस्कटप मोड"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रिन"</string>
     <string name="more_button_text" msgid="3655388105592893530">"थप"</string>
     <string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"एस्पेक्ट रेसियो परिवर्तन गर्नुहोस्"</string>
     <string name="close_text" msgid="4986518933445178928">"बन्द गर्नुहोस्"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"मेनु बन्द गर्नुहोस्"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"मेनु खोल्नुहोस्"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"स्क्रिन ठुलो बनाउनुहोस्"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"आकार बदल्नुहोस्"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"एप सारेर यहाँ ल्याउन सकिएन"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"एपको विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"एपको विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"स्प्लिट स्क्रिन मोड प्रयोग गर्नुहोस्"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"डेस्कटप विन्डोइङ मोड प्रयोग गर्नुहोस्"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string>
diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml
index 20bc65a..8396b3e 100644
--- a/libs/WindowManager/Shell/res/values-nl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nl/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"App-handgreep"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"App-icoon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Volledig scherm"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktopmodus"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Desktopweergave"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Gesplitst scherm"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Meer"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Zwevend"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Beeldverhouding wijzigen"</string>
     <string name="close_text" msgid="4986518933445178928">"Sluiten"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menu sluiten"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menu openen"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (desktopweergave)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Scherm maximaliseren"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Formaat aanpassen"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Kan de app niet hierheen verplaatsen"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Formaat van app-venster naar links aanpassen"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Formaat van app-venster naar rechts aanpassen"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Formaat van venster maximaliseren of herstellen"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Modus voor gesplitst scherm openen"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Modus voor desktopvensterfuncties openen"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Menu openen"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g> openen"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Formaat van venster naar links aanpassen"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Formaat van venster naar rechts aanpassen"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Formaat van venster maximaliseren of herstellen"</string>
diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml
index edb5208..182ea46d8 100644
--- a/libs/WindowManager/Shell/res/values-or/strings.xml
+++ b/libs/WindowManager/Shell/res/values-or/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ଆପର ହେଣ୍ଡେଲ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ଆପ ଆଇକନ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ପୂର୍ଣ୍ଣସ୍କ୍ରିନ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ଡେସ୍କଟପ ମୋଡ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ଅଧିକ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ଫ୍ଲୋଟ"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="close_text" msgid="4986518933445178928">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ମେନୁ ବନ୍ଦ କରନ୍ତୁ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"ମେନୁ ଖୋଲନ୍ତୁ"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ସ୍କ୍ରିନକୁ ବଡ଼ କରନ୍ତୁ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ରିସାଇଜ କରନ୍ତୁ"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ଆପକୁ ଏଠାକୁ ମୁଭ କରାଯାଇପାରିବ ନାହିଁ"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ଆପ ୱିଣ୍ଡୋ ରିସାଇଜ କରିବା ପାଇଁ ବାମ ବଟନ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ଆପ ୱିଣ୍ଡୋ ରିସାଇଜ କରିବା ପାଇଁ ଡାହାଣ ବଟନ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ ମୋଡରେ ପ୍ରବେଶ କରନ୍ତୁ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ଡେସ୍କଟପ ୱିଣ୍ଡୋଇଂ ମୋଡରେ ପ୍ରବେଶ କରନ୍ତୁ"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ବାମପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ଡାହାଣପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml
index 29de4c4..3bc730b 100644
--- a/libs/WindowManager/Shell/res/values-pa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pa/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"ਐਪ ਹੈਂਡਲ"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ਐਪ ਪ੍ਰਤੀਕ"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ਪੂਰੀ-ਸਕ੍ਰੀਨ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ਡੈਸਕਟਾਪ ਮੋਡ"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"ਡੈਸਕਟਾਪ ਦ੍ਰਿਸ਼"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ"</string>
     <string name="more_button_text" msgid="3655388105592893530">"ਹੋਰ"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ਫ਼ਲੋਟ"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ਆਕਾਰ ਅਨੁਪਾਤ ਬਦਲੋ"</string>
     <string name="close_text" msgid="4986518933445178928">"ਬੰਦ ਕਰੋ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ਮੀਨੂ ਬੰਦ ਕਰੋ"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"ਮੀਨੂ ਖੋਲ੍ਹੋ"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (ਡੈਸਕਟਾਪ ਦ੍ਰਿਸ਼)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ਸਕ੍ਰੀਨ ਦਾ ਆਕਾਰ ਵਧਾਓ"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ਆਕਾਰ ਬਦਲੋ"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ਐਪ ਨੂੰ ਇੱਥੇ ਨਹੀਂ ਲਿਜਾਇਆ ਜਾ ਸਕਦਾ"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ਐਪ ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ਐਪ ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ਡੈਸਕਟਾਪ ਵਿੰਡੋ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"ਮੀਨੂ ਖੋਲ੍ਹੋ"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Enter <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml
index 47ee80e..9a1bf33 100644
--- a/libs/WindowManager/Shell/res/values-pl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pl/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Uchwyt aplikacji"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacji"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Pełny ekran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Tryb pulpitu"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Podzielony ekran"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Więcej"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Pływające"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Zmień format obrazu"</string>
     <string name="close_text" msgid="4986518933445178928">"Zamknij"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zamknij menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otwórz menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksymalizuj ekran"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Zmień rozmiar"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Nie można przenieść aplikacji tutaj"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Zmień rozmiar okna aplikacji po lewej"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Zmień rozmiar okna aplikacji po prawej"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Zmaksymalizuj lub przywróć rozmiar okna"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Włącz tryb podzielonego ekranu"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Włącz tryb okien na pulpicie"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmień rozmiar okna do lewej"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmień rozmiar okna do prawej"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Zmaksymalizuj lub przywróć rozmiar okna"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
index 0a3ea70..3e019ec 100644
--- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Tela cheia"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo área de trabalho"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Versão para computadores"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Tela dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mais"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Mudar a proporção"</string>
     <string name="close_text" msgid="4986518933445178928">"Fechar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir o menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (versão para computadores)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ampliar tela"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionar"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Não é possível mover o app para cá"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela do app para a esquerda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela do app para a direita"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamanho da janela"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de tela dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de janela do computador"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir o menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Entrar no <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
index c9d196b..0ca0e8e 100644
--- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Indicador da app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ícone da app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Ecrã inteiro"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo de ambiente de trabalho"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Vista de computador"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Ecrã dividido"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mais"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flutuar"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Alterar formato"</string>
     <string name="close_text" msgid="4986518933445178928">"Fechar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista de computador)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar ecrã"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionar"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Não é possível mover a app para aqui"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela da app para a esquerda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela da app para a direita"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar tamanho da janela"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Aceder ao modo de ecrã dividido"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Aceder ao modo de janelas de computador"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Entrar no modo <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar tamanho da janela"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml
index 0a3ea70..3e019ec 100644
--- a/libs/WindowManager/Shell/res/values-pt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Tela cheia"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modo área de trabalho"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Versão para computadores"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Tela dividida"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mais"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Mudar a proporção"</string>
     <string name="close_text" msgid="4986518933445178928">"Fechar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Abrir o menu"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (versão para computadores)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ampliar tela"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionar"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Não é possível mover o app para cá"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela do app para a esquerda"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela do app para a direita"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamanho da janela"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de tela dividida"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de janela do computador"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Abrir o menu"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Entrar no <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string>
diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml
index a3313b6..f71d93b 100644
--- a/libs/WindowManager/Shell/res/values-ro/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ro/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Handle de aplicație"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Pictograma aplicației"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Ecran complet"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modul desktop"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Ecran împărțit"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mai multe"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Flotantă"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Schimbă raportul de dimensiuni"</string>
     <string name="close_text" msgid="4986518933445178928">"Închide"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Închide meniul"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Deschide meniul"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizează fereastra"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Redimensionează"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplicația nu poate fi mutată aici"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionează fereastra aplicației la stânga"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionează fereastra aplicației la dreapta"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizează sau restabilește dimensiunea ferestrei"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Accesează modul ecran împărțit"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Accesează modul de windowing pe desktop"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionează fereastra la stânga"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionează fereastra la dreapta"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizează sau restabilește dimensiunea ferestrei"</string>
diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml
index 5b20b2b..adc6f32 100644
--- a/libs/WindowManager/Shell/res/values-ru/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ru/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Обозначение приложения"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Значок приложения"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Полноэкранный режим"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Режим компьютера"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Версия для ПК"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Разделить экран"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Ещё"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Плавающее окно"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Изменить соотношение сторон"</string>
     <string name="close_text" msgid="4986518933445178928">"Закрыть"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Закрыть меню"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Открыть меню"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" (версия для ПК)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Развернуть на весь экран"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Изменить размер"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Приложение нельзя сюда переместить"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Растянуть окно приложения влево"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Растянуть окно приложения вправо"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Развернуть окно или восстановить его размер"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Перейти в режим разделения экрана"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Перейти в режим компьютера"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Открыть меню"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Открыть в режиме \"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>\""</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Растянуть окно влево"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Растянуть окно вправо"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Развернуть окно или восстановить его размер"</string>
diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml
index f0ef1d1..b7b2863 100644
--- a/libs/WindowManager/Shell/res/values-si/strings.xml
+++ b/libs/WindowManager/Shell/res/values-si/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"යෙදුම් හසුරුව"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"යෙදුම් නිරූපකය"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"පූර්ණ තිරය"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ඩෙස්ක්ටොප් ප්‍රකාරය"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"බෙදුම් තිරය"</string>
     <string name="more_button_text" msgid="3655388105592893530">"තව"</string>
     <string name="float_button_text" msgid="9221657008391364581">"පාවෙන"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"දර්ශන අනුපාතය වෙනස් කරන්න"</string>
     <string name="close_text" msgid="4986518933445178928">"වසන්න"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"මෙනුව වසන්න"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"මෙනුව විවෘත කරන්න"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"තිරය උපරිම කරන්න"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ප්‍රතිප්‍රමාණය කරන්න"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"යෙදුම මෙතැනට ගෙන යා නොහැක"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"යෙදුම් කවුළුව වමට ප්‍රතිප්‍රමාණ කරන්න"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"යෙදුම් කවුළුව දකුණට ප්‍රතිප්‍රමාණ කරන්න"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"කවුළු ප්‍රමාණය උපරිම කරන්න හෝ ප්‍රතිසාධනය කරන්න"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"බෙදුම් තිර මාදිලියට ඇතුළු වන්න"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ඩෙස්ක්ටොප කවුළුකරණ මාදිලියට ඇතුළු වන්න"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"කවුළුව වමට ප්‍රතිප්‍රමාණ කරන්න"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"කවුළුව දකුණට ප්‍රතිප්‍රමාණ කරන්න"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"කවුළු ප්‍රමාණය උපරිම කරන්න හෝ ප්‍රතිසාධනය කරන්න"</string>
diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml
index 688c217..ede0cdd 100644
--- a/libs/WindowManager/Shell/res/values-sk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sk/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Rukoväť aplikácie"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikácie"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Celá obrazovka"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Režim počítača"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Zobrazenie v počítači"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Rozdelená obrazovka"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Viac"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Plávajúce"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Zmeniť pomer strán"</string>
     <string name="close_text" msgid="4986518933445178928">"Zavrieť"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zavrieť ponuku"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Otvoriť ponuku"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (zobrazenie v počítači)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximalizovať obrazovku"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Zmeniť veľkosť"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikácia sa sem nedá presunúť"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Zmeniť veľkosť okna aplikácie vľavo"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Zmeniť veľkosť okna aplikácie vpravo"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximalizovať alebo obnoviť veľkosť okna"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Spustiť režim rozdelenej obrazovky"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Prejsť na režim okien na pracovnej ploche"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Otvoriť ponuku"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Zadať <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmeniť veľkosť okna vľavo"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmeniť veľkosť okna vpravo"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovať alebo obnoviť veľkosť okna"</string>
diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml
index 69eb3e3..5f1f6ef 100644
--- a/libs/WindowManager/Shell/res/values-sl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sl/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Celozaslonsko"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Namizni način"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Pogled za namizni računalnik"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Razdeljen zaslon"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Več"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Lebdeče"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Sprememba razmerja stranic"</string>
     <string name="close_text" msgid="4986518933445178928">"Zapri"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Zapri meni"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Odpri meni"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (pogled za namizni računalnik)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimiraj zaslon"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Spremeni velikost"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacije ni mogoče premakniti sem"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Sprememba velikosti okna aplikacije na levi"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Sprememba velikosti okna aplikacije na desni"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Povečava ali obnovitev velikosti okna"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Vklop načina razdeljenega zaslona"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Vklop načina prikaza v oknu na namizju"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Odpiranje menija"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Odpiranje pogleda <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Sprememba velikosti okna na levi"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Sprememba velikosti okna na desni"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Povečava ali obnovitev velikosti okna"</string>
diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml
index fcb0aa6..ea26bc6 100644
--- a/libs/WindowManager/Shell/res/values-sq/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sq/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Emërtimi i aplikacionit"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ikona e aplikacionit"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Ekrani i plotë"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Modaliteti i desktopit"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Ekrani i ndarë"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Më shumë"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Pluskuese"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Ndrysho raportin e pamjes"</string>
     <string name="close_text" msgid="4986518933445178928">"Mbyll"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Mbyll menynë"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Hap menynë"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maksimizo ekranin"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ndrysho përmasat"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Aplikacioni nuk mund të zhvendoset këtu"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ndrysho përmasat e dritares së aplikacionit majtas"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ndrysho përmasat e dritares së aplikacionit djathtas"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimizo ose restauro madhësinë e dritares"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Hyr në modalitetin e ekranit të ndarë"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Hyr në modalitetin e dritareve në desktop"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ndrysho përmasat e dritares në të majtë"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ndrysho përmasat e dritares në të djathtë"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizo ose restauro madhësinë e dritares"</string>
diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml
index 6a2ffcd..ea7a1bb 100644
--- a/libs/WindowManager/Shell/res/values-sr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sr/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Идентификатор апликације"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Икона апликације"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Преко целог екрана"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Режим за рачунаре"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Приказ за рачунаре"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Подељени екран"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Још"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Плутајуће"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промени размеру"</string>
     <string name="close_text" msgid="4986518933445178928">"Затворите"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Затворите мени"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Отворите мени"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (приказ за рачунаре)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Повећај екран"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени величину"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Апликација не може да се премести овде"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Промените величину прозора апликације налево"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Промените величину прозора апликације надесно"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Увећајте или вратите величину прозора"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Уђите у режим подељеног екрана"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Уђите у режим прозора на рачунару"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Отворите Мени"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Унесите <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Промените величину прозора налево"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Промените величину прозора надесно"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увећајте или вратите величину прозора"</string>
diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml
index a9df476..f3e53d0e 100644
--- a/libs/WindowManager/Shell/res/values-sv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sv/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"Apphandtag"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Helskärm"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Datorläge"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"Datorvy"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"Delad skärm"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Mer"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Svävande"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Ändra bildformat"</string>
     <string name="close_text" msgid="4986518933445178928">"Stäng"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Stäng menyn"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Öppna menyn"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (datorvy)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximera skärmen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Ändra storlek"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Det går inte att flytta appen hit"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ändra storlek på appfönstret åt vänster"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ändra storlek på appfönstret åt höger"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximera eller återställ fönsterstorleken"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Starta läget för delad skärm"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Starta datorläget"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"Öppna menyn"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"Ange <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ändra storlek på fönstret åt vänster"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ändra storlek på fönstret åt höger"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximera eller återställ fönsterstorleken"</string>
diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml
index a3c9a0d..51aacac 100644
--- a/libs/WindowManager/Shell/res/values-sw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sw/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Utambulisho wa programu"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Aikoni ya Programu"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Skrini nzima"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Hali ya Kompyuta ya mezani"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Gawa Skrini"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Zaidi"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Inayoelea"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Badilisha uwiano"</string>
     <string name="close_text" msgid="4986518933445178928">"Funga"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Funga Menyu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Fungua Menyu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Panua Dirisha kwenye Skrini"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Badilisha ukubwa"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Imeshindwa kuhamishia programu hapa"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Badilisha ukubwa wa dirisha la programu kushoto"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Badilisha ukubwa wa dirisha la programu kulia"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Panua au urejeshe ukubwa wa dirisha"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Ingia katika hali ya skrini iliyogawanywa"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Ingia katika hali ya madirisha ya kompyuta ya mezani"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Badilisha ukubwa wa dirisha kushoto"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Badilisha ukubwa wa dirisha kulia"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Panua au urejeshe ukubwa wa dirisha"</string>
diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml
index b1b8c7f..0c7206c 100644
--- a/libs/WindowManager/Shell/res/values-ta/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ta/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ஆப்ஸ் ஹேண்டில்"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ஆப்ஸ் ஐகான்"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"முழுத்திரை"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"டெஸ்க்டாப் பயன்முறை"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"திரையைப் பிரிக்கும்"</string>
     <string name="more_button_text" msgid="3655388105592893530">"கூடுதல் விருப்பத்தேர்வுகள்"</string>
     <string name="float_button_text" msgid="9221657008391364581">"மிதக்கும் சாளரம்"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"தோற்ற விகிதத்தை மாற்று"</string>
     <string name="close_text" msgid="4986518933445178928">"மூடும்"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"மெனுவை மூடும்"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"மெனுவைத் திறக்கும்"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"திரையைப் பெரிதாக்கு"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"அளவை மாற்று"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ஆப்ஸை இங்கே நகர்த்த முடியாது"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ஆப்ஸ் சாளரத்தின் இடதுபுறத்தில் அளவை மாற்றும்"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ஆப்ஸ் சாளரத்தின் வலதுபுறத்தில் அளவை மாற்றும்"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"திரைப் பிரிப்புப் பயன்முறையில் உள்நுழையும்"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"டெஸ்க்டாப் சாளரப் பயன்முறையில் உள்நுழையும்"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"சாளரத்தை இடதுபுறமாக அளவு மாற்றும்"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"சாளரத்தை வலதுபுறமாக அளவு மாற்றும்"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string>
diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml
index 932f831..f7cf43e 100644
--- a/libs/WindowManager/Shell/res/values-te/strings.xml
+++ b/libs/WindowManager/Shell/res/values-te/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"యాప్ హ్యాండిల్"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"యాప్ చిహ్నం"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"ఫుల్-స్క్రీన్"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"డెస్క్‌టాప్ మోడ్"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"డెస్క్‌టాప్ వీక్షణ"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"స్ప్లిట్ స్క్రీన్"</string>
     <string name="more_button_text" msgid="3655388105592893530">"మరిన్ని"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ఫ్లోట్"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"ఆకార నిష్పత్తిని మార్చండి"</string>
     <string name="close_text" msgid="4986518933445178928">"మూసివేయండి"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"మెనూను మూసివేయండి"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"మెనూను తెరవండి"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (డెస్క్‌టాప్ వీక్షణ)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"స్క్రీన్ సైజ్‌ను పెంచండి"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"సైజ్ మార్చండి"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"యాప్‌ను ఇక్కడకి తరలించడం సాధ్యం కాదు"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"యాప్ విండో ఎడమ వైపు సైజ్ మార్చండి"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"యాప్ విండో కుడి వైపు సైజ్ మార్చండి"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"విండో సైజ్‌ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"స్ప్లిట్ స్క్రీన్ మోడ్‌ను ఉపయోగించండి"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"డెస్క్‌టాప్ విండోయింగ్ మోడ్‌ను ఎంటర్ చేయండి"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"మెనూను తెరవండి"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"<xliff:g id="WINDOWING_MODE">%1$s</xliff:g>‌ను ఎంటర్ చేయండి"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"విండో ఎడమ వైపునకు సైజ్‌ను మార్చండి"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"విండో కుడి వైపునకు సైజ్‌ను మార్చండి"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"విండో సైజ్‌ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string>
diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml
index e157474..77cd2e2 100644
--- a/libs/WindowManager/Shell/res/values-th/strings.xml
+++ b/libs/WindowManager/Shell/res/values-th/strings.xml
@@ -119,7 +119,7 @@
     <string name="handle_text" msgid="4419667835599523257">"แฮนเดิลแอป"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ไอคอนแอป"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"เต็มหน้าจอ"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"โหมดเดสก์ท็อป"</string>
+    <string name="desktop_text" msgid="1582173066857454541">"มุมมองบนเดสก์ท็อป"</string>
     <string name="split_screen_text" msgid="1396336058129570886">"แยกหน้าจอ"</string>
     <string name="more_button_text" msgid="3655388105592893530">"เพิ่มเติม"</string>
     <string name="float_button_text" msgid="9221657008391364581">"ล่องลอย"</string>
@@ -132,7 +132,7 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"เปลี่ยนสัดส่วนการแสดงผล"</string>
     <string name="close_text" msgid="4986518933445178928">"ปิด"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"ปิดเมนู"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"เปิดเมนู"</string>
+    <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (มุมมองบนเดสก์ท็อป)"</string>
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"ขยายหน้าจอให้ใหญ่สุด"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"ปรับขนาด"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ย้ายแอปมาที่นี่ไม่ได้"</string>
@@ -145,8 +145,8 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ปรับขนาดหน้าต่างแอปไปทางซ้าย"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ปรับขนาดหน้าต่างแอปไปทางขวา"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"เข้าสู่โหมดแยกหน้าจอ"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"เข้าสู่โหมดหน้าต่างเดสก์ท็อป"</string>
+    <string name="app_handle_chip_accessibility_announce" msgid="499881698947450536">"เปิดเมนู"</string>
+    <string name="app_handle_menu_accessibility_announce" msgid="7928858564852785398">"เข้าสู่ <xliff:g id="WINDOWING_MODE">%1$s</xliff:g>"</string>
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ปรับขนาดหน้าต่างไปทางซ้าย"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ปรับขนาดหน้าต่างไปทางขวา"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string>
diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml
index 7f29704..5787e10 100644
--- a/libs/WindowManager/Shell/res/values-tl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tl/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Handle ng app"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Icon ng App"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop Mode"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Higit pa"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Float"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Baguhin ang aspect ratio"</string>
     <string name="close_text" msgid="4986518933445178928">"Isara"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Isara ang Menu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Buksan ang Menu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"I-maximize ang Screen"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"I-resize"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Hindi mailipat dito ang app"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"I-resize pakaliwa ang window ng app"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"I-resize pakanan ang window ng app"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"I-maximize o i-restore ang laki ng window"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pumunta sa split screen mode"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pumunta sa desktop windowing mode"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"I-resize pakaliwa ang window"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"I-resize pakanan ang window"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"I-maximize o i-restore ang laki ng window"</string>
diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml
index 6a5d1ab..28b2a7d 100644
--- a/libs/WindowManager/Shell/res/values-tr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tr/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Uygulama tanıtıcısı"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Uygulama Simgesi"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Masaüstü Modu"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Daha Fazla"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Havada Süzülen"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"En boy oranını değiştir"</string>
     <string name="close_text" msgid="4986518933445178928">"Kapat"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menüyü kapat"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menüyü aç"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranı Büyüt"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Yeniden boyutlandır"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Uygulama buraya taşınamıyor"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Uygulama penceresini sola yeniden boyutlandır"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Uygulama penceresini sağa yeniden boyutlandır"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Bölünmüş ekran moduna gir"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Masaüstü pencereleme moduna gir"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pencereyi sola yeniden boyutlandır"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pencereyi sağa yeniden boyutlandır"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string>
diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml
index 7f4e91d..f5693ca 100644
--- a/libs/WindowManager/Shell/res/values-uk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uk/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Дескриптор додатка"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Значок додатка"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"На весь екран"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Режим комп’ютера"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Розділити екран"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Більше"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Плаваюче вікно"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Змінити формат"</string>
     <string name="close_text" msgid="4986518933445178928">"Закрити"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Закрити меню"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Відкрити меню"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Розгорнути екран"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Змінити розмір"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Сюди не можна перемістити додаток"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Змінити розмір вікна додатка ліворуч"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Змінити розмір вікна додатка праворуч"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Розгорнути вікно або відновити його розмір"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Увімкнути режим розділення екрана"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Увімкнути режим вікон для комп’ютера"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змінити розмір вікна ліворуч"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змінити розмір вікна праворуч"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Розгорнути вікно або відновити його розмір"</string>
diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml
index f461d40..a801b5e 100644
--- a/libs/WindowManager/Shell/res/values-ur/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ur/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"ایپ ہینڈل"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"ایپ کا آئیکن"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"مکمل اسکرین"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"ڈیسک ٹاپ موڈ"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"اسپلٹ اسکرین"</string>
     <string name="more_button_text" msgid="3655388105592893530">"مزید"</string>
     <string name="float_button_text" msgid="9221657008391364581">"فلوٹ"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"تناسبی شرح کو تبدیل کریں"</string>
     <string name="close_text" msgid="4986518933445178928">"بند کریں"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"مینیو بند کریں"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"مینو کھولیں"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"اسکرین کو بڑا کریں"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"سائز تبدیل کریں"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"ایپ کو یہاں منتقل نہیں کیا جا سکتا"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"دائیں طرف ایپ ونڈو کا سائز تبدیل کریں"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ایپ ونڈو کا سائز بائیں طرف تبدیل کریں"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"سپلٹ اسکرین موڈ میں داخل ہوں"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ڈیسک ٹاپ ونڈو وضع میں داخل ہوں"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"دائیں طرف ونڈو کا سائز تبدیل کریں"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ونڈو کا سائز بائیں طرف تبدیل کریں"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string>
diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml
index 7c6a2a2..9fbbdc8 100644
--- a/libs/WindowManager/Shell/res/values-uz/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uz/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Ilova identifikatori"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Ilova belgisi"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Butun ekran"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Desktop rejimi"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Ekranni ikkiga ajratish"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Yana"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Pufakli"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Tomonlar nisbatini oʻzgartirish"</string>
     <string name="close_text" msgid="4986518933445178928">"Yopish"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Menyuni yopish"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Menyuni ochish"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Ekranni yoyish"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Oʻlchamini oʻzgartirish"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Ilova bu yerga surilmaydi"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ilova chap oynasi oʻlchamini oʻzgartirish"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ilova oʻng oynasi oʻlchamini oʻzgartirish"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Ajratilgan ekran rejimiga kirish"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Kompyuter rejimiga kirish"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Oyna oʻlchamini chapga oʻzgartirish"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Oyna oʻlchamini oʻngga oʻzgartirish"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml
index e7cacc3..b40a4e6 100644
--- a/libs/WindowManager/Shell/res/values-vi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-vi/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Ô điều khiển ứng dụng"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Biểu tượng ứng dụng"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Toàn màn hình"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Chế độ máy tính"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Chia đôi màn hình"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Tuỳ chọn khác"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Nổi"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Thay đổi tỷ lệ khung hình"</string>
     <string name="close_text" msgid="4986518933445178928">"Đóng"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Đóng trình đơn"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Mở Trình đơn"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Mở rộng màn hình"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Đổi kích thước"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Không di chuyển được ứng dụng đến đây"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Đổi kích thước và chuyển cửa sổ ứng dụng sang trái"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Đổi kích thước và chuyển cửa sổ ứng dụng sang phải"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Phóng to hoặc khôi phục kích thước cửa sổ"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Mở chế độ chia đôi màn hình"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Mở chế độ cửa sổ trên máy tính"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Đổi kích thước và chuyển cửa sổ sang trái"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Đổi kích thước và chuyển cửa sổ sang phải"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Phóng to hoặc khôi phục kích thước cửa sổ"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
index 562a0ee0..45cd25b 100644
--- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"应用手柄"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"应用图标"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"全屏"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"桌面模式"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"分屏"</string>
     <string name="more_button_text" msgid="3655388105592893530">"更多"</string>
     <string name="float_button_text" msgid="9221657008391364581">"悬浮"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"更改宽高比"</string>
     <string name="close_text" msgid="4986518933445178928">"关闭"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"关闭菜单"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"打开菜单"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"最大化屏幕"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"调整大小"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"无法将应用移至此处"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"调整应用窗口大小并贴靠左侧"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"调整应用窗口大小并贴靠右侧"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"将窗口最大化或恢复大小"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"进入分屏模式"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"进入桌面设备窗口化模式"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"调整窗口大小并贴靠左侧"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"调整窗口大小并贴靠右侧"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"将窗口最大化或恢复大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
index eecd9f2..d2c22da 100644
--- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"應用程式控點"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"桌面模式"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"分割螢幕"</string>
     <string name="more_button_text" msgid="3655388105592893530">"更多"</string>
     <string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"變更長寬比"</string>
     <string name="close_text" msgid="4986518933445178928">"關閉"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"打開選單"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"畫面最大化"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"調整大小"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"應用程式無法移至這裡"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"調整左邊應用程式視窗大小"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"調整右邊應用程式視窗大小"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"將視窗放到最大或者還原視窗大小"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"進入分割螢幕模式"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"進入桌面視窗模式"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"將視窗移去左邊調整大小"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"將視窗移去右邊調整大小"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗放到最大或者還原視窗大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
index c157c193..0984fad 100644
--- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"應用程式控制代碼"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"電腦模式"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"分割畫面"</string>
     <string name="more_button_text" msgid="3655388105592893530">"更多"</string>
     <string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"變更顯示比例"</string>
     <string name="close_text" msgid="4986518933445178928">"關閉"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"開啟選單"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"畫面最大化"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"調整大小"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"應用程式無法移至此處"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"調整應用程式視窗大小並向左貼齊"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"調整應用程式視窗大小並向右貼齊"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"將視窗最大化或還原大小"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"進入分割畫面模式"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"進入電腦視窗化模式"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"調整應用程式視窗大小並向左貼齊"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"調整應用程式視窗大小並向右貼齊"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗最大化或還原大小"</string>
diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml
index a7ba6d2..13f8ed1 100644
--- a/libs/WindowManager/Shell/res/values-zu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zu/strings.xml
@@ -119,7 +119,8 @@
     <string name="handle_text" msgid="4419667835599523257">"Inkomba ye-App"</string>
     <string name="app_icon_text" msgid="2823268023931811747">"Isithonjana Se-app"</string>
     <string name="fullscreen_text" msgid="1162316685217676079">"Isikrini esigcwele"</string>
-    <string name="desktop_text" msgid="1077633567027630454">"Imodi Yedeskithophu"</string>
+    <!-- no translation found for desktop_text (1582173066857454541) -->
+    <skip />
     <string name="split_screen_text" msgid="1396336058129570886">"Hlukanisa isikrini"</string>
     <string name="more_button_text" msgid="3655388105592893530">"Okwengeziwe"</string>
     <string name="float_button_text" msgid="9221657008391364581">"Iflowuthi"</string>
@@ -132,7 +133,8 @@
     <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Shintsha ukubukeka kwesilinganiselo"</string>
     <string name="close_text" msgid="4986518933445178928">"Vala"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Vala Imenyu"</string>
-    <string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Vula Imenyu"</string>
+    <!-- no translation found for desktop_mode_app_header_chip_text (8300164817452574565) -->
+    <skip />
     <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Khulisa Isikrini Sifike Ekugcineni"</string>
     <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Shintsha usayizi"</string>
     <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"I-app ayikwazi ukuhanjiswa lapha"</string>
@@ -145,8 +147,10 @@
     <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Shintsha usayizi we-app yewindi ngakwesokunxele"</string>
     <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Shintsha usayizi we-app yewindi ngakwesokudla"</string>
     <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Khulisa noma buyisela usayizi wewindi"</string>
-    <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Faka imodi yokuhlukanisa isikrini"</string>
-    <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Faka imodi yokwenza iwindi yedeskithophu"</string>
+    <!-- no translation found for app_handle_chip_accessibility_announce (499881698947450536) -->
+    <skip />
+    <!-- no translation found for app_handle_menu_accessibility_announce (7928858564852785398) -->
+    <skip />
     <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Shintsha usayizi wewindi ngakwesokunxele"</string>
     <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Shintsha usayizi wewindi ngakwesokudla"</string>
     <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Khulisa noma buyisela usayizi wewindi"</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
index 5bd8d86..0f1bf5e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
@@ -15,6 +15,8 @@
  */
 package com.android.wm.shell.bubbles;
 
+import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR;
+
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -35,7 +37,6 @@
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.android.launcher3.icons.DotRenderer;
-import com.android.launcher3.icons.IconNormalizer;
 import com.android.wm.shell.R;
 import com.android.wm.shell.shared.animation.Interpolators;
 
@@ -132,7 +133,7 @@
 
     private void getOutline(Outline outline) {
         final int bubbleSize = mPositioner.getBubbleSize();
-        final int normalizedSize = IconNormalizer.getNormalizedCircleSize(bubbleSize);
+        final int normalizedSize = Math.round(ICON_VISIBLE_AREA_FACTOR * bubbleSize);
         final int inset = (bubbleSize - normalizedSize) / 2;
         outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index 58b46d2..305fcdd 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -595,7 +595,10 @@
      * <p>If bubble bar is supported, bubble views will be updated to switch to bar mode.
      */
     public void registerBubbleStateListener(Bubbles.BubbleStateListener listener) {
-        if (Flags.enableBubbleBar() && mBubblePositioner.isLargeScreen() && listener != null) {
+        final boolean bubbleBarAllowed = Flags.enableBubbleBar()
+                && (mBubblePositioner.isLargeScreen() || Flags.enableBubbleBarOnPhones())
+                && listener != null;
+        if (bubbleBarAllowed) {
             // Only set the listener if we can show the bubble bar.
             mBubbleStateListener = listener;
             setUpBubbleViewsForMode();
@@ -772,7 +775,7 @@
     /** Whether bubbles would be shown with the bubble bar UI. */
     public boolean isShowingAsBubbleBar() {
         return Flags.enableBubbleBar()
-                && mBubblePositioner.isLargeScreen()
+                && (mBubblePositioner.isLargeScreen() || Flags.enableBubbleBarOnPhones())
                 && mBubbleStateListener != null;
     }
 
@@ -909,7 +912,7 @@
             // TODO(b/393172431) : Utilise DragZoneFactory once it is ready
             final int bubbleBarDropZoneSideSize = getContext().getResources().getDimensionPixelSize(
                     R.dimen.bubble_bar_drop_zone_side_size);
-            int top = t - bubbleBarDropZoneSideSize;
+            int top = b - bubbleBarDropZoneSideSize;
             result.put(BubbleBarLocation.LEFT,
                     new Rect(l, top, l + bubbleBarDropZoneSideSize, b));
             result.put(BubbleBarLocation.RIGHT,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
index 5273a7c..33f1b94 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
@@ -16,6 +16,7 @@
 
 package com.android.wm.shell.bubbles;
 
+import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR;
 import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BUBBLES;
 
 import android.content.Context;
@@ -31,7 +32,7 @@
 import androidx.annotation.VisibleForTesting;
 
 import com.android.internal.protolog.ProtoLog;
-import com.android.launcher3.icons.IconNormalizer;
+import com.android.wm.shell.Flags;
 import com.android.wm.shell.R;
 import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
 import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider;
@@ -556,8 +557,7 @@
     public float getPointerPosition(float bubblePosition) {
         // TODO: I don't understand why it works but it does - why normalized in portrait
         //  & not in landscape? Am I missing ~2dp in the portrait expandedViewY calculation?
-        final float normalizedSize = IconNormalizer.getNormalizedCircleSize(
-                getBubbleSize());
+        final float normalizedSize = Math.round(ICON_VISIBLE_AREA_FACTOR * getBubbleSize());
         return showBubblesVertically()
                 ? bubblePosition + (getBubbleSize() / 2f)
                 : bubblePosition + (normalizedSize / 2f) - mPointerWidth;
@@ -906,7 +906,7 @@
         if (isOverflow) {
             return mOverflowHeight;
         } else {
-            return getBubbleBarExpandedViewHeightForLandscape();
+            return getBubbleBarExpandedViewHeight();
         }
     }
 
@@ -927,18 +927,23 @@
      * |      bottom inset ↕  |   ↓
      * |----------------------| --- mScreenRect.bottom
      */
-    private int getBubbleBarExpandedViewHeightForLandscape() {
+    private int getBubbleBarExpandedViewHeight() {
         int heightOfBubbleBarContainer =
                 mScreenRect.height() - getExpandedViewBottomForBubbleBar();
-        // getting landscape height from screen rect
-        int expandedViewHeight = Math.min(mScreenRect.width(), mScreenRect.height());
+        int expandedViewHeight;
+        if (Flags.enableBubbleBarOnPhones() && !mDeviceConfig.isLargeScreen()) {
+            // we're on a phone, use the max / height
+            expandedViewHeight = Math.max(mScreenRect.width(), mScreenRect.height());
+        } else {
+            // getting landscape height from screen rect
+            expandedViewHeight = Math.min(mScreenRect.width(), mScreenRect.height());
+        }
         expandedViewHeight -= heightOfBubbleBarContainer; /* removing bubble container height */
         expandedViewHeight -= mInsets.top; /* removing top inset */
         expandedViewHeight -= mExpandedViewPadding; /* removing spacing */
         return expandedViewHeight;
     }
 
-
     /** The bottom position of the expanded view when showing above the bubble bar. */
     public int getExpandedViewBottomForBubbleBar() {
         return mBubbleBarTopOnScreen - mExpandedViewPadding;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
index e3b0872..29837dc 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
@@ -135,6 +135,7 @@
 
     /** Shows the expanded view drop target at the requested {@link BubbleBarLocation location} */
     public void showBubbleBarExtendedViewDropTarget(@NonNull BubbleBarLocation bubbleBarLocation) {
+        setVisibility(VISIBLE);
         mBubbleExpandedViewPinController.showDropTarget(bubbleBarLocation);
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/OffscreenTouchZone.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/OffscreenTouchZone.java
index 381f0b0..3211307 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/OffscreenTouchZone.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/OffscreenTouchZone.java
@@ -56,6 +56,7 @@
     /** The function that will be run when this zone is tapped. */
     private final Runnable mOnClickRunnable;
     private SurfaceControlViewHost mViewHost;
+    private SurfaceControl mLeash;
 
     /**
      * @param isTopLeft Whether the desired touch zone will be on the top/left or the bottom/right
@@ -96,6 +97,7 @@
                 .setCallsite("OffscreenTouchZone::init");
         builder.setParent(stageRoot);
         SurfaceControl leash = builder.build();
+        mLeash = leash;
 
         // Create a ViewHost that will hold our view.
         WindowlessWindowManager wwm = new WindowlessWindowManager(config, leash, null);
@@ -117,10 +119,14 @@
     }
 
     /** Releases the touch zone when it's no longer needed. */
-    void release() {
+    void release(SurfaceControl.Transaction t) {
         if (mViewHost != null) {
             mViewHost.release();
         }
+        if (mLeash != null) {
+            t.remove(mLeash);
+            mLeash = null;
+        }
     }
 
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
index 708e26c..720e8e5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
@@ -461,7 +461,14 @@
             return;
         }
 
-        mOffscreenTouchZones.forEach(OffscreenTouchZone::release);
+        // TODO (b/349828130): It would be good to reuse a Transaction from StageCoordinator's
+        //  mTransactionPool here, but passing it through SplitLayout and specifically
+        //  SplitLayout.release() is complicated because that function is purposely called with a
+        //  null value sometimes. When that function is refactored, we should also pass the
+        //  Transaction in here.
+        SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+        mOffscreenTouchZones.forEach(touchZone -> touchZone.release(t));
+        t.apply();
         mOffscreenTouchZones.clear();
     }
 
@@ -975,8 +982,16 @@
         final boolean shouldVeil =
                 insets.left != 0 || insets.top != 0 || insets.right != 0 || insets.bottom != 0;
 
+        // Find the "left/top"-most position of the app surface -- usually 0, but sometimes negative
+        // if the left/top app is offscreen.
+        int leftTop = 0;
+        if (Flags.enableFlexibleTwoAppSplit()) {
+            leftTop = mIsLeftRightSplit ? getTopLeftBounds().left : getTopLeftBounds().top;
+        }
+
         final int dividerPos = mDividerSnapAlgorithm.calculateNonDismissingSnapTarget(
-                mIsLeftRightSplit ? getBottomRightBounds().width() : getBottomRightBounds().height()
+                leftTop + (mIsLeftRightSplit
+                        ? getBottomRightBounds().width() : getBottomRightBounds().height())
         ).position;
         final Rect endBounds1 = new Rect();
         final Rect endBounds2 = new Rect();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index f7fe694..93058db 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -73,6 +73,7 @@
 import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_SNAP_RESIZE
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.internal.protolog.ProtoLog
+import com.android.internal.util.LatencyTracker
 import com.android.window.flags.Flags
 import com.android.wm.shell.Flags.enableFlexibleSplit
 import com.android.wm.shell.R
@@ -748,9 +749,9 @@
         desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
             DRAG_TO_DESKTOP_FINISH_ANIM_DURATION_MS.toInt()
         )
-        transition?.let {
-            taskIdToMinimize?.let { taskId ->
-                addPendingMinimizeTransition(it, taskId, MinimizeReason.TASK_LIMIT)
+        if (transition != null) {
+            taskIdToMinimize?.let {
+                addPendingMinimizeTransition(transition, it, MinimizeReason.TASK_LIMIT)
             }
             exitResult.asExit()?.runOnTransitionStart?.invoke(transition)
             if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
@@ -765,6 +766,9 @@
             } else {
                 taskRepository.setActiveDesk(displayId = taskInfo.displayId, deskId = deskId)
             }
+        } else {
+            LatencyTracker.getInstance(context)
+                .onActionCancel(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
         }
     }
 
@@ -3084,6 +3088,8 @@
         val indicatorType = indicator.updateIndicatorType(inputCoordinates)
         when (indicatorType) {
             IndicatorType.TO_DESKTOP_INDICATOR -> {
+                LatencyTracker.getInstance(context)
+                    .onActionStart(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
                 // Start a new jank interaction for the drag release to desktop window animation.
                 interactionJankMonitor.begin(
                     taskSurface,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
index 0929ae1..cb23180 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
@@ -35,6 +35,7 @@
 import com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_RELEASE
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.internal.protolog.ProtoLog
+import com.android.internal.util.LatencyTracker
 import com.android.wm.shell.RootTaskDisplayAreaOrganizer
 import com.android.wm.shell.animation.FloatProperties
 import com.android.wm.shell.bubbles.BubbleController
@@ -42,7 +43,7 @@
 import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP
 import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP
 import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
-import com.android.wm.shell.protolog.ShellProtoLogGroup
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
 import com.android.wm.shell.shared.TransitionUtil
 import com.android.wm.shell.shared.animation.PhysicsAnimator
 import com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT
@@ -119,10 +120,7 @@
         dragToDesktopAnimator: MoveToDesktopAnimator,
     ) {
         if (inProgress) {
-            ProtoLog.v(
-                ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
-                "DragToDesktop: Drag to desktop transition already in progress.",
-            )
+            logV("Drag to desktop transition already in progress.")
             return
         }
 
@@ -536,12 +534,14 @@
             state.cancelState == CancelState.CANCEL_SPLIT_LEFT ||
                 state.cancelState == CancelState.CANCEL_SPLIT_RIGHT
         ) {
+            logV("mergeAnimation: cancel through split")
             clearState()
             return
         }
         // In case of bubble animation, finish the initial desktop drag animation, but keep the
         // current animation running and have bubbles take over
         if (info.type == TRANSIT_CONVERT_TO_BUBBLE) {
+            logV("mergeAnimation: convert-to-bubble")
             state.startTransitionFinishCb?.onTransitionFinished(/* wct= */ null)
             clearState()
             return
@@ -561,6 +561,7 @@
             state.startTransitionFinishCb
                 ?: error("Start transition expected to be waiting for merge but wasn't")
         if (isEndTransition) {
+            logV("mergeAnimation: end-transition, target=$mergeTarget")
             setupEndDragToDesktop(
                 info,
                 startTransaction = startT,
@@ -568,8 +569,15 @@
             )
             // Call finishCallback to merge animation before startTransitionFinishCb is called
             finishCallback.onTransitionFinished(/* wct= */ null)
+            LatencyTracker.getInstance(context)
+                .onActionEnd(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
             animateEndDragToDesktop(startTransaction = startT, startTransitionFinishCb)
-        } else if (isCancelTransition) {
+            return
+        }
+        if (isCancelTransition) {
+            logV("mergeAnimation: cancel-transition, target=$mergeTarget")
+            LatencyTracker.getInstance(context)
+                .onActionCancel(LatencyTracker.ACTION_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG)
             info.changes.forEach { change ->
                 startT.show(change.leash)
                 startTransactionFinishT.show(change.leash)
@@ -578,7 +586,9 @@
             finishCallback.onTransitionFinished(/* wct= */ null)
             startTransitionFinishCb.onTransitionFinished(/* wct= */ null)
             clearState()
+            return
         }
+        logW("unhandled merge transition: transitionInfo=$info")
     }
 
     protected open fun setupEndDragToDesktop(
@@ -719,10 +729,7 @@
             return
         }
         if (state.startTransitionToken == transition) {
-            ProtoLog.v(
-                ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
-                "DragToDesktop: onTransitionConsumed() start transition aborted",
-            )
+            logV("onTransitionConsumed() start transition aborted")
             state.startAborted = true
             // The start-transition (DRAG_HOLD) is aborted, cancel its jank interaction.
             interactionJankMonitor.cancel(CUJ_DESKTOP_MODE_ENTER_APP_HANDLE_DRAG_HOLD)
@@ -945,7 +952,16 @@
         CANCEL_BUBBLE_RIGHT,
     }
 
+    private fun logV(msg: String, vararg arguments: Any?) {
+        ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+    }
+
+    private fun logW(msg: String, vararg arguments: Any?) {
+        ProtoLog.w(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+    }
+
     companion object {
+        private const val TAG = "DragToDesktopTransitionHandler"
         /** The duration of the animation to commit or cancel the drag-to-desktop gesture. */
         @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
         const val DRAG_TO_DESKTOP_FINISH_ANIM_DURATION_MS = 336L
@@ -1047,10 +1063,7 @@
         val state = requireTransitionState()
         val homeLeash = state.homeChange?.leash
         if (homeLeash == null) {
-            ProtoLog.e(
-                ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
-                "DragToDesktop: home leash is null",
-            )
+            logE("home leash is null")
         } else {
             // Hide home on finish to prevent flickering when wallpaper activity flag is enabled
             finishTransaction.hide(homeLeash)
@@ -1091,6 +1104,12 @@
         val startBoundsWithOffset =
             Rect(startBounds).apply { offset(startPosition.x.toInt(), startPosition.y.toInt()) }
 
+        logV(
+            "animateEndDragToDesktop: startBounds=$startBounds, endBounds=$endBounds, " +
+                "startScale=$startScale, startPosition=$startPosition, " +
+                "startBoundsWithOffset=$startBoundsWithOffset"
+        )
+
         dragToDesktopStateListener?.onCommitToDesktopAnimationStart()
         // Accept the merge by applying the merging transaction (applied by #showResizeVeil)
         // and finish callback. Show the veil and position the task at the first frame before
@@ -1172,7 +1191,16 @@
             .start()
     }
 
+    private fun logV(msg: String, vararg arguments: Any?) {
+        ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+    }
+
+    private fun logE(msg: String, vararg arguments: Any?) {
+        ProtoLog.e(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+    }
+
     companion object {
+        private const val TAG = "SpringDragToDesktopTransitionHandler"
         /** The freeform tasks initial scale when committing the drag-to-desktop gesture. */
         private val FREEFORM_TASKS_INITIAL_SCALE =
             propertyValue("freeform_tasks_initial_scale", scale = 100f, default = 0.9f)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java
index 118ad9c..fa14bc9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java
@@ -30,6 +30,7 @@
 import android.view.accessibility.AccessibilityWindowInfo;
 import android.view.accessibility.IAccessibilityInteractionConnection;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 import android.window.ScreenCapture;
 
 import androidx.annotation.BinderThread;
@@ -373,6 +374,13 @@
         }
 
         @Override
+        public void getWindowSurfaceInfo(IWindowSurfaceInfoCallback callback) {
+            // AbstractAccessibilityServiceConnection uses the standard
+            // IAccessibilityInteractionConnection for takeScreenshotOfWindow for Pip windows,
+            // so do nothing here.
+        }
+
+        @Override
         public void clearAccessibilityFocus() throws RemoteException {
             // Do nothing
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 73b42d6..77a7c54 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -1317,6 +1317,10 @@
         WindowContainerTransaction noFocus = new WindowContainerTransaction();
         noFocus.setFocusable(mRootTaskInfo.token, false);
         mSyncQueue.queue(noFocus);
+        // Remove touch layers, since offscreen apps coming onscreen will not need their touch
+        // layers anymore. populateTouchZones() is called in the end callback to inflate new touch
+        // layers in the appropriate places.
+        mSplitLayout.removeTouchZones();
 
         mSplitLayout.playSwapAnimation(t, topLeftStage, bottomRightStage,
                 insets -> {
@@ -1337,6 +1341,7 @@
                     mSyncQueue.runInSync(st -> {
                         mSplitLayout.updateStateWithCurrentPosition();
                         updateSurfaceBounds(mSplitLayout, st, false /* applyResizingOffset */);
+                        mSplitLayout.populateTouchZones();
 
                         // updateSurfaceBounds(), above, officially puts the two apps in their new
                         // stages. Starting on the next frame, all calculations are made using the
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
index c5994f8..e132c5e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
@@ -681,7 +681,8 @@
             // C. The background of the adaptive icon is grayscale, and the foreground of the
             // adaptive icon forms a certain contrast with the theme color.
             // D. Didn't specify icon background color.
-            if (!iconColor.mIsBgComplex && mTmpAttrs.mIconBgColor == Color.TRANSPARENT
+            if (iconForeground != null
+                    && !iconColor.mIsBgComplex && mTmpAttrs.mIconBgColor == Color.TRANSPARENT
                     && (isRgbSimilarInHsv(mThemeColor, iconColor.mBgColor)
                             || (iconColor.mIsBgGrayscale
                                     && !isRgbSimilarInHsv(mThemeColor, iconColor.mFgColor)))) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java
index cc962ac..caed194 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java
@@ -368,8 +368,12 @@
         mStartingWindowRecordManager.addRecord(taskId, tView);
     }
 
-    private void removeWindowInner(@NonNull View decorView, boolean hideView) {
+    private void removeWindowInner(@NonNull View decorView, StartingWindowRemovalInfo info,
+            boolean hideView) {
         requestTopUi(false);
+        if (info.windowAnimationLeash != null && info.windowAnimationLeash.isValid()) {
+            info.windowAnimationLeash.release();
+        }
         if (decorView.getParent() == null) {
             Slog.w(TAG, "This root view has no parent, never been added to a ViewRootImpl?");
             return;
@@ -452,22 +456,22 @@
             if (mSplashView == null) {
                 // shouldn't happen, the app window may be drawn earlier than starting window?
                 Slog.e(TAG, "Found empty splash screen, remove!");
-                removeWindowInner(mRootView, false);
+                removeWindowInner(mRootView, info, false);
                 return true;
             }
             if (immediately
                     || mSuggestType == STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN) {
-                removeWindowInner(mRootView, false);
+                removeWindowInner(mRootView, info, false);
             } else {
                 if (info.playRevealAnimation) {
                     mSplashscreenContentDrawer.applyExitAnimation(mSplashView,
                             info.windowAnimationLeash, info.mainFrame,
-                            () -> removeWindowInner(mRootView, true),
+                            () -> removeWindowInner(mRootView, info, true),
                             mCreateTime, info.roundedCornerRadius);
                 } else {
                     // the SplashScreenView has been copied to client, hide the view to skip
                     // default exit animation
-                    removeWindowInner(mRootView, true);
+                    removeWindowInner(mRootView, info, true);
                 }
             }
             return true;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
index 88cc94c..7af6b8e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt
@@ -90,6 +90,7 @@
     private var viewHost: SurfaceControlViewHost? = null
     private var display: Display? = null
     private var veilAnimator: ValueAnimator? = null
+    private var iconAnimator: ValueAnimator? = null
     private var loadAppInfoJob: Job? = null
 
     /**
@@ -241,7 +242,7 @@
                     }
                 })
             }
-            val iconAnimator = ValueAnimator.ofFloat(0f, 1f).apply {
+            iconAnimator = ValueAnimator.ofFloat(0f, 1f).apply {
                 duration = RESIZE_ALPHA_DURATION
                 addUpdateListener {
                     iconAnimT.setAlpha(icon, animatedValue as Float)
@@ -265,7 +266,7 @@
                     .hide(background)
                     .apply()
             veilAnimator?.start()
-            iconAnimator.start()
+            iconAnimator?.start()
         } else {
             // Show the veil immediately.
             t.apply()
@@ -414,6 +415,10 @@
     private fun cancelAnimation() {
         veilAnimator?.removeAllUpdateListeners()
         veilAnimator?.cancel()
+        veilAnimator = null
+        iconAnimator?.removeAllUpdateListeners()
+        iconAnimator?.cancel()
+        iconAnimator = null
     }
 
     /**
@@ -421,7 +426,6 @@
      */
     fun dispose() {
         cancelAnimation()
-        veilAnimator = null
         isVisible = false
         loadAppInfoJob?.cancel()
 
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
index 2115f70..af2840e 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
@@ -45,6 +45,7 @@
         tapl.setExpectedRotation(rotation.value)
         ChangeDisplayOrientationRule.setRotation(rotation)
         tapl.enableTransientTaskbar(false)
+        testApp.exit(wmHelper)
     }
 
     @Test
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index f5e10d9..7a51c20 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -44,6 +44,9 @@
 
 namespace {
 
+constexpr int32_t kDefaultDisplayId = 0;
+constexpr int32_t kDefaultDeviceId = 0;
+
 using EntryValue = std::variant<Res_value, incfs::verified_map_ptr<ResTable_map_entry>>;
 
 /* NOTE: table_entry has been verified in LoadedPackage::GetEntryFromOffset(),
@@ -61,7 +64,7 @@
   return table_entry->value();
 }
 
-} // namespace
+}  // namespace
 
 struct FindEntryResult {
   // The cookie representing the ApkAssets in which the value resides.
@@ -99,14 +102,15 @@
   Res_value value;
 };
 
-AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& configuration) {
+AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& configuration)
+  : display_id_(kDefaultDisplayId), device_id_(kDefaultDeviceId) {
   configurations_.push_back(configuration);
 
   // Don't invalidate caches here as there's nothing cached yet.
   SetApkAssets(apk_assets, false);
 }
 
-AssetManager2::AssetManager2() {
+AssetManager2::AssetManager2() : display_id_(kDefaultDisplayId), device_id_(kDefaultDeviceId) {
   configurations_.emplace_back();
 }
 
@@ -172,8 +176,7 @@
       // to take effect.
       auto iter = target_assets_package_ids.find(loaded_idmap->TargetApkPath());
       if (iter == target_assets_package_ids.end()) {
-         LOG(INFO) << "failed to find target package for overlay "
-                   << loaded_idmap->OverlayApkPath();
+        LOG(INFO) << "failed to find target package for overlay " << loaded_idmap->OverlayApkPath();
       } else {
         uint8_t target_package_id = iter->second;
 
@@ -189,10 +192,11 @@
                                   << " assigned package group";
 
         PackageGroup& target_package_group = package_groups_[target_idx];
-        target_package_group.overlays_.push_back(
-            ConfiguredOverlay{loaded_idmap->GetTargetResourcesMap(target_package_id,
-                                                                  overlay_ref_table.get()),
-                              apk_assets_cookies[apk_assets]});
+        target_package_group.overlays_.push_back(ConfiguredOverlay{
+                  loaded_idmap->GetTargetResourcesMap(target_package_id, overlay_ref_table.get()),
+                  apk_assets_cookies[apk_assets],
+                  IsAnyOverlayConstraintSatisfied(loaded_idmap->GetConstraints())
+        });
       }
     }
 
@@ -291,7 +295,7 @@
   }
   LOG(INFO) << "Package ID map: " << list;
 
-  for (const auto& package_group: package_groups_) {
+  for (const auto& package_group : package_groups_) {
     list = "";
     for (const auto& package : package_group.packages_) {
       const LoadedPackage* loaded_package = package.loaded_package_;
@@ -347,7 +351,6 @@
 
 const std::unordered_map<std::string, std::string>*
   AssetManager2::GetOverlayableMapForPackage(uint32_t package_id) const {
-
   if (package_id >= package_ids_.size()) {
     return nullptr;
   }
@@ -462,6 +465,28 @@
   }
 }
 
+void AssetManager2::SetOverlayConstraints(int32_t display_id, int32_t device_id) {
+  bool changed = false;
+  if (display_id_ != display_id) {
+    display_id_ = display_id;
+    changed = true;
+  }
+  if (device_id_ != device_id) {
+    device_id_ = device_id;
+    changed = true;
+  }
+  if (changed) {
+    // Enable/disable overlays based on current constraints
+    for (PackageGroup& group : package_groups_) {
+      for (auto &overlay: group.overlays_) {
+        overlay.enabled = IsAnyOverlayConstraintSatisfied(
+                overlay.overlay_res_maps_.GetConstraints());
+      }
+    }
+    InvalidateCaches(static_cast<uint32_t>(-1));
+  }
+}
+
 std::set<AssetManager2::ApkAssetsPtr> AssetManager2::GetNonSystemOverlays() const {
   std::set<ApkAssetsPtr> non_system_overlays;
   for (const PackageGroup& package_group : package_groups_) {
@@ -475,6 +500,8 @@
 
     if (!found_system_package) {
       auto op = StartOperation();
+      // Return all overlays, including the disabled ones as this is used for static info
+      // collection only.
       for (const ConfiguredOverlay& overlay : package_group.overlays_) {
         if (const auto& asset = GetApkAssets(overlay.cookie)) {
           non_system_overlays.insert(std::move(asset));
@@ -651,7 +678,6 @@
 
   auto op = StartOperation();
 
-
   // Retrieve the package group from the package id of the resource id.
   if (UNLIKELY(!is_valid_resid(resid))) {
     LOG(ERROR) << base::StringPrintf("Invalid resource ID 0x%08x.", resid);
@@ -672,7 +698,7 @@
   std::optional<FindEntryResult> final_result;
   bool final_has_locale = false;
   bool final_overlaid = false;
-  for (auto & config : configurations_) {
+  for (auto& config : configurations_) {
     // Might use this if density_override != 0.
     ResTable_config density_override_config;
 
@@ -698,7 +724,8 @@
       }
       if (!assets->IsLoader()) {
         for (const auto& id_map : package_group.overlays_) {
-          auto overlay_entry = id_map.overlay_res_maps_.Lookup(resid);
+          auto overlay_entry = id_map.enabled ?
+                  id_map.overlay_res_maps_.Lookup(resid) : IdmapResMap::Result();
           if (!overlay_entry) {
             // No id map entry exists for this target resource.
             continue;
@@ -708,7 +735,7 @@
             ConfigDescription best_frro_config;
             Res_value best_frro_value;
             bool frro_found = false;
-            for( const auto& [config, value] : overlay_entry.GetInlineValue()) {
+            for (const auto& [config, value] : overlay_entry.GetInlineValue()) {
               if ((!frro_found || config.isBetterThan(best_frro_config, desired_config))
                   && config.match(*desired_config)) {
                 frro_found = true;
@@ -1011,7 +1038,7 @@
                                      resid, resource_name_string.c_str(), conf.toString().c_str());
     char str[40];
     str[0] = '\0';
-    for(auto iter = configurations_.begin(); iter < configurations_.end(); iter++) {
+    for (auto iter = configurations_.begin(); iter < configurations_.end(); iter++) {
       iter->getBcp47Locale(str);
       log_stream << base::StringPrintf(" %s%s", str, iter < configurations_.end() ? "," : "");
     }
@@ -1504,7 +1531,7 @@
       package.loaded_package_->ForEachTypeSpec([&](const TypeSpec& type_spec, uint8_t type_id) {
         FilteredConfigGroup* group = nullptr;
         for (const auto& type_entry : type_spec.type_entries) {
-          for (auto & config : configurations_) {
+          for (auto& config : configurations_) {
             if (type_entry.config.match(config)) {
               if (!group) {
                 group = &package.filtered_configs_.editItemAt(type_id - 1);
@@ -1521,6 +1548,27 @@
   }
 }
 
+bool AssetManager2::IsAnyOverlayConstraintSatisfied(const Idmap_constraints& constraints) const {
+  if (constraints.constraint_count == 0) {
+    // There are no constraints, return true.
+    return true;
+  }
+
+  for (uint32_t i = 0; i < constraints.constraint_count; i++) {
+    auto constraint = constraints.constraint_entries[i];
+    if (constraint.constraint_type == kOverlayConstraintTypeDisplayId &&
+        constraint.constraint_value == display_id_) {
+      return true;
+    }
+    if (constraint.constraint_type == kOverlayConstraintTypeDeviceId &&
+        constraint.constraint_value == device_id_) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
 void AssetManager2::InvalidateCaches(uint32_t diff) {
   cached_resolved_values_.clear();
 
diff --git a/libs/androidfw/Idmap.cpp b/libs/androidfw/Idmap.cpp
index f0ef97e5..8d1de1a 100644
--- a/libs/androidfw/Idmap.cpp
+++ b/libs/androidfw/Idmap.cpp
@@ -56,13 +56,6 @@
   // without having to read/store each header entry separately.
 };
 
-struct Idmap_constraint {
-  // Constraint type can be TYPE_DISPLAY_ID or TYP_DEVICE_ID, please refer
-  // to ConstraintType in OverlayConstraint.java
-  uint32_t constraint_type;
-  uint32_t constraint_value;
-};
-
 struct Idmap_data_header {
   uint32_t target_entry_count;
   uint32_t target_inline_entry_count;
@@ -148,12 +141,13 @@
   return DynamicRefTable::lookupResourceId(resId);
 }
 
-IdmapResMap::IdmapResMap(const Idmap_data_header* data_header, Idmap_target_entries entries,
-                         Idmap_target_inline_entries inline_entries,
+IdmapResMap::IdmapResMap(const Idmap_data_header* data_header, const Idmap_constraints& constraints,
+                         Idmap_target_entries entries, Idmap_target_inline_entries inline_entries,
                          const Idmap_target_entry_inline_value* inline_entry_values,
                          const ConfigDescription* configs, uint8_t target_assigned_package_id,
                          const OverlayDynamicRefTable* overlay_ref_table)
     : data_header_(data_header),
+      constraints_(constraints),
       entries_(entries),
       inline_entries_(inline_entries),
       inline_entry_values_(inline_entry_values),
@@ -254,7 +248,7 @@
   }
   return std::string_view(data, *len);
 }
-} // namespace
+}  // namespace
 
 // O_PATH is a lightweight way of creating an FD, only exists on Linux
 #ifndef O_PATH
@@ -262,9 +256,7 @@
 #endif
 
 LoadedIdmap::LoadedIdmap(const std::string& idmap_path, const Idmap_header* header,
-                         const Idmap_constraint* constraints,
-                         uint32_t constraints_count,
-                         const Idmap_data_header* data_header,
+                         const Idmap_data_header* data_header, const Idmap_constraints& constraints,
                          Idmap_target_entries target_entries,
                          Idmap_target_inline_entries target_inline_entries,
                          const Idmap_target_entry_inline_value* inline_entry_values,
@@ -272,9 +264,8 @@
                          std::unique_ptr<ResStringPool>&& string_pool,
                          std::string_view overlay_apk_path, std::string_view target_apk_path)
     : header_(header),
-      constraints_(constraints),
-      constraints_count_(constraints_count),
       data_header_(data_header),
+      constraints_(constraints),
       target_entries_(target_entries),
       target_inline_entries_(target_inline_entries),
       inline_entry_values_(inline_entry_values),
@@ -328,16 +319,20 @@
     return {};
   }
 
-  auto constraints_count = ReadType<uint32_t>(&data_ptr, &data_size, "constraints count");
-  if (!constraints_count) {
+  auto constraint_count = ReadType<uint32_t>(&data_ptr, &data_size, "constraint count");
+  if (!constraint_count) {
+    LOG(ERROR) << "idmap doesn't have constraint count";
     return {};
   }
-  auto constraints = *constraints_count > 0 ?
-      ReadType<Idmap_constraint>(&data_ptr, &data_size, "constraints", *constraints_count)
+  auto constraint_entries = *constraint_count > 0 ?
+      ReadType<Idmap_constraint>(&data_ptr, &data_size, "constraints", dtohl(*constraint_count))
       : nullptr;
-  if (*constraints_count > 0 && !constraints) {
+  if (*constraint_count > 0 && !constraint_entries) {
+    LOG(ERROR) << "no constraint entries in idmap with non-zero constraints";
     return {};
   }
+  Idmap_constraints constraints{.constraint_count = *constraint_count,
+                                .constraint_entries = constraint_entries};
 
   // Parse the idmap data blocks. Currently idmap2 can only generate one data block.
   auto data_header = ReadType<Idmap_data_header>(&data_ptr, &data_size, "data header");
@@ -405,10 +400,9 @@
 
   // Can't use make_unique because LoadedIdmap constructor is private.
   return std::unique_ptr<LoadedIdmap>(
-      new LoadedIdmap(std::string(idmap_path), header, constraints, *constraints_count,
-                      data_header, target_entries, target_inline_entries,
-                      target_inline_entry_values,configurations, overlay_entries,
-                      std::move(idmap_string_pool),*overlay_path, *target_path));
+      new LoadedIdmap(std::string(idmap_path), header, data_header, constraints, target_entries,
+                      target_inline_entries, target_inline_entry_values, configurations,
+                      overlay_entries, std::move(idmap_string_pool), *overlay_path, *target_path));
 }
 
 UpToDate LoadedIdmap::IsUpToDate() const {
diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h
index 0fdeefa..a47fe6a7 100644
--- a/libs/androidfw/include/androidfw/AssetManager2.h
+++ b/libs/androidfw/include/androidfw/AssetManager2.h
@@ -171,6 +171,8 @@
     default_locale_ = default_locale;
   }
 
+  void SetOverlayConstraints(int32_t display_id, int32_t device_id);
+
   // Returns all configurations for which there are resources defined, or an I/O error if reading
   // resource data failed.
   //
@@ -389,6 +391,9 @@
 
       // The cookie of the overlay assets.
       ApkAssetsCookie cookie;
+
+      // Enable/disable status of the overlay based on current constraints of AssetManager.
+      bool enabled;
   };
 
   // Represents a logical package, which can be made up of many individual packages. Each package
@@ -457,6 +462,8 @@
   // promoted apk assets when the last operation ends.
   void FinishOperation() const;
 
+  bool IsAnyOverlayConstraintSatisfied(const Idmap_constraints& constraints) const;
+
   // The ordered list of ApkAssets to search. These are not owned by the AssetManager, and must
   // have a longer lifetime.
   // The second pair element is the promoted version of the assets, that is held for the duration
@@ -480,6 +487,9 @@
   // may need to be purged.
   ftl::SmallVector<ResTable_config, 1> configurations_;
 
+  int32_t display_id_;
+  int32_t device_id_;
+
   // Cached set of bags. These are cached because they can inherit keys from parent bags,
   // which involves some calculation.
   mutable std::unordered_map<uint32_t, util::unique_cptr<ResolvedBag>> cached_bags_;
diff --git a/libs/androidfw/include/androidfw/Idmap.h b/libs/androidfw/include/androidfw/Idmap.h
index 0c08563..939b624 100644
--- a/libs/androidfw/include/androidfw/Idmap.h
+++ b/libs/androidfw/include/androidfw/Idmap.h
@@ -59,13 +59,25 @@
 class LoadedIdmap;
 class IdmapResMap;
 struct Idmap_header;
-struct Idmap_constraint;
+struct Idmap_constraints;
 struct Idmap_data_header;
-struct Idmap_target_entry;
 struct Idmap_target_entry_inline;
 struct Idmap_target_entry_inline_value;
-struct Idmap_overlay_entry;
 
+// LINT.IfChange
+constexpr int32_t kOverlayConstraintTypeDisplayId = 0;
+constexpr int32_t kOverlayConstraintTypeDeviceId = 1;
+// LINT.ThenChange(../../../../core/java/android/content/om/OverlayConstraint.java)
+
+struct Idmap_constraint {
+  // Constraint type can be kOverlayConstraintTypeDisplayId or kOverlayConstraintTypeDeviceId
+  const uint32_t constraint_type;
+  const uint32_t constraint_value;
+};
+struct Idmap_constraints {
+  const uint32_t constraint_count = 0;
+  const Idmap_constraint* constraint_entries = nullptr;
+};
 struct Idmap_target_entries {
   const uint32_t* target_id = nullptr;
   const uint32_t* overlay_id = nullptr;
@@ -169,14 +181,19 @@
     return overlay_ref_table_;
   }
 
+  inline Idmap_constraints GetConstraints() const {
+    return constraints_;
+  }
+
  private:
-  explicit IdmapResMap(const Idmap_data_header* data_header, Idmap_target_entries entries,
-                       Idmap_target_inline_entries inline_entries,
+  explicit IdmapResMap(const Idmap_data_header* data_header, const Idmap_constraints& constraints,
+                       Idmap_target_entries entries, Idmap_target_inline_entries inline_entries,
                        const Idmap_target_entry_inline_value* inline_entry_values,
                        const ConfigDescription* configs, uint8_t target_assigned_package_id,
                        const OverlayDynamicRefTable* overlay_ref_table);
 
   const Idmap_data_header* data_header_;
+  Idmap_constraints constraints_;
   Idmap_target_entries entries_;
   Idmap_target_inline_entries inline_entries_;
   const Idmap_target_entry_inline_value* inline_entry_values_;
@@ -210,8 +227,9 @@
   // Returns a mapping from target resource ids to overlay values.
   IdmapResMap GetTargetResourcesMap(uint8_t target_assigned_package_id,
                                     const OverlayDynamicRefTable* overlay_ref_table) const {
-    return IdmapResMap(data_header_, target_entries_, target_inline_entries_, inline_entry_values_,
-                       configurations_, target_assigned_package_id, overlay_ref_table);
+    return IdmapResMap(data_header_, constraints_, target_entries_, target_inline_entries_,
+                       inline_entry_values_, configurations_, target_assigned_package_id,
+                       overlay_ref_table);
   }
 
   // Returns a dynamic reference table for a loaded overlay package.
@@ -223,14 +241,17 @@
   // LoadedIdmap.
   UpToDate IsUpToDate() const;
 
+  inline const Idmap_constraints GetConstraints() const {
+    return constraints_;
+  }
+
  protected:
   // Exposed as protected so that tests can subclass and mock this class out.
   LoadedIdmap() = default;
 
   const Idmap_header* header_;
-  const Idmap_constraint* constraints_;
-  uint32_t constraints_count_;
   const Idmap_data_header* data_header_;
+  Idmap_constraints constraints_;
   Idmap_target_entries target_entries_;
   Idmap_target_inline_entries target_inline_entries_;
   const Idmap_target_entry_inline_value* inline_entry_values_;
@@ -247,9 +268,7 @@
   DISALLOW_COPY_AND_ASSIGN(LoadedIdmap);
 
   explicit LoadedIdmap(const std::string& idmap_path, const Idmap_header* header,
-                       const Idmap_constraint* constraints,
-                       uint32_t constraints_count,
-                       const Idmap_data_header* data_header,
+                       const Idmap_data_header* data_header, const Idmap_constraints& constraints,
                        Idmap_target_entries target_entries,
                        Idmap_target_inline_entries target_inline_entries,
                        const Idmap_target_entry_inline_value* inline_entry_values_,
diff --git a/libs/hwui/FrameInfo.cpp b/libs/hwui/FrameInfo.cpp
index 36feabd..0e52f4e 100644
--- a/libs/hwui/FrameInfo.cpp
+++ b/libs/hwui/FrameInfo.cpp
@@ -52,8 +52,8 @@
 static_assert(static_cast<int>(FrameInfoIndex::NumIndexes) == 24,
               "Must update value in FrameMetrics.java#FRAME_STATS_COUNT (and here)");
 
-void FrameInfo::importUiThreadInfo(int64_t* info) {
-    memcpy(mFrameInfo, info, UI_THREAD_FRAME_INFO_SIZE * sizeof(int64_t));
+void FrameInfo::importUiThreadInfo(const int64_t* info) {
+    memcpy(mFrameInfo.data(), info, UI_THREAD_FRAME_INFO_SIZE * sizeof(int64_t));
     mSkippedFrameReason.reset();
 }
 
diff --git a/libs/hwui/FrameInfo.h b/libs/hwui/FrameInfo.h
index 61c30b8..b1f479f 100644
--- a/libs/hwui/FrameInfo.h
+++ b/libs/hwui/FrameInfo.h
@@ -84,6 +84,8 @@
 };
 };
 
+using FrameInfoBuffer = std::array<int64_t, static_cast<size_t>(FrameInfoIndex::NumIndexes)>;
+
 class UiFrameInfoBuilder {
 public:
     static constexpr int64_t INVALID_VSYNC_ID = -1;
@@ -132,7 +134,7 @@
 
 class FrameInfo {
 public:
-    void importUiThreadInfo(int64_t* info);
+    void importUiThreadInfo(const int64_t* info);
 
     void markSyncStart() { set(FrameInfoIndex::SyncStart) = systemTime(SYSTEM_TIME_MONOTONIC); }
 
@@ -152,7 +154,7 @@
         set(FrameInfoIndex::Flags) |= static_cast<uint64_t>(frameInfoFlag);
     }
 
-    const int64_t* data() const { return mFrameInfo; }
+    const FrameInfoBuffer& data() const { return mFrameInfo; }
 
     inline int64_t operator[](FrameInfoIndex index) const { return get(index); }
 
@@ -201,7 +203,7 @@
     }
 
 private:
-    int64_t mFrameInfo[static_cast<int>(FrameInfoIndex::NumIndexes)];
+    FrameInfoBuffer mFrameInfo;
     std::optional<SkippedFrameReason> mSkippedFrameReason;
 };
 
diff --git a/libs/hwui/FrameMetricsObserver.h b/libs/hwui/FrameMetricsObserver.h
index 3ea4951..d267740 100644
--- a/libs/hwui/FrameMetricsObserver.h
+++ b/libs/hwui/FrameMetricsObserver.h
@@ -18,12 +18,14 @@
 
 #include <utils/RefBase.h>
 
+#include "FrameInfo.h"
+
 namespace android {
 namespace uirenderer {
 
 class FrameMetricsObserver : public VirtualLightRefBase {
 public:
-    virtual void notify(const int64_t* buffer) = 0;
+    virtual void notify(const FrameInfoBuffer& buffer) = 0;
     bool waitForPresentTime() const { return mWaitForPresentTime; };
 
     void reportMetricsFrom(uint64_t frameNumber, int32_t surfaceControlId) {
diff --git a/libs/hwui/FrameMetricsReporter.cpp b/libs/hwui/FrameMetricsReporter.cpp
index ee32ea1..4ad9c9a 100644
--- a/libs/hwui/FrameMetricsReporter.cpp
+++ b/libs/hwui/FrameMetricsReporter.cpp
@@ -16,10 +16,12 @@
 
 #include "FrameMetricsReporter.h"
 
+#include "FrameInfo.h"
+
 namespace android {
 namespace uirenderer {
 
-void FrameMetricsReporter::reportFrameMetrics(const int64_t* stats, bool hasPresentTime,
+void FrameMetricsReporter::reportFrameMetrics(const FrameInfoBuffer& stats, bool hasPresentTime,
                                               uint64_t frameNumber, int32_t surfaceControlId) {
     FatVector<sp<FrameMetricsObserver>, 10> copy;
     {
diff --git a/libs/hwui/FrameMetricsReporter.h b/libs/hwui/FrameMetricsReporter.h
index 7e51df7c..71b3f52 100644
--- a/libs/hwui/FrameMetricsReporter.h
+++ b/libs/hwui/FrameMetricsReporter.h
@@ -35,12 +35,12 @@
 public:
     FrameMetricsReporter() {}
 
-    void addObserver(FrameMetricsObserver* observer) {
+    void addObserver(sp<FrameMetricsObserver>&& observer) {
         std::lock_guard lock(mObserversLock);
-        mObservers.push_back(observer);
+        mObservers.push_back(std::move(observer));
     }
 
-    bool removeObserver(FrameMetricsObserver* observer) {
+    bool removeObserver(const sp<FrameMetricsObserver>& observer) {
         std::lock_guard lock(mObserversLock);
         for (size_t i = 0; i < mObservers.size(); i++) {
             if (mObservers[i].get() == observer) {
@@ -69,7 +69,7 @@
      * stats of frames that are from "old" surfaces (i.e. with surfaceControlIds older than the one
      * the observer was attached on) nor those that are from "old" frame numbers.
      */
-    void reportFrameMetrics(const int64_t* stats, bool hasPresentTime, uint64_t frameNumber,
+    void reportFrameMetrics(const FrameInfoBuffer& stats, bool hasPresentTime, uint64_t frameNumber,
                             int32_t surfaceControlId);
 
 private:
diff --git a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
index 99e7740..cfec24b 100644
--- a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
@@ -915,20 +915,22 @@
 
 static void android_view_ThreadedRenderer_addObserver(JNIEnv* env, jclass clazz,
         jlong proxyPtr, jlong observerPtr) {
-    HardwareRendererObserver* observer = reinterpret_cast<HardwareRendererObserver*>(observerPtr);
+    FrameMetricsObserver* rawObserver = reinterpret_cast<FrameMetricsObserver*>(observerPtr);
+    sp<FrameMetricsObserver> observer = sp<FrameMetricsObserver>::fromExisting(rawObserver);
     renderthread::RenderProxy* renderProxy =
             reinterpret_cast<renderthread::RenderProxy*>(proxyPtr);
 
-    renderProxy->addFrameMetricsObserver(observer);
+    renderProxy->addFrameMetricsObserver(std::move(observer));
 }
 
 static void android_view_ThreadedRenderer_removeObserver(JNIEnv* env, jclass clazz,
         jlong proxyPtr, jlong observerPtr) {
-    HardwareRendererObserver* observer = reinterpret_cast<HardwareRendererObserver*>(observerPtr);
+    FrameMetricsObserver* rawObserver = reinterpret_cast<FrameMetricsObserver*>(observerPtr);
+    sp<FrameMetricsObserver> observer = sp<FrameMetricsObserver>::fromExisting(rawObserver);
     renderthread::RenderProxy* renderProxy =
             reinterpret_cast<renderthread::RenderProxy*>(proxyPtr);
 
-    renderProxy->removeFrameMetricsObserver(observer);
+    renderProxy->removeFrameMetricsObserver(std::move(observer));
 }
 
 // ----------------------------------------------------------------------------
diff --git a/libs/hwui/jni/android_graphics_HardwareRendererObserver.cpp b/libs/hwui/jni/android_graphics_HardwareRendererObserver.cpp
index 6cae5ff..4f383ee 100644
--- a/libs/hwui/jni/android_graphics_HardwareRendererObserver.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareRendererObserver.cpp
@@ -16,11 +16,12 @@
 
 #include "android_graphics_HardwareRendererObserver.h"
 
+#include <array>
+
+#include "FrameInfo.h"
 #include "graphics_jni_helpers.h"
 #include "nativehelper/jni_macros.h"
 
-#include <array>
-
 namespace android {
 
 struct {
@@ -65,13 +66,13 @@
     return false;
 }
 
-void HardwareRendererObserver::notify(const int64_t* stats) {
+void HardwareRendererObserver::notify(const uirenderer::FrameInfoBuffer& stats) {
     if (!mKeepListening) return;
 
     FrameMetricsNotification& elem = mRingBuffer[mNextFree];
 
     if (!elem.hasData.load()) {
-        memcpy(elem.buffer, stats, kBufferSize * sizeof(stats[0]));
+        memcpy(elem.buffer, stats.data(), kBufferSize * sizeof(stats[0]));
 
         elem.dropCount = mDroppedReports;
         mDroppedReports = 0;
diff --git a/libs/hwui/jni/android_graphics_HardwareRendererObserver.h b/libs/hwui/jni/android_graphics_HardwareRendererObserver.h
index 5ee3e16..cf20ee1 100644
--- a/libs/hwui/jni/android_graphics_HardwareRendererObserver.h
+++ b/libs/hwui/jni/android_graphics_HardwareRendererObserver.h
@@ -43,7 +43,7 @@
      */
     bool getNextBuffer(JNIEnv* env, jlongArray metrics, int* dropCount);
 
-    void notify(const int64_t* stats) override;
+    void notify(const uirenderer::FrameInfoBuffer& stats) override;
 
 private:
     static constexpr int kBufferSize = static_cast<int>(uirenderer::FrameInfoIndex::NumIndexes);
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index e3e393c..b248c4b 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -859,7 +859,7 @@
     }  // release lock
 }
 
-void CanvasContext::addFrameMetricsObserver(FrameMetricsObserver* observer) {
+void CanvasContext::addFrameMetricsObserver(sp<FrameMetricsObserver>&& observer) {
     std::scoped_lock lock(mFrameInfoMutex);
     if (mFrameMetricsReporter.get() == nullptr) {
         mFrameMetricsReporter.reset(new FrameMetricsReporter());
@@ -870,10 +870,10 @@
     // their frame metrics.
     uint64_t nextFrameNumber = getFrameNumber();
     observer->reportMetricsFrom(nextFrameNumber, mSurfaceControlGenerationId);
-    mFrameMetricsReporter->addObserver(observer);
+    mFrameMetricsReporter->addObserver(std::move(observer));
 }
 
-void CanvasContext::removeFrameMetricsObserver(FrameMetricsObserver* observer) {
+void CanvasContext::removeFrameMetricsObserver(const sp<FrameMetricsObserver>& observer) {
     std::scoped_lock lock(mFrameInfoMutex);
     if (mFrameMetricsReporter.get() != nullptr) {
         mFrameMetricsReporter->removeObserver(observer);
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index cb37538..f119102 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -176,8 +176,8 @@
 
     void setContentDrawBounds(const Rect& bounds) { mContentDrawBounds = bounds; }
 
-    void addFrameMetricsObserver(FrameMetricsObserver* observer);
-    void removeFrameMetricsObserver(FrameMetricsObserver* observer);
+    void addFrameMetricsObserver(sp<FrameMetricsObserver>&& observer);
+    void removeFrameMetricsObserver(const sp<FrameMetricsObserver>& observer);
 
     // Used to queue up work that needs to be completed before this frame completes
     void enqueueFrameWork(std::function<void()>&& func);
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 715153b..ebfd8fde9 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -206,7 +206,7 @@
 }
 
 bool RenderProxy::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap& bitmap) {
-    ATRACE_NAME("TextureView#getBitmap");
+    ATRACE_NAME("RenderProxy#copyLayerInto readback");
     auto& thread = RenderThread::getInstance();
     return thread.queue().runSync([&]() -> bool {
         return thread.readback().copyLayerInto(layer, &bitmap) == CopyResult::Success;
@@ -420,15 +420,15 @@
     mDrawFrameTask.setFrameCompleteCallback(std::move(callback));
 }
 
-void RenderProxy::addFrameMetricsObserver(FrameMetricsObserver* observerPtr) {
-    mRenderThread.queue().post([this, observer = sp{observerPtr}]() {
-        mContext->addFrameMetricsObserver(observer.get());
+void RenderProxy::addFrameMetricsObserver(sp<FrameMetricsObserver>&& observer) {
+    mRenderThread.queue().post([this, observer = std::move(observer)]() mutable {
+        mContext->addFrameMetricsObserver(std::move(observer));
     });
 }
 
-void RenderProxy::removeFrameMetricsObserver(FrameMetricsObserver* observerPtr) {
-    mRenderThread.queue().post([this, observer = sp{observerPtr}]() {
-        mContext->removeFrameMetricsObserver(observer.get());
+void RenderProxy::removeFrameMetricsObserver(sp<FrameMetricsObserver>&& observer) {
+    mRenderThread.queue().post([this, observer = std::move(observer)]() {
+        mContext->removeFrameMetricsObserver(observer);
     });
 }
 
@@ -473,7 +473,7 @@
 }
 
 int RenderProxy::copyHWBitmapInto(Bitmap* hwBitmap, SkBitmap* bitmap) {
-    ATRACE_NAME("HardwareBitmap readback");
+    ATRACE_NAME("RenderProxy#copyHWBitmapInto readback");
     RenderThread& thread = RenderThread::getInstance();
     if (RenderThread::isCurrent()) {
         // TODO: fix everything that hits this. We should never be triggering a readback ourselves.
@@ -485,6 +485,7 @@
 }
 
 int RenderProxy::copyImageInto(const sk_sp<SkImage>& image, SkBitmap* bitmap) {
+    ATRACE_NAME("RenderProxy#copyImageInto readback");
     RenderThread& thread = RenderThread::getInstance();
     if (RenderThread::isCurrent()) {
         // TODO: fix everything that hits this. We should never be triggering a readback ourselves.
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index f2d8e94..ad6d54b 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -141,8 +141,8 @@
     void setFrameCommitCallback(std::function<void(bool)>&& callback);
     void setFrameCompleteCallback(std::function<void()>&& callback);
 
-    void addFrameMetricsObserver(FrameMetricsObserver* observer);
-    void removeFrameMetricsObserver(FrameMetricsObserver* observer);
+    void addFrameMetricsObserver(sp<FrameMetricsObserver>&& observer);
+    void removeFrameMetricsObserver(sp<FrameMetricsObserver>&& observer);
     void setForceDark(ForceDarkType type);
 
     static void copySurfaceInto(ANativeWindow* window, std::shared_ptr<CopyRequest>&& request);
diff --git a/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp b/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
index 571a267..c7935ac 100644
--- a/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
+++ b/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
@@ -14,13 +14,14 @@
  * limitations under the License.
  */
 
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
 #include <FrameMetricsObserver.h>
 #include <FrameMetricsReporter.h>
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
 #include <utils/TimeUtils.h>
 
+#include "FrameInfo.h"
+
 using namespace android;
 using namespace android::uirenderer;
 
@@ -31,7 +32,7 @@
     explicit TestFrameMetricsObserver(bool waitForPresentTime)
             : FrameMetricsObserver(waitForPresentTime){};
 
-    MOCK_METHOD(void, notify, (const int64_t* buffer), (override));
+    MOCK_METHOD(void, notify, (const FrameInfoBuffer& buffer), (override));
 };
 
 // To make sure it is clear that something went wrong if no from frame is set (to make it easier
@@ -44,7 +45,7 @@
 
     reporter->addObserver(observer.get());
 
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
     uint64_t frameNumber = 1;
     int32_t surfaceControlId = 0;
@@ -64,7 +65,7 @@
 }
 
 TEST(FrameMetricsReporter, respectsWaitForPresentTimeUnset) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
     uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
@@ -85,7 +86,7 @@
 }
 
 TEST(FrameMetricsReporter, respectsWaitForPresentTimeSet) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = true;
     uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
@@ -106,7 +107,7 @@
 }
 
 TEST(FrameMetricsReporter, reportsAllFramesAfterSpecifiedFromFrame) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
 
     std::vector<uint64_t> frameNumbers{0, 1, 10};
@@ -138,7 +139,7 @@
 }
 
 TEST(FrameMetricsReporter, doesNotReportsFramesBeforeSpecifiedFromFrame) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
 
     std::vector<uint64_t> frameNumbers{1, 10};
@@ -165,7 +166,7 @@
 }
 
 TEST(FrameMetricsReporter, canRemoveObservers) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
     uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
@@ -187,7 +188,7 @@
 }
 
 TEST(FrameMetricsReporter, canSupportMultipleObservers) {
-    const int64_t* stats;
+    FrameInfoBuffer stats;
     bool hasPresentTime = false;
     uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
diff --git a/libs/hwui/tests/unit/JankTrackerTests.cpp b/libs/hwui/tests/unit/JankTrackerTests.cpp
index c289d67..08718c9 100644
--- a/libs/hwui/tests/unit/JankTrackerTests.cpp
+++ b/libs/hwui/tests/unit/JankTrackerTests.cpp
@@ -14,18 +14,19 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
 #include <JankTracker.h>
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
 #include <utils/TimeUtils.h>
 
+#include "FrameInfo.h"
+
 using namespace android;
 using namespace android::uirenderer;
 
 class TestFrameMetricsObserver : public FrameMetricsObserver {
 public:
-    void notify(const int64_t*) {}
+    void notify(const FrameInfoBuffer&) override {}
 };
 
 TEST(JankTracker, noJank) {
diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java
index 88981ea..1cb540b 100644
--- a/media/java/android/media/MediaRoute2Info.java
+++ b/media/java/android/media/MediaRoute2Info.java
@@ -481,9 +481,9 @@
     /**
      * Indicates that a route supports routing playback to remote routes through control commands.
      *
-     * <p>This type of routing does not affect affect this system's audio or video, but instead
-     * relies on the device that corresponds to this route to fetch and play the media. It also
-     * requires the media app to take care of initializing and controlling playback.
+     * <p>This type of routing does not affect this system's audio or video, but instead relies on
+     * the device that corresponds to this route to fetch and play the media. It also requires the
+     * media app to take care of initializing and controlling playback.
      */
     @FlaggedApi(FLAG_ENABLE_MIRRORING_IN_MEDIA_ROUTER_2)
     public static final int FLAG_ROUTING_TYPE_REMOTE = 1 << 2;
diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java
index e94fb7d..4ae8daa 100644
--- a/media/java/android/media/MediaRoute2ProviderService.java
+++ b/media/java/android/media/MediaRoute2ProviderService.java
@@ -348,18 +348,21 @@
      * <p>This method must only be called as the result of a prior call to {@link
      * #onCreateSystemRoutingSession}.
      *
+     * <p>This method returns a {@link MediaStreams} instance that holds the media streams to route
+     * as part of the newly created routing session. May be null if system media capture failed, in
+     * which case you can ignore the return value, as you will receive a call to {@link
+     * #onReleaseSession} where you can clean up this session. {@link AudioRecord#startRecording()}
+     * must be called immediately on {@link MediaStreams#getAudioRecord()} after calling this
+     * method, in order to start streaming audio to the receiver.
+     *
      * @param requestId the ID of the {@link #onCreateSystemRoutingSession} request which this call
      *     is in response to.
      * @param sessionInfo a {@link RoutingSessionInfo} that describes the newly created routing
      *     session.
      * @param formats the {@link MediaStreamsFormats} that describes the format for the {@link
      *     MediaStreams} to return.
-     * @return a {@link MediaStreams} instance that holds the media streams to route as part of the
-     *     newly created routing session. May be null if system media capture failed, in which case
-     *     you can ignore the return value, as you will receive a call to {@link #onReleaseSession}
-     *     where you can clean up this session. {@link AudioRecord#startRecording()} must be called
-     *     immediately on {@link MediaStreams#getAudioRecord()} after calling this method, in order
-     *     to start streaming audio to the receiver.
+     * @return The {@link MediaStreams} to route as part of the new session, or null if system media
+     *     capture failed and the result can be ignored.
      * @throws IllegalStateException If the provided {@code requestId} doesn't correspond to a
      *     previous call to {@link #onCreateSystemRoutingSession}.
      */
@@ -1191,8 +1194,8 @@
              *
              * <p>The default value is an empty {@link Bundle}.
              *
-             * <p>Note that this bundle is not copied, so avoiding mutating the given {@link Bundle}
-             * after passing it to this method.
+             * <p>Do not mutate the given {@link Bundle} after passing it to this method. You can
+             * use {@link Bundle#deepCopy()} to keep a mutable copy.
              */
             @NonNull
             public Builder setExtras(@NonNull Bundle extras) {
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index d002c9c..c5ed386 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -27,7 +27,7 @@
     <string name="chooser_title_non_profile" msgid="6035023914517087400">"Odaberite uređaj kojim će upravljati aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="chooser_title" msgid="2235819929238267637">"Odaberite profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> koji želite postaviti"</string>
     <string name="single_device_title" msgid="4199861437545438606">"Traži se <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
-    <string name="summary_watch" msgid="8134580124808507407">"Aplikacija će moći sinkronizirati podatke kao što je ime pozivatelja i pristupiti tim dopuštenjima na vašem uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <string name="summary_watch" msgid="8134580124808507407">"Aplikacija će moći sinkronizirati podatke kao što je ime pozivatelja i pristupiti tim dopuštenjima na vašem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Dopustiti aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da upravlja uređajem &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string>
     <string name="summary_glasses" msgid="5469208629679579157">"Aplikacija će moći pristupati ovim dopuštenjima na vašem uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index 77e2396..3f6eacf 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="4470785958457506021">"កម្មវិធី​គ្រប់​គ្រង​ឧបករណ៍ដៃគូ"</string>
     <string name="confirmation_title" msgid="2244241995958340998">"អនុញ្ញាតឱ្យកម្មវិធី &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ចូលប្រើ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ឬ?"</string>
-    <string name="message_discovery_soft_timeout" msgid="473346859407859161">"សូមប្រាកដថា<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>នេះបានបើក<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> និងទុក<xliff:g id="PROFILE_NAME">%3$s</xliff:g>នៅ​ជិតអ្នក។"</string>
+    <string name="message_discovery_soft_timeout" msgid="473346859407859161">"សូមប្រាកដថា<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>នេះបានបើក<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> និងទុក<xliff:g id="PROFILE_NAME">%3$s</xliff:g>របស់អ្នកនៅ​ជិតអ្នក។"</string>
     <string name="message_discovery_hard_timeout" msgid="677514663495711424">"រកមិន​ឃើញ​ឧបករណ៍ទេ។ សូមព្យាយាមម្ដងទៀតនៅពេលក្រោយ។"</string>
     <string name="discovery_bluetooth" msgid="5693557668470016164">"ប៊្លូធូស"</string>
     <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index ee4db7d..0b4274e 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -18,12 +18,12 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="4470785958457506021">"부속 기기 관리자"</string>
     <string name="confirmation_title" msgid="2244241995958340998">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; 앱에서 &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;에 액세스하도록 허용하시겠습니까?"</string>
-    <string name="message_discovery_soft_timeout" msgid="473346859407859161">"이 <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> 기능을 사용 설정하고 <xliff:g id="PROFILE_NAME">%3$s</xliff:g> 기기를 근처에 두세요."</string>
+    <string name="message_discovery_soft_timeout" msgid="473346859407859161">"이 <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> 기능을 사용 설정하고 <xliff:g id="PROFILE_NAME">%3$s</xliff:g>을(를) 근처에 두세요."</string>
     <string name="message_discovery_hard_timeout" msgid="677514663495711424">"기기를 찾을 수 없습니다. 나중에 다시 시도해 주세요."</string>
     <string name="discovery_bluetooth" msgid="5693557668470016164">"블루투스"</string>
     <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string>
     <string name="discovery_mixed" msgid="7071466134150760127">"블루투스 및 Wi-Fi"</string>
-    <string name="profile_name_watch" msgid="576290739483672360">"시계"</string>
+    <string name="profile_name_watch" msgid="576290739483672360">"워치"</string>
     <string name="chooser_title_non_profile" msgid="6035023914517087400">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;에서 관리할 기기 선택"</string>
     <string name="chooser_title" msgid="2235819929238267637">"설정할 <xliff:g id="PROFILE_NAME">%1$s</xliff:g> 선택"</string>
     <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> 찾는 중"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index 8ba76bc..86c0e46 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -23,7 +23,7 @@
     <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string>
     <string name="discovery_wifi" msgid="1551782459721758773">"Kablosuz"</string>
     <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth ve Kablosuz"</string>
-    <string name="profile_name_watch" msgid="576290739483672360">"saat"</string>
+    <string name="profile_name_watch" msgid="576290739483672360">"Saat"</string>
     <string name="chooser_title_non_profile" msgid="6035023914517087400">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tarafından yönetilecek bir cihaz seçin"</string>
     <string name="chooser_title" msgid="2235819929238267637">"Ayarlamak için bir <xliff:g id="PROFILE_NAME">%1$s</xliff:g> seçin"</string>
     <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> aranıyor"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index f517742..8c50d81 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -23,9 +23,9 @@
     <string name="discovery_bluetooth" msgid="5693557668470016164">"بلوٹوتھ"</string>
     <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string>
     <string name="discovery_mixed" msgid="7071466134150760127">"‏بلوٹوتھ اور Wi-Fi"</string>
-    <string name="profile_name_watch" msgid="576290739483672360">"دیکھیں"</string>
+    <string name="profile_name_watch" msgid="576290739483672360">"گھڑی"</string>
     <string name="chooser_title_non_profile" msgid="6035023914517087400">"‏کوئی آلہ منتخب کریں جس کا نظم و نسق &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کرے"</string>
-    <string name="chooser_title" msgid="2235819929238267637">"سیٹ اپ کرنے کے لیے <xliff:g id="PROFILE_NAME">%1$s</xliff:g> کا انتخاب کریں"</string>
+    <string name="chooser_title" msgid="2235819929238267637">"سیٹ اپ کرنے کے لیے ایک <xliff:g id="PROFILE_NAME">%1$s</xliff:g> کا انتخاب کریں"</string>
     <string name="single_device_title" msgid="4199861437545438606">"‫<xliff:g id="PROFILE_NAME">%1$s</xliff:g> کو تلاش کیا جا رہا ہے"</string>
     <string name="summary_watch" msgid="8134580124808507407">"اس ایپ کو آپ کے <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> پر کسی کال کرنے والے کے نام جیسی معلومات کی مطابقت پذیری کرنے اور ان اجازتوں تک رسائی کی اجازت ہوگی"</string>
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"‏&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کو &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; کا نظم کرنے کی اجازت دیں؟"</string>
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
index d6e19a6..a75aeaf 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
@@ -104,6 +104,7 @@
         scrollable(Screen.MultipleCredentialsScreenFlatten.route) {
             MultiCredentialsFlattenScreen(
                 credentialSelectorUiState = (remember { uiState } as MultipleEntry),
+                columnState = it.columnState,
                 flowEngine = flowEngine,
             )
         }
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt
index 932b345..96cadab 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt
@@ -36,7 +36,7 @@
 import com.android.credentialmanager.ui.components.CredentialsScreenChipSpacer
 import com.google.android.horologist.annotations.ExperimentalHorologistApi
 import com.google.android.horologist.compose.layout.ScalingLazyColumn
-import com.google.android.horologist.compose.layout.rememberColumnState
+import com.google.android.horologist.compose.layout.ScalingLazyColumnState
 import com.google.android.horologist.compose.layout.ScalingLazyColumnDefaults
 import androidx.compose.ui.text.style.TextAlign
 import androidx.wear.compose.material.MaterialTheme as WearMaterialTheme
@@ -45,6 +45,7 @@
  * Screen that shows multiple credentials to select from, grouped by accounts
  *
  * @param credentialSelectorUiState The app bar view model.
+ * @param columnState ScalingLazyColumn configuration to be be applied
  * @param modifier styling for composable
  * @param flowEngine [FlowEngine] that updates ui state for this screen
  */
@@ -52,15 +53,14 @@
 @Composable
 fun MultiCredentialsFlattenScreen(
     credentialSelectorUiState: MultipleEntry,
+    columnState: ScalingLazyColumnState,
     flowEngine: FlowEngine,
 ) {
     val selectEntry = flowEngine.getEntrySelector()
     Row {
         Spacer(Modifier.weight(0.052f)) // 5.2% side margin
         ScalingLazyColumn(
-            columnState = rememberColumnState(
-                ScalingLazyColumnDefaults.belowTimeText(horizontalAlignment = Alignment.Start),
-            ),
+            columnState = columnState,
             modifier = Modifier.weight(0.896f).fillMaxSize(), // 5.2% side margin
         ) {
 
diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml
index e364576..273cfa0 100644
--- a/packages/InputDevices/res/values-af/strings.xml
+++ b/packages/InputDevices/res/values-af/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serwies (Cyrillies)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegryns (Cyrillies)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roemeens"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
index db5a7d4..8593253 100644
--- a/packages/InputDevices/res/values-am/strings.xml
+++ b/packages/InputDevices/res/values-am/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ሰርቢያኛ (ሲሪሊክኛ)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ሞንቴኔግሮኛ (ሲሪሊክኛ)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ሮማኒያኛ"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml
index 6d917da..67b7b6a 100644
--- a/packages/InputDevices/res/values-ar/strings.xml
+++ b/packages/InputDevices/res/values-ar/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"الصربية (السيريلية)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"لغة الجبل الأسود (السيريلية)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"الرومانية"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"الإنجليزية (الهند)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml
index c4eaafb..e6540e4 100644
--- a/packages/InputDevices/res/values-as/strings.xml
+++ b/packages/InputDevices/res/values-as/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ছাৰ্বিয়ান (চিৰিলিক)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মণ্টেনেগ্ৰিণ (চিৰিলিক)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ৰোমানিয়ান"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml
index d71c396..aa93a92 100644
--- a/packages/InputDevices/res/values-az/strings.xml
+++ b/packages/InputDevices/res/values-az/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb dili (Kiril)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monteneqro dili (Kiril)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumın dili"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
index e670ed4..1d21a06 100644
--- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml
+++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunski"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"engleski (Indija)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml
index c8c04d4..b374a61 100644
--- a/packages/InputDevices/res/values-be/strings.xml
+++ b/packages/InputDevices/res/values-be/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербская (кірыліца)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чарнагорская (кірыліца)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынская"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Англійская (Індыя)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
index 82c3965..ceb7e37 100644
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ b/packages/InputDevices/res/values-bg/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"сръбски (кирилица)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"черногорски (кирилица)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"румънски"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml
index de54cdf..369a803 100644
--- a/packages/InputDevices/res/values-bn/strings.xml
+++ b/packages/InputDevices/res/values-bn/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"সার্বিয়ান (সিরিলিক)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মন্টেনেগ্রিন (সিরিলিক)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"রোমানিয়ান"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml
index 9b7b331..6b6b23f 100644
--- a/packages/InputDevices/res/values-bs/strings.xml
+++ b/packages/InputDevices/res/values-bs/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunski"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"engleski (Indija)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
index 874e06b..bbf3946 100644
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ b/packages/InputDevices/res/values-ca/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbi (ciríl·lic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrí (ciríl·lic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanès"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml
index c7a4896..e88aa97 100644
--- a/packages/InputDevices/res/values-cs/strings.xml
+++ b/packages/InputDevices/res/values-cs/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbština (cyrilice)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"černohorština (cyrilice)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunština"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"angličtina (Indie)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
index 246baba..00a2a620 100644
--- a/packages/InputDevices/res/values-da/strings.xml
+++ b/packages/InputDevices/res/values-da/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinsk (kyrillisk)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumænsk"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
index 21a939a..717c597 100644
--- a/packages/InputDevices/res/values-de/strings.xml
+++ b/packages/InputDevices/res/values-de/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisch (kyrillisch)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinisch (kyrillisch)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumänisch"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml
index eabb90c..02b7f1f 100644
--- a/packages/InputDevices/res/values-el/strings.xml
+++ b/packages/InputDevices/res/values-el/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Σερβικά (Κυριλλικά)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Μαυροβουνιακά (Κυριλλικά)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ρουμανικά"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml
index 7b72cba..1cdcc55 100644
--- a/packages/InputDevices/res/values-en-rAU/strings.xml
+++ b/packages/InputDevices/res/values-en-rAU/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-en-rCA/strings.xml b/packages/InputDevices/res/values-en-rCA/strings.xml
index d78dce2..36e0988 100644
--- a/packages/InputDevices/res/values-en-rCA/strings.xml
+++ b/packages/InputDevices/res/values-en-rCA/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"English (India)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
index 7b72cba..1cdcc55 100644
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ b/packages/InputDevices/res/values-en-rGB/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
index 7b72cba..1cdcc55 100644
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ b/packages/InputDevices/res/values-en-rIN/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
index 2a4035a..edd7657 100644
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ b/packages/InputDevices/res/values-es-rUS/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml
index ba1ef20..b522845 100644
--- a/packages/InputDevices/res/values-es/strings.xml
+++ b/packages/InputDevices/res/values-es/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml
index 99f3626..82670dd 100644
--- a/packages/InputDevices/res/values-et/strings.xml
+++ b/packages/InputDevices/res/values-et/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kirillitsa)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kirillitsa)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumeenia"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml
index 9fae4f9..b777b8c 100644
--- a/packages/InputDevices/res/values-eu/strings.xml
+++ b/packages/InputDevices/res/values-eu/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbiarra (zirilikoa)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegroarra (zirilikoa)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Errumaniera"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
index cbc6b65..9ec7a34 100644
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ b/packages/InputDevices/res/values-fa/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"صربی (سیریلیک)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونته‌نگرویی (سیریلیک)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیایی"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
index 736d7cb..6825ea9 100644
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ b/packages/InputDevices/res/values-fi/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kyrillinen)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kyrillinen)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"romania"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml
index 7b99d3b..353d7ad 100644
--- a/packages/InputDevices/res/values-fr-rCA/strings.xml
+++ b/packages/InputDevices/res/values-fr-rCA/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roumain"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Anglais (Inde)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
index 8628f8f..fb4d144 100644
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ b/packages/InputDevices/res/values-fr/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roumain"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml
index 5e681e6..925adf9 100644
--- a/packages/InputDevices/res/values-gl/strings.xml
+++ b/packages/InputDevices/res/values-gl/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanés"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml
index a5a522e..60965dc 100644
--- a/packages/InputDevices/res/values-gu/strings.xml
+++ b/packages/InputDevices/res/values-gu/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"સર્બિયન (સિરિલિક)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"મોંટેનેગ્રીન (સિરિલિક)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"રોમાનિયન"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"અંગ્રેજી (ભારત)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
index ad9c980..1751979 100644
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ b/packages/InputDevices/res/values-hi/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोंटेनेग्रिन (सिरिलिक)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमेनियन"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml
index b7e8ee4..746eb03 100644
--- a/packages/InputDevices/res/values-hr/strings.xml
+++ b/packages/InputDevices/res/values-hr/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunjski"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"engleski (Indija)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
index 756cc08..c83ba84 100644
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ b/packages/InputDevices/res/values-hu/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"szerb (cirill betűs)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrói (cirill betűs)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"román"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml
index eced5cd..718f8d1 100644
--- a/packages/InputDevices/res/values-hy/strings.xml
+++ b/packages/InputDevices/res/values-hy/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"սերբերեն (կյուրեղատառ)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"չեռնոգորերեն (կյուրեղատառ)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ռումիներեն"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml
index e871d19..ba2e5bd3 100644
--- a/packages/InputDevices/res/values-in/strings.xml
+++ b/packages/InputDevices/res/values-in/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Sirilik)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegro (Sirilik)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumania"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml
index ec5d98b..842119d 100644
--- a/packages/InputDevices/res/values-is/strings.xml
+++ b/packages/InputDevices/res/values-is/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbneska (kyrillískt)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Svartfellska (kyrillískt)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rúmenska"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
index 06ceb7af..f7f76e0 100644
--- a/packages/InputDevices/res/values-it/strings.xml
+++ b/packages/InputDevices/res/values-it/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbo (cirillico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirillico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumeno"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
index 85f9656..0df5d20 100644
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ b/packages/InputDevices/res/values-iw/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"סרבית (אותיות קיריליות)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"מונטנגרית (אותיות קיריליות)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"רומנית"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml
index 4c6de70..41c244c 100644
--- a/packages/InputDevices/res/values-ja/strings.xml
+++ b/packages/InputDevices/res/values-ja/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"セルビア語(キリル)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"モンテネグロ語(キリル)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ルーマニア語"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"英語(インド)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml
index 7232c1a..0a9ba3f 100644
--- a/packages/InputDevices/res/values-ka/strings.xml
+++ b/packages/InputDevices/res/values-ka/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"სერბული (კირილიცა)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"მონტენეგრული (კირილიცა)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"რუმინული"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ინგლისური (ინდოეთი)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml
index 278c868..60ad838 100644
--- a/packages/InputDevices/res/values-kk/strings.xml
+++ b/packages/InputDevices/res/values-kk/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербия (кириллица)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногория (кириллица)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml
index 2eaeaa7..936c925 100644
--- a/packages/InputDevices/res/values-km/strings.xml
+++ b/packages/InputDevices/res/values-km/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"សែប៊ី (ស៊ីរីលីក)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ម៉ុងតេណេហ្គ្រោ (ស៊ីរីលីក)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"រ៉ូម៉ានី"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml
index 8039039..2453951 100644
--- a/packages/InputDevices/res/values-kn/strings.xml
+++ b/packages/InputDevices/res/values-kn/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ಸೆರ್ಬಿಯನ್ (ಸಿರಿಲಿಕ್)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಸಿರಿಲಿಕ್)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ರೊಮೇನಿಯನ್"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml
index de1bb3d..07975a4 100644
--- a/packages/InputDevices/res/values-ko/strings.xml
+++ b/packages/InputDevices/res/values-ko/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"세르비아어(키릴 자모)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"몬테네그로어(키릴)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"루마니아어"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"영어(인도)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml
index 47bf7b7..f6d018e 100644
--- a/packages/InputDevices/res/values-ky/strings.xml
+++ b/packages/InputDevices/res/values-ky/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербче (Кирилл)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногориялыкча (Кирилл)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынча"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml
index 6a35f23..61f8f71 100644
--- a/packages/InputDevices/res/values-lo/strings.xml
+++ b/packages/InputDevices/res/values-lo/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ເຊີບຽນ (ຊີຣິວລິກ)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ມອນເທເນກຣິນ (ຊີຣິວລິກ)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ໂຣມານຽນ"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml
index 4bf9223..fc9941f 100644
--- a/packages/InputDevices/res/values-lt/strings.xml
+++ b/packages/InputDevices/res/values-lt/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbų (kirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Juodkalniečių (kirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumunų"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Anglų k. (Indija)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
index 90d690ca..cc2c94c 100644
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ b/packages/InputDevices/res/values-lv/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbu (kirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Melnkalniešu (kirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumāņu"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index 4c80a80..60981d6 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (кирилица)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (кирилица)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"романски"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml
index 41ea10f..8064c74 100644
--- a/packages/InputDevices/res/values-ml/strings.xml
+++ b/packages/InputDevices/res/values-ml/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"സെർബിയൻ (സിറിലിക്)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"മോണ്ടിനെഗ്രിൻ (സിറിലിക്)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"റൊമേനിയൻ"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml
index 056e728..547ce49 100644
--- a/packages/InputDevices/res/values-mn/strings.xml
+++ b/packages/InputDevices/res/values-mn/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Серби (кирилл)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Монтенегро (кирилл)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml
index fe032fe..25bdfab 100644
--- a/packages/InputDevices/res/values-mr/strings.xml
+++ b/packages/InputDevices/res/values-mr/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मॉन्टेनेग्रिन (सिरिलिक)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियन"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml
index f9d18a1..b6e36ab 100644
--- a/packages/InputDevices/res/values-ms/strings.xml
+++ b/packages/InputDevices/res/values-ms/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Cyril)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyril)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Bahasa Romania"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Bahasa Inggeris (India)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml
index 47498e0..4ef5aab 100644
--- a/packages/InputDevices/res/values-my/strings.xml
+++ b/packages/InputDevices/res/values-my/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ဆားဘီးယား (စီရီလစ်)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"မွန်တီနီဂရင်း (စီရီလစ်)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ရိုမေးနီးယား"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index 954462c..837e246 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrisk (kyrillisk)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumensk"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml
index e2804d4..0ab1ea6 100644
--- a/packages/InputDevices/res/values-ne/strings.xml
+++ b/packages/InputDevices/res/values-ne/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियाली (सिरिलिक)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोन्टेनिग्रिन (सिरिलिक)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियाली"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml
index 67f78ba..5c175fb 100644
--- a/packages/InputDevices/res/values-nl/strings.xml
+++ b/packages/InputDevices/res/values-nl/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Servisch (Cyrillisch)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrijns (Cyrillisch)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roemeens"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Engels (India)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml
index c6e020c..97f9088 100644
--- a/packages/InputDevices/res/values-or/strings.xml
+++ b/packages/InputDevices/res/values-or/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ସର୍ବିଆନ (ସିରିଲିକ)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ମଣ୍ଟେନେଗ୍ରିନ (ସିରିଲିକ)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ରୋମାନିଆନ"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml
index 29c3b7d..343418e 100644
--- a/packages/InputDevices/res/values-pa/strings.xml
+++ b/packages/InputDevices/res/values-pa/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ਸਰਬੀਆਈ (ਸਿਰਿਲਿਕ)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ਮਾਂਟੇਨੀਗਰਿਨ (ਸਿਰਿਲਿਕ)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ਰੋਮਾਨੀਆਈ"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ਅੰਗਰੇਜ਼ੀ (ਭਾਰਤ)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml
index 8ce00d3..0fd962b 100644
--- a/packages/InputDevices/res/values-pl/strings.xml
+++ b/packages/InputDevices/res/values-pl/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbski (cyrylica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"czarnogórski (cyrylica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumuński"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml
index 3b1fc9b..e649b58 100644
--- a/packages/InputDevices/res/values-pt-rBR/strings.xml
+++ b/packages/InputDevices/res/values-pt-rBR/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglês (Índia)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml
index 163108d..cd0a046 100644
--- a/packages/InputDevices/res/values-pt-rPT/strings.xml
+++ b/packages/InputDevices/res/values-pt-rPT/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglês (Índia)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml
index 3b1fc9b..e649b58 100644
--- a/packages/InputDevices/res/values-pt/strings.xml
+++ b/packages/InputDevices/res/values-pt/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Inglês (Índia)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
index 78c99ce..169378d 100644
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ b/packages/InputDevices/res/values-ro/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sârbă (caractere chirilice)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Muntenegreană (Chirilică)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Română"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml
index 183b00e..2d5a6b0 100644
--- a/packages/InputDevices/res/values-ru/strings.xml
+++ b/packages/InputDevices/res/values-ru/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербский (кириллица)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногорский (кириллица)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынский"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"Английский (Индия)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml
index 78d1010..ba27136 100644
--- a/packages/InputDevices/res/values-si/strings.xml
+++ b/packages/InputDevices/res/values-si/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"සර්බියානු (සිරිලික්)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"මොන්ටෙනේග්‍රීන් (සිරිලික්)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"රුමේනියානු"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml
index c269085..8ae45be 100644
--- a/packages/InputDevices/res/values-sk/strings.xml
+++ b/packages/InputDevices/res/values-sk/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbčina (cyrilika)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"čiernohorčina (cyrilika)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunčina"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"angličtina (India)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml
index d2e9fd1..ced6ab1 100644
--- a/packages/InputDevices/res/values-sl/strings.xml
+++ b/packages/InputDevices/res/values-sl/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbščina (cirilica)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"črnogorščina (cirilica)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"romunščina"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"angleščina (Indija)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml
index 066129e..c77de92 100644
--- a/packages/InputDevices/res/values-sq/strings.xml
+++ b/packages/InputDevices/res/values-sq/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisht (cirilike)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Malazisht (cirilike)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumanisht"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml
index e4fed03..0c0748d 100644
--- a/packages/InputDevices/res/values-sr/strings.xml
+++ b/packages/InputDevices/res/values-sr/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (ћирилица)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (ћирилица)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"румунски"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"енглески (Индија)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml
index 4eaf856..5701d01 100644
--- a/packages/InputDevices/res/values-sv/strings.xml
+++ b/packages/InputDevices/res/values-sv/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbiska (kyrilliskt)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrinska (kyrilliskt)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumänska"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"engelska (Indien)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
index 30b52b2..d9ac91f8 100644
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ b/packages/InputDevices/res/values-sw/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Kiserbia (Kisiriliki)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Kimontenegri (Kisiriliki)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Kiromania"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml
index d60084c..fc91d696 100644
--- a/packages/InputDevices/res/values-ta/strings.xml
+++ b/packages/InputDevices/res/values-ta/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"செர்பியன் (சிரிலிக்)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"மாண்டினெக்ரன் (சிரிலிக்)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ரோமானியன்"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml
index 2f40442..f164736 100644
--- a/packages/InputDevices/res/values-te/strings.xml
+++ b/packages/InputDevices/res/values-te/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"సెర్బియన్ (సిరిలిక్)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"మాంటెనెగ్రిన్ (సిరిలిక్)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"రొమేనియన్"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"ఇంగ్లీష్ (భారతదేశం)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml
index ae10f04..1538fdb 100644
--- a/packages/InputDevices/res/values-th/strings.xml
+++ b/packages/InputDevices/res/values-th/strings.xml
@@ -57,4 +57,5 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"เซอร์เบีย (ซีริลลิก)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"มอนเตเนโกร (ซีริลลิก)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"โรมาเนีย"</string>
+    <string name="keyboard_layout_english_india" msgid="7962353311188603367">"อังกฤษ (อินเดีย)"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
index dc0d1f5..ea815d5 100644
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ b/packages/InputDevices/res/values-tl/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
index 2e7084d..3a40c84 100644
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ b/packages/InputDevices/res/values-tr/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sırpça (Kiril)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Karadağca (Kiril)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumence"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
index 01d34e3..0e0d562 100644
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ b/packages/InputDevices/res/values-uk/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербська (кирилиця)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чорногорська (кирилиця)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румунська"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml
index 94cd329..44721b8 100644
--- a/packages/InputDevices/res/values-ur/strings.xml
+++ b/packages/InputDevices/res/values-ur/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"سربیائی (سیریلک)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونٹے نیگریائی (سیریلک)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیائی"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml
index e63fc09..776c1c7 100644
--- a/packages/InputDevices/res/values-uz/strings.xml
+++ b/packages/InputDevices/res/values-uz/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb (kirill)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Chernogor (kirill)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumin"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml
index 8384c3e..1fcba42 100644
--- a/packages/InputDevices/res/values-vi/strings.xml
+++ b/packages/InputDevices/res/values-vi/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Tiếng Serbia (Chữ Kirin)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Tiếng Montenegro (Chữ Kirin)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Tiếng Romania"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
index e3a8af3..cb7f6cb 100644
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ b/packages/InputDevices/res/values-zh-rCN/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞尔维亚语(西里尔字母)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"黑山语(西里尔字母)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"罗马尼亚语"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
index 56681b8..c718760 100644
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ b/packages/InputDevices/res/values-zh-rHK/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
index 60c085b..68cf9b0 100644
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ b/packages/InputDevices/res/values-zh-rTW/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
index 6697333..4ae9e47 100644
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ b/packages/InputDevices/res/values-zu/strings.xml
@@ -57,4 +57,6 @@
     <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
     <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
     <string name="keyboard_layout_romanian" msgid="8698989892731726903">"IsiRomanian"</string>
+    <!-- no translation found for keyboard_layout_english_india (7962353311188603367) -->
+    <skip />
 </resources>
diff --git a/packages/NeuralNetworks/OWNERS b/packages/NeuralNetworks/OWNERS
index 6b39150..bf3c8fe 100644
--- a/packages/NeuralNetworks/OWNERS
+++ b/packages/NeuralNetworks/OWNERS
@@ -1,5 +1,4 @@
 # Bug component: 195575
 
 sandeepbandaru@google.com
-shivanker@google.com
-shiqing@google.com
\ No newline at end of file
+shiqing@google.com
diff --git a/packages/PackageInstaller/Android.bp b/packages/PackageInstaller/Android.bp
index a30c0c3..8b1828c 100644
--- a/packages/PackageInstaller/Android.bp
+++ b/packages/PackageInstaller/Android.bp
@@ -47,19 +47,21 @@
     sdk_version: "system_current",
     rename_resources_package: false,
     static_libs: [
-        "androidx.leanback_leanback",
+        "android.content.pm.flags-aconfig-java",
+        "android.multiuser.flags-aconfig-java",
+        "android.os.flags-aconfig-java",
         "androidx.annotation_annotation",
         "androidx.fragment_fragment",
-        "androidx.lifecycle_lifecycle-livedata",
+        "androidx.leanback_leanback",
         "androidx.lifecycle_lifecycle-extensions",
-        "android.content.pm.flags-aconfig-java",
-        "android.os.flags-aconfig-java",
-        "android.multiuser.flags-aconfig-java",
+        "androidx.lifecycle_lifecycle-livedata",
+        "kotlin-parcelize-runtime",
     ],
 
     lint: {
         error_checks: ["Recycle"],
     },
+    kotlin_plugins: ["kotlin-parcelize-compiler-plugin"],
 }
 
 android_app {
@@ -79,19 +81,22 @@
     overrides: ["PackageInstaller"],
 
     static_libs: [
-        "androidx.leanback_leanback",
-        "androidx.fragment_fragment",
-        "androidx.lifecycle_lifecycle-livedata",
-        "androidx.lifecycle_lifecycle-extensions",
         "android.content.pm.flags-aconfig-java",
-        "android.os.flags-aconfig-java",
         "android.multiuser.flags-aconfig-java",
+        "android.os.flags-aconfig-java",
+        "androidx.annotation_annotation",
+        "androidx.fragment_fragment",
+        "androidx.leanback_leanback",
+        "androidx.lifecycle_lifecycle-extensions",
+        "androidx.lifecycle_lifecycle-livedata",
+        "kotlin-parcelize-runtime",
     ],
     aaptflags: ["--product tablet"],
 
     lint: {
         error_checks: ["Recycle"],
     },
+    kotlin_plugins: ["kotlin-parcelize-compiler-plugin"],
 }
 
 android_app {
@@ -111,18 +116,20 @@
     overrides: ["PackageInstaller"],
 
     static_libs: [
-        "androidx.leanback_leanback",
+        "android.content.pm.flags-aconfig-java",
+        "android.multiuser.flags-aconfig-java",
+        "android.os.flags-aconfig-java",
         "androidx.annotation_annotation",
         "androidx.fragment_fragment",
-        "androidx.lifecycle_lifecycle-livedata",
+        "androidx.leanback_leanback",
         "androidx.lifecycle_lifecycle-extensions",
-        "android.content.pm.flags-aconfig-java",
-        "android.os.flags-aconfig-java",
-        "android.multiuser.flags-aconfig-java",
+        "androidx.lifecycle_lifecycle-livedata",
+        "kotlin-parcelize-runtime",
     ],
     aaptflags: ["--product tv"],
 
     lint: {
         error_checks: ["Recycle"],
     },
+    kotlin_plugins: ["kotlin-parcelize-compiler-plugin"],
 }
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index b99bf1a..dab2401 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -58,7 +58,7 @@
     <string name="uninstall_application_title" msgid="4045420072401428123">"ଆପ୍‌କୁ ଅନଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
     <string name="uninstall_update_title" msgid="824411791011583031">"ଅପଡେଟ୍‍ ଅନଇନଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
     <string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ହେଉଛି ନିମ୍ନ ଆପ୍‍ର ଏକ ଅଂଶ।"</string>
-    <string name="uninstall_application_text" msgid="3816830743706143980">"ଆପଣ ଏହି ଆପ୍‍ ଅନଇନଷ୍ଟଲ୍‌ କରିବାକୁ ଚାହାଁନ୍ତି କି?"</string>
+    <string name="uninstall_application_text" msgid="3816830743706143980">"ଆପଣ ଏହି ଆପ ଅନଇନଷ୍ଟଲ କରିବାକୁ ଚାହାଁନ୍ତି କି?"</string>
     <string name="archive_application_text" msgid="8482325710714386348">"ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ଡାଟା ସେଭ ହୋଇଯିବ"</string>
     <string name="archive_application_text_all_users" msgid="3151229641681672580">"ସମସ୍ତ ୟୁଜରଙ୍କ ପାଇଁ ଏହି ଆପକୁ ଆର୍କାଇଭ କରିବେ? ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ଡାଟା ସେଭ ହୋଇଯିବ"</string>
     <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲରେ ଏହି ଆପକୁ ଆର୍କାଇଭ କରିବେ? ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ଡାଟା ସେଭ ହୋଇଯିବ"</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallStages.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallStages.kt
index 8de8fbb..a8dad09 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallStages.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallStages.kt
@@ -18,8 +18,8 @@
 
 import android.app.Activity
 import android.content.Intent
-import android.content.pm.PackageManager
 import android.content.pm.PackageInstaller
+import android.content.pm.PackageManager
 import android.graphics.drawable.Drawable
 
 sealed class InstallStage(val stageCode: Int) {
@@ -42,7 +42,7 @@
 
 data class InstallUserActionRequired(
     val actionReason: Int,
-    private val appSnippet: PackageUtil.AppSnippet? = null,
+    val appSnippet: PackageUtil.AppSnippet? = null,
     val isAppUpdating: Boolean = false,
     /**
      * This holds either a package name or the app label of the install source.
@@ -63,7 +63,7 @@
     }
 }
 
-data class InstallInstalling(private val appSnippet: PackageUtil.AppSnippet) :
+data class InstallInstalling(val appSnippet: PackageUtil.AppSnippet) :
     InstallStage(STAGE_INSTALLING) {
 
     val appIcon: Drawable?
@@ -74,7 +74,7 @@
 }
 
 data class InstallSuccess(
-    private val appSnippet: PackageUtil.AppSnippet,
+    val appSnippet: PackageUtil.AppSnippet,
     val shouldReturnResult: Boolean = false,
     /**
      *
@@ -95,7 +95,7 @@
 }
 
 data class InstallFailed(
-    private val appSnippet: PackageUtil.AppSnippet? = null,
+    val appSnippet: PackageUtil.AppSnippet? = null,
     val legacyCode: Int,
     val statusCode: Int,
     val message: String? = null,
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
index 828a95f..e8477ef 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
@@ -17,21 +17,32 @@
 package com.android.packageinstaller.v2.model
 
 import android.Manifest
+import android.annotation.SuppressLint
+import android.app.ActivityManager
 import android.content.Context
 import android.content.pm.ApplicationInfo
 import android.content.pm.PackageInfo
 import android.content.pm.PackageInstaller
 import android.content.pm.PackageManager
 import android.content.res.Resources
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
+import android.graphics.Canvas
 import android.graphics.drawable.BitmapDrawable
 import android.graphics.drawable.Drawable
 import android.net.Uri
 import android.os.Build
+import android.os.Parcel
+import android.os.Parcelable
 import android.os.Process
 import android.os.UserHandle
 import android.os.UserManager
 import android.util.Log
+import com.android.packageinstaller.v2.model.PackageUtil.getAppSnippet
+import java.io.ByteArrayOutputStream
 import java.io.File
+import kotlinx.parcelize.Parceler
+import kotlinx.parcelize.Parcelize
 
 object PackageUtil {
     private val LOG_TAG = InstallRepository::class.java.simpleName
@@ -39,6 +50,24 @@
     private const val SPLIT_BASE_APK_SUFFIX = "base.apk"
     const val localLogv = false
 
+    const val ARGS_ABORT_REASON: String = "abort_reason"
+    const val ARGS_ACTION_REASON: String = "action_reason"
+    const val ARGS_ACTIVITY_RESULT_CODE: String = "activity_result_code"
+    const val ARGS_APP_DATA_SIZE: String = "app_data_size"
+    const val ARGS_APP_LABEL: String = "app_label"
+    const val ARGS_APP_SNIPPET: String = "app_snippet"
+    const val ARGS_ERROR_DIALOG_TYPE: String = "error_dialog_type"
+    const val ARGS_IS_ARCHIVE: String = "is_archive"
+    const val ARGS_IS_CLONE_USER: String = "clone_user"
+    const val ARGS_IS_UPDATING: String = "is_updating"
+    const val ARGS_LEGACY_CODE: String = "legacy_code"
+    const val ARGS_MESSAGE: String = "message"
+    const val ARGS_RESULT_INTENT: String = "result_intent"
+    const val ARGS_SHOULD_RETURN_RESULT: String = "should_return_result"
+    const val ARGS_SOURCE_APP: String = "source_app"
+    const val ARGS_STATUS_CODE: String = "status_code"
+    const val ARGS_TITLE: String = "title"
+
     /**
      * Determines if the UID belongs to the system downloads provider and returns the
      * [ApplicationInfo] of the provider
@@ -238,7 +267,8 @@
             context.resources,
             info.getAppIcon()
         ) else pm.defaultActivityIcon
-        return AppSnippet(label, icon)
+        val largeIconSize = getLargeIconSize(context)
+        return AppSnippet(label, icon, largeIconSize)
     }
 
     /**
@@ -247,8 +277,11 @@
      */
     @JvmStatic
     fun getAppSnippet(context: Context, pkgInfo: PackageInfo): AppSnippet {
+        val largeIconSize = getLargeIconSize(context)
         return pkgInfo.applicationInfo?.let { getAppSnippet(context, it) } ?: run {
-            AppSnippet(pkgInfo.packageName, context.packageManager.defaultActivityIcon)
+            AppSnippet(
+                pkgInfo.packageName, context.packageManager.defaultActivityIcon, largeIconSize
+            )
         }
     }
 
@@ -261,7 +294,8 @@
         val pm = context.packageManager
         val label = pm.getApplicationLabel(appInfo)
         val icon = pm.getApplicationIcon(appInfo)
-        return AppSnippet(label, icon)
+        val largeIconSize = getLargeIconSize(context)
+        return AppSnippet(label, icon, largeIconSize)
     }
 
     /**
@@ -270,16 +304,24 @@
      */
     @JvmStatic
     fun getAppSnippet(context: Context, pkgInfo: PackageInfo, sourceFile: File): AppSnippet {
+        val largeIconSize = getLargeIconSize(context)
         pkgInfo.applicationInfo?.let {
             val appInfoFromFile = processAppInfoForFile(it, sourceFile)
             val label = getAppLabelFromFile(context, appInfoFromFile)
             val icon = getAppIconFromFile(context, appInfoFromFile)
-            return AppSnippet(label, icon)
+            return AppSnippet(label, icon, largeIconSize)
         } ?: run {
-            return AppSnippet(pkgInfo.packageName, context.packageManager.defaultActivityIcon)
+            return AppSnippet(
+                pkgInfo.packageName, context.packageManager.defaultActivityIcon, largeIconSize
+            )
         }
     }
 
+    private fun getLargeIconSize(context: Context): Int {
+        val am = context.getSystemService<ActivityManager>(ActivityManager::class.java)
+        return am.launcherLargeIconSize
+    }
+
     /**
      * Utility method to load application label
      *
@@ -438,7 +480,69 @@
      * The class to hold an incoming package's icon and label.
      * See [getAppSnippet]
      */
-    data class AppSnippet(var label: CharSequence?, var icon: Drawable?) {
+    @Parcelize
+    data class AppSnippet(
+        var label: CharSequence?,
+        var icon: Drawable?,
+        var iconSize: Int,
+    ) : Parcelable {
+        private companion object : Parceler<AppSnippet> {
+            override fun AppSnippet.write(dest: Parcel, flags: Int) {
+                dest.writeString(label.toString())
+
+                val bmp = getBitmapFromDrawable(icon!!)
+                dest.writeBlob(getBytesFromBitmap(bmp))
+                bmp.recycle()
+
+                dest.writeInt(iconSize)
+            }
+
+            @SuppressLint("UseKtx")
+            override fun create(parcel: Parcel): AppSnippet {
+                val label = parcel.readString()
+
+                val b: ByteArray = parcel.readBlob()!!
+                val bmp: Bitmap? = BitmapFactory.decodeByteArray(b, 0, b.size)
+                val icon = BitmapDrawable(Resources.getSystem(), bmp)
+
+                val iconSize = parcel.readInt()
+
+                return AppSnippet(label.toString(), icon, iconSize)
+            }
+        }
+
+        @SuppressLint("UseKtx")
+        private fun getBitmapFromDrawable(drawable: Drawable): Bitmap {
+            // Create an empty bitmap with the dimensions of our drawable
+            val bmp = Bitmap.createBitmap(
+                drawable.intrinsicWidth,
+                drawable.intrinsicHeight, Bitmap.Config.ARGB_8888
+            )
+            // Associate it with a canvas. This canvas will draw the icon on the bitmap
+            val canvas = Canvas(bmp)
+            // Draw the drawable in the canvas. The canvas will ultimately paint the drawable in the
+            // bitmap held within
+            drawable.draw(canvas)
+
+            // Scale it down if the icon is too large
+            if ((bmp.getWidth() > iconSize * 2) || (bmp.getHeight() > iconSize * 2)) {
+                val scaledBitmap = Bitmap.createScaledBitmap(bmp, iconSize, iconSize, true)
+                if (scaledBitmap != bmp) {
+                    bmp.recycle()
+                }
+                return scaledBitmap
+            }
+            return bmp
+        }
+
+        private fun getBytesFromBitmap(bmp: Bitmap): ByteArray? {
+            var baos = ByteArrayOutputStream()
+            baos.use {
+                bmp.compress(Bitmap.CompressFormat.PNG, 100, it)
+            }
+            return baos.toByteArray()
+        }
+
         override fun toString(): String {
             return "AppSnippet[label = $label, hasIcon = ${icon != null}]"
         }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
index 481023e..4a8be8d 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
@@ -133,9 +133,10 @@
                 val aborted = installStage as InstallAborted
                 when (aborted.abortReason) {
                     InstallAborted.ABORT_REASON_DONE,
-                    InstallAborted.ABORT_REASON_INTERNAL_ERROR -> {
+                    InstallAborted.ABORT_REASON_INTERNAL_ERROR,
+                        -> {
                         if (aborted.errorDialogType == InstallAborted.DLG_PACKAGE_ERROR) {
-                            val parseErrorDialog = ParseErrorFragment(aborted)
+                            val parseErrorDialog = ParseErrorFragment.newInstance(aborted)
                             showDialogInner(parseErrorDialog)
                         } else {
                             setResult(aborted.activityResultCode, aborted.resultIntent, true)
@@ -151,12 +152,12 @@
                 val uar = installStage as InstallUserActionRequired
                 when (uar.actionReason) {
                     InstallUserActionRequired.USER_ACTION_REASON_INSTALL_CONFIRMATION -> {
-                        val actionDialog = InstallConfirmationFragment(uar)
+                        val actionDialog = InstallConfirmationFragment.newInstance(uar)
                         showDialogInner(actionDialog)
                     }
 
                     InstallUserActionRequired.USER_ACTION_REASON_UNKNOWN_SOURCE -> {
-                        val externalSourceDialog = ExternalSourcesBlockedFragment(uar)
+                        val externalSourceDialog = ExternalSourcesBlockedFragment.newInstance(uar)
                         showDialogInner(externalSourceDialog)
                     }
 
@@ -169,7 +170,7 @@
 
             InstallStage.STAGE_INSTALLING -> {
                 val installing = installStage as InstallInstalling
-                val installingDialog = InstallInstallingFragment(installing)
+                val installingDialog = InstallInstallingFragment.newInstance(installing)
                 showDialogInner(installingDialog)
             }
 
@@ -179,7 +180,7 @@
                     val successIntent = success.resultIntent
                     setResult(RESULT_OK, successIntent, true)
                 } else {
-                    val successDialog = InstallSuccessFragment(success)
+                    val successDialog = InstallSuccessFragment.newInstance(success)
                     showDialogInner(successDialog)
                 }
             }
@@ -190,7 +191,7 @@
                     val failureIntent = failed.resultIntent
                     setResult(RESULT_FIRST_USER, failureIntent, true)
                 } else {
-                    val failureDialog = InstallFailedFragment(failed)
+                    val failureDialog = InstallFailedFragment.newInstance(failed)
                     showDialogInner(failureDialog)
                 }
             }
@@ -242,11 +243,11 @@
         }
         return when (restriction) {
             UserManager.DISALLOW_INSTALL_APPS ->
-                SimpleErrorFragment(R.string.install_apps_user_restriction_dlg_text)
+                SimpleErrorFragment.newInstance(R.string.install_apps_user_restriction_dlg_text)
 
             UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES,
             UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY ->
-                SimpleErrorFragment(R.string.unknown_apps_user_restriction_dlg_text)
+                SimpleErrorFragment.newInstance(R.string.unknown_apps_user_restriction_dlg_text)
 
             else -> null
         }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
index 0a02845e..08bc766 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
@@ -101,7 +101,7 @@
                 if (aborted.abortReason == UninstallAborted.ABORT_REASON_APP_UNAVAILABLE ||
                     aborted.abortReason == UninstallAborted.ABORT_REASON_USER_NOT_ALLOWED
                 ) {
-                    val errorDialog = UninstallErrorFragment(aborted)
+                    val errorDialog = UninstallErrorFragment.newInstance(aborted)
                     showDialogInner(errorDialog)
                 } else {
                     setResult(aborted.activityResultCode, null, true)
@@ -110,7 +110,7 @@
 
             UninstallStage.STAGE_USER_ACTION_REQUIRED -> {
                 val uar = uninstallStage as UninstallUserActionRequired
-                val confirmationDialog = UninstallConfirmationFragment(uar)
+                val confirmationDialog = UninstallConfirmationFragment.newInstance(uar)
                 showDialogInner(confirmationDialog)
             }
 
@@ -120,7 +120,7 @@
                 //  And a fragment if the user requests a result back. Should we consolidate and
                 //  show a fragment always?
                 val uninstalling = uninstallStage as UninstallUninstalling
-                val uninstallingDialog = UninstallUninstallingFragment(uninstalling)
+                val uninstallingDialog = UninstallUninstallingFragment.newInstance(uninstalling)
                 showDialogInner(uninstallingDialog)
             }
 
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
index 343a213..4c69b9d 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
@@ -16,17 +16,25 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ACTION_REASON;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_SNIPPET;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_IS_UPDATING;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_SOURCE_APP;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.util.Log;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallUserActionRequired;
+import com.android.packageinstaller.v2.model.PackageUtil.AppSnippet;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
 
 /**
@@ -37,14 +45,34 @@
 
     private static final String LOG_TAG = ExternalSourcesBlockedFragment.class.getSimpleName();
     @NonNull
-    private final InstallUserActionRequired mDialogData;
+    private InstallUserActionRequired mDialogData;
     @NonNull
     private InstallActionListener mInstallActionListener;
     @NonNull
     private AlertDialog mDialog;
 
-    public ExternalSourcesBlockedFragment(InstallUserActionRequired dialogData) {
-        mDialogData = dialogData;
+    public ExternalSourcesBlockedFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Creates a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallUserActionRequired} object containing data to display
+     *         in the dialog
+     * @return an instance of the fragment
+     */
+    public static ExternalSourcesBlockedFragment newInstance(
+            @NonNull InstallUserActionRequired dialogData) {
+        Bundle args = new Bundle();
+        args.putInt(ARGS_ACTION_REASON, dialogData.getActionReason());
+        args.putParcelable(ARGS_APP_SNIPPET, dialogData.getAppSnippet());
+        args.putBoolean(ARGS_IS_UPDATING, dialogData.isAppUpdating());
+        args.putString(ARGS_SOURCE_APP, dialogData.getSourceApp());
+
+        ExternalSourcesBlockedFragment fragment = new ExternalSourcesBlockedFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -56,6 +84,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         mDialog = new AlertDialog.Builder(requireContext())
             .setTitle(mDialogData.getAppLabel())
@@ -96,4 +126,14 @@
         super.onResume();
         mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
     }
+
+    private void setDialogData(Bundle args) {
+        int actionReason = args.getInt(ARGS_ACTION_REASON);
+        AppSnippet appSnippet = args.getParcelable(ARGS_APP_SNIPPET, AppSnippet.class);
+        boolean isUpdating = args.getBoolean(ARGS_IS_UPDATING);
+        String sourceApp = args.getString(ARGS_SOURCE_APP);
+
+        mDialogData = new InstallUserActionRequired(actionReason, appSnippet, isUpdating,
+                sourceApp);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
index e186590..03768fb 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
@@ -16,6 +16,11 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ACTION_REASON;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_SNIPPET;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_IS_UPDATING;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_SOURCE_APP;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -26,11 +31,14 @@
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallUserActionRequired;
+import com.android.packageinstaller.v2.model.PackageUtil.AppSnippet;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
 
 /**
@@ -39,15 +47,34 @@
 public class InstallConfirmationFragment extends DialogFragment {
 
     public static final String LOG_TAG = InstallConfirmationFragment.class.getSimpleName();
-    @NonNull
-    private final InstallUserActionRequired mDialogData;
+    private InstallUserActionRequired mDialogData;
     @NonNull
     private InstallActionListener mInstallActionListener;
     @NonNull
     private AlertDialog mDialog;
 
-    public InstallConfirmationFragment(@NonNull InstallUserActionRequired dialogData) {
-        mDialogData = dialogData;
+    public InstallConfirmationFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Creates a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallUserActionRequired} object containing data to display
+     *         in the dialog
+     * @return an instance of the fragment
+     */
+    public static InstallConfirmationFragment newInstance(
+            @NonNull InstallUserActionRequired dialogData) {
+        Bundle args = new Bundle();
+        args.putInt(ARGS_ACTION_REASON, dialogData.getActionReason());
+        args.putParcelable(ARGS_APP_SNIPPET, dialogData.getAppSnippet());
+        args.putBoolean(ARGS_IS_UPDATING, dialogData.isAppUpdating());
+        args.putString(ARGS_SOURCE_APP, dialogData.getSourceApp());
+
+        InstallConfirmationFragment fragment = new InstallConfirmationFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -59,6 +86,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
 
@@ -127,4 +156,14 @@
         super.onResume();
         mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
     }
+
+    private void setDialogData(Bundle args) {
+        int actionReason = args.getInt(ARGS_ACTION_REASON);
+        AppSnippet appSnippet = args.getParcelable(ARGS_APP_SNIPPET, AppSnippet.class);
+        boolean isUpdating = args.getBoolean(ARGS_IS_UPDATING);
+        String sourceApp = args.getString(ARGS_SOURCE_APP);
+
+        mDialogData = new InstallUserActionRequired(actionReason, appSnippet, isUpdating,
+                sourceApp);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
index 7c9d98d..6f65441 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
@@ -16,19 +16,30 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_SNIPPET;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_LEGACY_CODE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_MESSAGE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_RESULT_INTENT;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_SHOULD_RETURN_RESULT;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_STATUS_CODE;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.Intent;
 import android.content.pm.PackageInstaller;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallFailed;
+import com.android.packageinstaller.v2.model.PackageUtil.AppSnippet;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
 
 /**
@@ -39,11 +50,32 @@
 public class InstallFailedFragment extends DialogFragment {
 
     private static final String LOG_TAG = InstallFailedFragment.class.getSimpleName();
-    private final InstallFailed mDialogData;
+    private InstallFailed mDialogData;
     private InstallActionListener mInstallActionListener;
 
-    public InstallFailedFragment(InstallFailed dialogData) {
-        mDialogData = dialogData;
+    public InstallFailedFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Creates a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallFailed} object containing data to display in the
+     *         dialog
+     * @return an instance of the fragment
+     */
+    public static InstallFailedFragment newInstance(@NonNull InstallFailed dialogData) {
+        Bundle args = new Bundle();
+        args.putParcelable(ARGS_APP_SNIPPET, dialogData.getAppSnippet());
+        args.putInt(ARGS_LEGACY_CODE, dialogData.getLegacyCode());
+        args.putInt(ARGS_STATUS_CODE, dialogData.getStatusCode());
+        args.putString(ARGS_MESSAGE, dialogData.getMessage());
+        args.putBoolean(ARGS_SHOULD_RETURN_RESULT, dialogData.getShouldReturnResult());
+        args.putParcelable(ARGS_RESULT_INTENT, dialogData.getResultIntent());
+
+        InstallFailedFragment fragment = new InstallFailedFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -55,6 +87,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
         AlertDialog dialog = new AlertDialog.Builder(requireContext())
@@ -105,4 +139,16 @@
         super.onCancel(dialog);
         mInstallActionListener.onNegativeResponse(mDialogData.getStageCode());
     }
+
+    private void setDialogData(Bundle args) {
+        AppSnippet appSnippet = args.getParcelable(ARGS_APP_SNIPPET, AppSnippet.class);
+        int legacyCode = args.getInt(ARGS_LEGACY_CODE);
+        int statusCode = args.getInt(ARGS_STATUS_CODE);
+        String message = args.getString(ARGS_MESSAGE);
+        boolean shouldReturnResult = args.getBoolean(ARGS_SHOULD_RETURN_RESULT);
+        Intent resultIntent = args.getParcelable(ARGS_RESULT_INTENT, Intent.class);
+
+        mDialogData = new InstallFailed(appSnippet, legacyCode, statusCode, message,
+                shouldReturnResult, resultIntent);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
index 27210b7..17093cf 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
@@ -16,17 +16,22 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_SNIPPET;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallInstalling;
+import com.android.packageinstaller.v2.model.PackageUtil.AppSnippet;
 
 /**
  * Dialog to show when an install is in progress.
@@ -34,16 +39,34 @@
 public class InstallInstallingFragment extends DialogFragment {
 
     private static final String LOG_TAG = InstallInstallingFragment.class.getSimpleName();
-    private final InstallInstalling mDialogData;
+    private InstallInstalling mDialogData;
     private AlertDialog mDialog;
 
-    public InstallInstallingFragment(InstallInstalling dialogData) {
-        mDialogData = dialogData;
+    public InstallInstallingFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Creates a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallInstalling} object containing data to display in the
+     *         dialog
+     * @return an instance of the fragment
+     */
+    public static InstallInstallingFragment newInstance(@NonNull InstallInstalling dialogData) {
+        Bundle args = new Bundle();
+        args.putParcelable(ARGS_APP_SNIPPET, dialogData.getAppSnippet());
+
+        InstallInstallingFragment fragment = new InstallInstallingFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
         mDialog = new AlertDialog.Builder(requireContext())
@@ -64,4 +87,9 @@
         super.onStart();
         mDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setEnabled(false);
     }
+
+    private void setDialogData(Bundle args) {
+        AppSnippet appSnippet = args.getParcelable(ARGS_APP_SNIPPET, AppSnippet.class);
+        mDialogData = new InstallInstalling(appSnippet);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
index 28b5423b..5696afa 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
@@ -16,22 +16,31 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_SNIPPET;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_RESULT_INTENT;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_SHOULD_RETURN_RESULT;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallSuccess;
+import com.android.packageinstaller.v2.model.PackageUtil.AppSnippet;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
+
 import java.util.List;
 
 /**
@@ -41,13 +50,31 @@
 public class InstallSuccessFragment extends DialogFragment {
 
     private static final String LOG_TAG = InstallSuccessFragment.class.getSimpleName();
-    private final InstallSuccess mDialogData;
+    private InstallSuccess mDialogData;
     private AlertDialog mDialog;
     private InstallActionListener mInstallActionListener;
     private PackageManager mPm;
 
-    public InstallSuccessFragment(InstallSuccess dialogData) {
-        mDialogData = dialogData;
+    public InstallSuccessFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallSuccess} object containing data to display in the
+     *         dialog
+     * @return an instance of the fragment
+     */
+    public static InstallSuccessFragment newInstance(@NonNull InstallSuccess dialogData) {
+        Bundle args = new Bundle();
+        args.putParcelable(ARGS_APP_SNIPPET, dialogData.getAppSnippet());
+        args.putBoolean(ARGS_SHOULD_RETURN_RESULT, dialogData.getShouldReturnResult());
+        args.putParcelable(ARGS_RESULT_INTENT, dialogData.getResultIntent());
+
+        InstallSuccessFragment fragment = new InstallSuccessFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -60,6 +87,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
         mDialog = new AlertDialog.Builder(requireContext())
@@ -105,4 +134,12 @@
         Log.i(LOG_TAG, "Finished installing " + mDialogData.getAppLabel());
         mInstallActionListener.onNegativeResponse(mDialogData.getStageCode());
     }
+
+    private void setDialogData(Bundle args) {
+        AppSnippet appSnippet = args.getParcelable(ARGS_APP_SNIPPET, AppSnippet.class);
+        boolean shouldReturnResult = args.getBoolean(ARGS_SHOULD_RETURN_RESULT);
+        Intent resultIntent = args.getParcelable(ARGS_RESULT_INTENT, Intent.class);
+
+        mDialogData = new InstallSuccess(appSnippet, shouldReturnResult, resultIntent);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
index cde3d8d..6834f44 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
@@ -16,14 +16,23 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ABORT_REASON;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ACTIVITY_RESULT_CODE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ERROR_DIALOG_TYPE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_MESSAGE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_RESULT_INTENT;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
+
 import androidx.annotation.NonNull;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallAborted;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
@@ -31,11 +40,31 @@
 public class ParseErrorFragment extends DialogFragment {
 
     private static final String LOG_TAG = ParseErrorFragment.class.getSimpleName();
-    private final InstallAborted mDialogData;
+    private InstallAborted mDialogData;
     private InstallActionListener mInstallActionListener;
 
-    public ParseErrorFragment(InstallAborted dialogData) {
-        mDialogData = dialogData;
+    public ParseErrorFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link InstallAborted} object containing data to display in the
+     *         dialog
+     * @return an instance of the fragment
+     */
+    public static ParseErrorFragment newInstance(@NonNull InstallAborted dialogData) {
+        Bundle args = new Bundle();
+        args.putInt(ARGS_ABORT_REASON, dialogData.getAbortReason());
+        args.putString(ARGS_MESSAGE, dialogData.getMessage());
+        args.putParcelable(ARGS_RESULT_INTENT, dialogData.getResultIntent());
+        args.putInt(ARGS_ACTIVITY_RESULT_CODE, dialogData.getActivityResultCode());
+        args.putInt(ARGS_ERROR_DIALOG_TYPE, dialogData.getErrorDialogType());
+
+        ParseErrorFragment fragment = new ParseErrorFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -47,6 +76,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         return new AlertDialog.Builder(requireContext())
             .setMessage(R.string.Parse_error_dlg_text)
@@ -63,4 +94,15 @@
         mInstallActionListener.onNegativeResponse(
             mDialogData.getActivityResultCode(), mDialogData.getResultIntent());
     }
+
+    private void setDialogData(Bundle args) {
+        int abortReason = args.getInt(ARGS_ABORT_REASON);
+        String message = args.getString(ARGS_MESSAGE);
+        Intent resultIntent = args.getParcelable(ARGS_RESULT_INTENT, Intent.class);
+        int activityResultCode = args.getInt(ARGS_ACTIVITY_RESULT_CODE);
+        int errorDialogType = args.getInt(ARGS_ERROR_DIALOG_TYPE);
+
+        mDialogData = new InstallAborted(abortReason, message, resultIntent, activityResultCode,
+                errorDialogType);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
index 66a353a..8b1ccd8 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
@@ -16,14 +16,18 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_MESSAGE;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.util.Log;
+
 import androidx.annotation.NonNull;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.InstallStage;
 import com.android.packageinstaller.v2.ui.InstallActionListener;
@@ -31,11 +35,25 @@
 public class SimpleErrorFragment extends DialogFragment {
 
     private static final String LOG_TAG = SimpleErrorFragment.class.getSimpleName();
-    private final int mMessageResId;
+    private int mMessageResId;
     private InstallActionListener mInstallActionListener;
 
-    public SimpleErrorFragment(int messageResId) {
-        mMessageResId = messageResId;
+    public SimpleErrorFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @return an instance of the fragment
+     */
+    public static SimpleErrorFragment newInstance(int messageResId) {
+        Bundle args = new Bundle();
+        args.putInt(ARGS_MESSAGE, messageResId);
+
+        SimpleErrorFragment fragment = new SimpleErrorFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -47,6 +65,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
+        mMessageResId = requireArguments().getInt(ARGS_MESSAGE);
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" +
             "Dialog message: " + requireContext().getString(mMessageResId));
         return new AlertDialog.Builder(requireContext())
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
index 524b4e6..860f6a0 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
@@ -18,6 +18,11 @@
 
 import static android.text.format.Formatter.formatFileSize;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_DATA_SIZE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_IS_ARCHIVE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_MESSAGE;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_TITLE;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -27,9 +32,11 @@
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.TextView;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.UninstallUserActionRequired;
 import com.android.packageinstaller.v2.ui.UninstallActionListener;
@@ -38,14 +45,34 @@
  * Dialog to show while requesting user confirmation for uninstalling an app.
  */
 public class UninstallConfirmationFragment extends DialogFragment {
-    private static final String LOG_TAG = UninstallConfirmationFragment.class.getSimpleName();
-    private final UninstallUserActionRequired mDialogData;
-    private UninstallActionListener mUninstallActionListener;
 
+    private static final String LOG_TAG = UninstallConfirmationFragment.class.getSimpleName();
+    private UninstallUserActionRequired mDialogData;
+    private UninstallActionListener mUninstallActionListener;
     private CheckBox mKeepData;
 
-    public UninstallConfirmationFragment(UninstallUserActionRequired dialogData) {
-        mDialogData = dialogData;
+    public UninstallConfirmationFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link UninstallUserActionRequired} object containing data to
+     *         display in the dialog
+     * @return an instance of the fragment
+     */
+    public static UninstallConfirmationFragment newInstance(
+            @NonNull UninstallUserActionRequired dialogData) {
+        Bundle args = new Bundle();
+        args.putLong(ARGS_APP_DATA_SIZE, dialogData.getAppDataSize());
+        args.putBoolean(ARGS_IS_ARCHIVE, dialogData.isArchive());
+        args.putString(ARGS_TITLE, dialogData.getTitle());
+        args.putString(ARGS_MESSAGE, dialogData.getMessage());
+
+        UninstallConfirmationFragment fragment = new UninstallConfirmationFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -57,6 +84,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
             .setTitle(mDialogData.getTitle())
@@ -88,4 +117,13 @@
         super.onCancel(dialog);
         mUninstallActionListener.onNegativeResponse();
     }
+
+    private void setDialogData(Bundle args) {
+        long appDataSize = args.getLong(ARGS_APP_DATA_SIZE);
+        boolean isArchive = args.getBoolean(ARGS_IS_ARCHIVE);
+        String title = args.getString(ARGS_TITLE);
+        String message = args.getString(ARGS_MESSAGE);
+
+        mDialogData = new UninstallUserActionRequired(title, message, appDataSize, isArchive);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
index 51e16cb..9ed6412 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
@@ -16,15 +16,19 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_ABORT_REASON;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.util.Log;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.UninstallAborted;
 import com.android.packageinstaller.v2.ui.UninstallActionListener;
@@ -35,11 +39,27 @@
 public class UninstallErrorFragment extends DialogFragment {
 
     private static final String LOG_TAG = UninstallErrorFragment.class.getSimpleName();
-    private final UninstallAborted mDialogData;
+    private UninstallAborted mDialogData;
     private UninstallActionListener mUninstallActionListener;
 
-    public UninstallErrorFragment(UninstallAborted dialogData) {
-        mDialogData = dialogData;
+    public UninstallErrorFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link UninstallAborted} object containing data to display in the
+     *         dialog
+     * @return an instance of the fragment
+     */
+    public static UninstallErrorFragment newInstance(UninstallAborted dialogData) {
+        Bundle args = new Bundle();
+        args.putInt(ARGS_ABORT_REASON, dialogData.getAbortReason());
+
+        UninstallErrorFragment fragment = new UninstallErrorFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @Override
@@ -51,6 +71,8 @@
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
             .setMessage(mDialogData.getDialogTextResource())
@@ -68,4 +90,9 @@
         super.onCancel(dialog);
         mUninstallActionListener.onNegativeResponse();
     }
+
+    private void setDialogData(Bundle args) {
+        int abortReason = args.getInt(ARGS_ABORT_REASON);
+        mDialogData = new UninstallAborted(abortReason);
+    }
 }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
index 626ff6b..ae56c4d 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
@@ -16,12 +16,17 @@
 
 package com.android.packageinstaller.v2.ui.fragments;
 
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_APP_LABEL;
+import static com.android.packageinstaller.v2.model.PackageUtil.ARGS_IS_CLONE_USER;
+
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.os.Bundle;
 import android.util.Log;
+
 import androidx.annotation.NonNull;
 import androidx.fragment.app.DialogFragment;
+
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.v2.model.UninstallUninstalling;
 
@@ -33,13 +38,32 @@
     private static final String LOG_TAG = UninstallUninstallingFragment.class.getSimpleName();
     UninstallUninstalling mDialogData;
 
-    public UninstallUninstallingFragment(UninstallUninstalling dialogData) {
-        mDialogData = dialogData;
+    UninstallUninstallingFragment() {
+        // Required for DialogFragment
+    }
+
+    /**
+     * Create a new instance of this fragment with necessary data set as fragment arguments
+     *
+     * @param dialogData {@link UninstallUninstalling} object containing data to display in
+     *         the dialog
+     * @return an instance of the fragment
+     */
+    public static UninstallUninstallingFragment newInstance(UninstallUninstalling dialogData) {
+        Bundle args = new Bundle();
+        args.putCharSequence(ARGS_APP_LABEL, dialogData.getAppLabel());
+        args.putBoolean(ARGS_IS_CLONE_USER, dialogData.isCloneUser());
+
+        UninstallUninstallingFragment fragment = new UninstallUninstallingFragment();
+        fragment.setArguments(args);
+        return fragment;
     }
 
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
+        setDialogData(requireArguments());
+
         Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
         AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
             .setCancelable(false);
@@ -55,4 +79,11 @@
 
         return dialog;
     }
+
+    private void setDialogData(Bundle args) {
+        CharSequence label = args.getCharSequence(ARGS_APP_LABEL);
+        boolean isCloneUser = args.getBoolean(ARGS_IS_CLONE_USER);
+
+        mDialogData = new UninstallUninstalling(label, isCloneUser);
+    }
 }
diff --git a/packages/SettingsLib/AndroidManifest.xml b/packages/SettingsLib/AndroidManifest.xml
index 412ff29..473b7eb 100644
--- a/packages/SettingsLib/AndroidManifest.xml
+++ b/packages/SettingsLib/AndroidManifest.xml
@@ -21,6 +21,13 @@
     <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
 
     <application>
+        <activity
+            android:name=".users.CreateUserActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:finishOnCloseSystemDialogs="true"
+            android:launchMode="singleInstance"
+            android:theme="@style/Theme.Transparent"/>
     </application>
 
 </manifest>
diff --git a/packages/SettingsLib/IllustrationPreference/AndroidManifest.xml b/packages/SettingsLib/IllustrationPreference/AndroidManifest.xml
index a0d10c3..56b0515 100644
--- a/packages/SettingsLib/IllustrationPreference/AndroidManifest.xml
+++ b/packages/SettingsLib/IllustrationPreference/AndroidManifest.xml
@@ -18,6 +18,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.android.settingslib.widget.preference.illustration">
 
-    <uses-sdk android:minSdkVersion="28" />
+    <uses-sdk android:minSdkVersion="30" />
 
 </manifest>
diff --git a/packages/SettingsLib/IllustrationPreference/res/values/strings.xml b/packages/SettingsLib/IllustrationPreference/res/values/strings.xml
new file mode 100644
index 0000000..3a8aaf8
--- /dev/null
+++ b/packages/SettingsLib/IllustrationPreference/res/values/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright (C) 2025 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.
+  -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for an accessibility action that starts an animation [CHAR LIMIT=30] -->
+    <string name="settingslib_action_label_resume">resume</string>
+    <!-- Label for an accessibility action that stops an animation [CHAR LIMIT=30] -->
+    <string name="settingslib_action_label_pause">pause</string>
+    <!-- Label for an accessibility action that stops an animation [CHAR LIMIT=50] -->
+    <string name="settingslib_state_animation_playing">Animation playing</string>
+    <!-- Label for an accessibility action that stops an animation [CHAR LIMIT=50] -->
+    <string name="settingslib_state_animation_paused">Animation paused</string>
+</resources>
diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
index af40c64..e818a60 100644
--- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
+++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
@@ -32,6 +32,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
@@ -73,6 +75,7 @@
     private boolean mLottieDynamicColor;
     private CharSequence mContentDescription;
     private boolean mIsTablet;
+    private boolean mIsAnimatable;
     private boolean mIsAnimationPaused;
 
     /**
@@ -81,6 +84,7 @@
     public interface OnBindListener {
         /**
          * Called when when {@link #onBindViewHolder(PreferenceViewHolder)} occurs.
+         *
          * @param animationView the animation view for this preference.
          */
         void onBind(LottieAnimationView animationView);
@@ -144,16 +148,6 @@
                 (FrameLayout) holder.findViewById(R.id.middleground_layout);
         final LottieAnimationView illustrationView =
                 (LottieAnimationView) holder.findViewById(R.id.lottie_view);
-        // Pause and resume animation
-        illustrationFrame.setOnClickListener(v -> {
-            mIsAnimationPaused = !mIsAnimationPaused;
-            if (mIsAnimationPaused) {
-                illustrationView.pauseAnimation();
-            } else {
-                illustrationView.resumeAnimation();
-            }
-        });
-
         if (illustrationView != null && !TextUtils.isEmpty(mContentDescription)) {
             illustrationView.setContentDescription(mContentDescription);
             illustrationView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
@@ -171,12 +165,13 @@
 
         illustrationView.setCacheComposition(mCacheComposition);
         handleImageWithAnimation(illustrationView, illustrationFrame);
+        handleAnimationControl(illustrationView, illustrationFrame);
         handleImageFrameMaxHeight(backgroundView, illustrationView);
 
         if (mIsAutoScale) {
             illustrationView.setScaleType(mIsAutoScale
-                            ? ImageView.ScaleType.CENTER_CROP
-                            : ImageView.ScaleType.CENTER_INSIDE);
+                    ? ImageView.ScaleType.CENTER_CROP
+                    : ImageView.ScaleType.CENTER_INSIDE);
         }
 
         handleMiddleGroundView(middleGroundLayout);
@@ -377,6 +372,7 @@
             final Drawable drawable = illustrationView.getDrawable();
             if (drawable != null) {
                 startAnimation(drawable);
+                mIsAnimatable = false;
             }
         }
 
@@ -386,10 +382,12 @@
             final Drawable drawable = illustrationView.getDrawable();
             if (drawable != null) {
                 startAnimation(drawable);
+                mIsAnimatable = false;
             } else {
                 // The lottie image from the raw folder also returns null because the ImageView
                 // couldn't handle it now.
                 startLottieAnimationWith(illustrationView, mImageUri);
+                mIsAnimatable = true;
             }
         }
 
@@ -418,10 +416,12 @@
             final Drawable drawable = illustrationView.getDrawable();
             if (drawable != null) {
                 startAnimation(drawable);
+                mIsAnimatable = false;
             } else {
                 // The lottie image from the raw folder also returns null because the ImageView
                 // couldn't handle it now.
                 startLottieAnimationWith(illustrationView, mImageResId);
+                mIsAnimatable = true;
             }
         }
     }
@@ -459,6 +459,60 @@
         ((Animatable) drawable).start();
     }
 
+    private void handleAnimationControl(LottieAnimationView illustrationView,
+            ViewGroup container) {
+        if (mIsAnimatable) {
+            // TODO(b/397340540): list out pages having illustration without a content description.
+            if (TextUtils.isEmpty(mContentDescription)) {
+                Log.w(TAG, "Illustration should have a content description. preference key = "
+                        + getKey());
+            }
+            // Enable pause and resume abilities to animation only
+            container.setOnClickListener(v -> {
+                mIsAnimationPaused = !mIsAnimationPaused;
+                if (mIsAnimationPaused) {
+                    illustrationView.pauseAnimation();
+                } else {
+                    illustrationView.resumeAnimation();
+                }
+                updateAccessibilityAction(container);
+            });
+
+            updateAccessibilityAction(container);
+        }
+    }
+
+    private void updateAccessibilityAction(ViewGroup container) {
+        // Setting the state of animation
+        container.setStateDescription(getStateDescriptionForAnimation());
+        container.setAccessibilityDelegate(new View.AccessibilityDelegate() {
+            @Override
+            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+                super.onInitializeAccessibilityNodeInfo(host, info);
+                final AccessibilityAction clickAction = new AccessibilityAction(
+                        AccessibilityNodeInfo.ACTION_CLICK,
+                        getActionLabelForAnimation());
+                info.addAction(clickAction);
+            }
+        });
+    }
+
+    private String getActionLabelForAnimation() {
+        if (mIsAnimationPaused) {
+            return getContext().getString(R.string.settingslib_action_label_resume);
+        } else {
+            return getContext().getString(R.string.settingslib_action_label_pause);
+        }
+    }
+
+    private String getStateDescriptionForAnimation() {
+        if (mIsAnimationPaused) {
+            return getContext().getString(R.string.settingslib_state_animation_paused);
+        } else {
+            return getContext().getString(R.string.settingslib_state_animation_playing);
+        }
+    }
+
     private static void startLottieAnimationWith(LottieAnimationView illustrationView,
             Uri imageUri) {
         final InputStream inputStream =
@@ -514,15 +568,20 @@
         mIsAutoScale = false;
         if (attrs != null) {
             TypedArray a = context.obtainStyledAttributes(attrs,
-                    com.airbnb.lottie.R.styleable.LottieAnimationView, 0 /*defStyleAttr*/, 0 /*defStyleRes*/);
-            mImageResId = a.getResourceId(com.airbnb.lottie.R.styleable.LottieAnimationView_lottie_rawRes, 0);
+                    com.airbnb.lottie.R.styleable.LottieAnimationView, /* defStyleAttr= */ 0,
+                    /* defStyleRes= */ 0);
+            mImageResId = a.getResourceId(
+                    com.airbnb.lottie.R.styleable.LottieAnimationView_lottie_rawRes,
+                    /* defValue= */ 0);
             mCacheComposition = a.getBoolean(
-                    com.airbnb.lottie.R.styleable.LottieAnimationView_lottie_cacheComposition, true);
+                    com.airbnb.lottie.R.styleable.LottieAnimationView_lottie_cacheComposition,
+                    /* defValue= */ true);
 
             a = context.obtainStyledAttributes(attrs,
-                    R.styleable.IllustrationPreference, 0 /*defStyleAttr*/, 0 /*defStyleRes*/);
+                    R.styleable.IllustrationPreference, /* defStyleAttr= */ 0,
+                    /* defStyleRes= */ 0);
             mLottieDynamicColor = a.getBoolean(R.styleable.IllustrationPreference_dynamicColor,
-                    false);
+                    /* defValue= */ false);
 
             a.recycle();
         }
diff --git a/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt b/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt
index 1776d25..1f4a48d 100644
--- a/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt
+++ b/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt
@@ -50,10 +50,6 @@
     }
 
     private fun tryInit(context: Context) {
-        if (expressiveThemeState != ExpressiveThemeState.UNKNOWN) {
-            return
-        }
-
         expressiveThemeState =
             if (
                 (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) &&
diff --git a/packages/SettingsLib/Spa/spa/Android.bp b/packages/SettingsLib/Spa/spa/Android.bp
index ac44a1b..5aeea9c 100644
--- a/packages/SettingsLib/Spa/spa/Android.bp
+++ b/packages/SettingsLib/Spa/spa/Android.bp
@@ -24,7 +24,9 @@
     srcs: ["src/**/*.kt"],
     use_resource_processor: true,
     static_libs: [
+        "MPAndroidChart",
         "SettingsLibColor",
+        "aconfig_settingstheme_exported_flags_java_lib",
         "androidx.compose.animation_animation",
         "androidx.compose.material3_material3",
         "androidx.compose.material_material-icons-extended",
@@ -36,7 +38,6 @@
         "androidx.navigation_navigation-compose",
         "com.google.android.material_material",
         "lottie_compose",
-        "MPAndroidChart",
     ],
     kotlincflags: [
         "-Xjvm-default=all",
diff --git a/packages/SettingsLib/Spa/spa/build.gradle.kts b/packages/SettingsLib/Spa/spa/build.gradle.kts
index 1396629..de1fa4e 100644
--- a/packages/SettingsLib/Spa/spa/build.gradle.kts
+++ b/packages/SettingsLib/Spa/spa/build.gradle.kts
@@ -51,6 +51,7 @@
 
 dependencies {
     api(project(":SettingsLibColor"))
+    api(project(":SettingsLib:SettingsTheme"))
     api("androidx.appcompat:appcompat:1.7.0")
     api("androidx.compose.material3:material3:1.4.0-alpha05")
     api("androidx.compose.material:material-icons-extended")
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTheme.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTheme.kt
index f948d51..badf7ae 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTheme.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTheme.kt
@@ -22,6 +22,7 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import com.android.settingslib.spa.framework.util.SystemProperties
+import com.android.settingslib.widget.theme.flags.Flags
 
 /**
  * The Material 3 Theme for Settings.
@@ -42,5 +43,7 @@
     }
 }
 
-val isSpaExpressiveEnabled
-    by lazy { SystemProperties.getBoolean("is_expressive_design_enabled", false) }
+val isSpaExpressiveEnabled by lazy {
+    SystemProperties.getBoolean("is_expressive_design_enabled", false) ||
+        Flags.isExpressiveDesignEnabled()
+}
diff --git a/packages/SettingsLib/Spa/tests/Android.bp b/packages/SettingsLib/Spa/tests/Android.bp
index 871449e..315b400 100644
--- a/packages/SettingsLib/Spa/tests/Android.bp
+++ b/packages/SettingsLib/Spa/tests/Android.bp
@@ -30,10 +30,14 @@
     static_libs: [
         "SpaLib",
         "SpaLibTestUtils",
+        "aconfig_settingstheme_exported_flags_java_lib",
         "androidx.compose.runtime_runtime",
         "androidx.test.ext.junit",
         "androidx.test.runner",
+        "flag-junit",
+        "flag-junit-base",
         "mockito-target-minus-junit4",
+        "platform-test-annotations",
     ],
     kotlincflags: ["-Xjvm-default=all"],
     sdk_version: "current",
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/button/ActionButtonsTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/button/ActionButtonsTest.kt
index 8d9bac6..bab02b0 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/button/ActionButtonsTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/button/ActionButtonsTest.kt
@@ -16,6 +16,8 @@
 
 package com.android.settingslib.spa.widget.button
 
+import android.platform.test.annotations.RequiresFlagsDisabled
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.outlined.Launch
 import androidx.compose.material.icons.outlined.Close
@@ -28,6 +30,7 @@
 import androidx.compose.ui.test.onNodeWithText
 import androidx.compose.ui.test.performClick
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.widget.theme.flags.Flags.FLAG_IS_EXPRESSIVE_DESIGN_ENABLED
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
 import org.junit.Test
@@ -37,6 +40,8 @@
 class ActionButtonsTest {
     @get:Rule
     val composeTestRule = createComposeRule()
+    @get:Rule
+    val mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
 
     @Test
     fun button_displayed() {
@@ -54,6 +59,7 @@
         composeTestRule.onNodeWithText("Open").assertIsDisplayed()
     }
 
+    @RequiresFlagsDisabled(FLAG_IS_EXPRESSIVE_DESIGN_ENABLED)
     @Test
     fun button_clickable() {
         var clicked by mutableStateOf(false)
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBarTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBarTest.kt
index 0a4f0d9..89206ba 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBarTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/CustomizedAppBarTest.kt
@@ -16,6 +16,8 @@
 
 package com.android.settingslib.spa.widget.scaffold
 
+import android.platform.test.annotations.RequiresFlagsDisabled
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.lazy.LazyColumn
@@ -52,6 +54,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.android.settingslib.spa.testutils.rootWidth
 import com.android.settingslib.spa.testutils.setContentForSizeAssertions
+import com.android.settingslib.widget.theme.flags.Flags.FLAG_IS_EXPRESSIVE_DESIGN_ENABLED
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
 import org.junit.Test
@@ -62,6 +65,8 @@
 class CustomizedAppBarTest {
 
     @get:Rule val rule = createComposeRule()
+    @get:Rule
+    val mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
 
     @Test
     fun smallTopAppBar_expandsToScreen() {
@@ -97,6 +102,7 @@
         assertThat(textStyle).isEqualTo(expectedTextStyle)
     }
 
+    @RequiresFlagsDisabled(FLAG_IS_EXPRESSIVE_DESIGN_ENABLED)
     @Test
     fun smallTopAppBar_contentColor() {
         var titleColor: Color = Color.Unspecified
diff --git a/packages/SettingsLib/aconfig/settingslib.aconfig b/packages/SettingsLib/aconfig/settingslib.aconfig
index d94450b..a029f56 100644
--- a/packages/SettingsLib/aconfig/settingslib.aconfig
+++ b/packages/SettingsLib/aconfig/settingslib.aconfig
@@ -26,14 +26,14 @@
     name: "enable_le_audio_sharing"
     namespace: "pixel_cross_device_control"
     description: "Gates whether to enable LE audio sharing"
-    bug: "323125723"
+    bug: "388674074"
 }
 
 flag {
     name: "enable_le_audio_qr_code_private_broadcast_sharing"
     namespace: "pixel_cross_device_control"
     description: "Gates whether to enable LE audio private broadcast sharing via QR code"
-    bug: "323125723"
+    bug: "388674074"
 }
 
 flag {
@@ -229,3 +229,23 @@
         purpose: PURPOSE_BUGFIX
     }
 }
+
+flag {
+    name: "adopt_primary_group_management_api_v2"
+    namespace: "cross_device_experiences"
+    description: "Adopt more Bluetooth LE broadcast primary group management APIs post launch"
+    bug: "381946931"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
+    name: "promote_audio_sharing_for_second_auto_connected_lea_device"
+    namespace: "cross_device_experiences"
+    description: "Show audio sharing promote notification or dialog when the second lea device is auto connected"
+    bug: "395786392"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_0.xml b/packages/SettingsLib/res/drawable/ic_wifi_0.xml
index 8ff6554..7f98457 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_0.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_0.xml
@@ -1,5 +1,5 @@
 <!--
-     Copyright (C) 2023 The Android Open Source Project
+     Copyright (C) 2025 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.
@@ -14,24 +14,24 @@
      limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="18dp"
-        android:height="13dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="13.0">
+    android:width="17.0dp"
+    android:height="12.58dp"
+    android:viewportHeight="12.0"
+    android:viewportWidth="16.21">
+
     <path
-        android:pathData="M0.523,3.314C0.32,3.502 0.32,3.819 0.516,4.015L1.223,4.722C1.418,4.917 1.734,4.916 1.938,4.73C5.936,1.09 12.066,1.09 16.064,4.73C16.268,4.916 16.584,4.917 16.779,4.722L17.486,4.015C17.682,3.819 17.682,3.502 17.479,3.314C12.698,-1.105 5.304,-1.105 0.523,3.314Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
     <path
-        android:pathData="M15.011,6.49C15.207,6.294 15.207,5.976 15.002,5.792C11.592,2.736 6.411,2.736 3,5.792C2.795,5.976 2.795,6.294 2.991,6.49L3.698,7.197C3.893,7.392 4.209,7.39 4.417,7.209C7.042,4.93 10.96,4.93 13.585,7.209C13.793,7.39 14.109,7.392 14.304,7.197L15.011,6.49Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+
     <path
-        android:pathData="M5.465,8.964C5.27,8.769 5.269,8.45 5.481,8.273C7.515,6.576 10.487,6.576 12.521,8.273C12.733,8.45 12.732,8.769 12.537,8.964L11.83,9.672C11.634,9.867 11.319,9.863 11.099,9.698C9.859,8.767 8.143,8.767 6.904,9.698C6.683,9.863 6.368,9.867 6.173,9.672L5.465,8.964Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M10.062,11.439C10.257,11.244 10.259,10.92 10.022,10.779C9.395,10.407 8.608,10.407 7.98,10.779C7.743,10.92 7.745,11.244 7.94,11.439L8.647,12.146C8.843,12.342 9.159,12.342 9.355,12.146L10.062,11.439Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_0_error.xml b/packages/SettingsLib/res/drawable/ic_wifi_0_error.xml
index db31b9d..3a9bba5 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_0_error.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_0_error.xml
@@ -1,28 +1,52 @@
+<!--
+     Copyright (C) 2025 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.
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="17dp"
-        android:height="13dp"
-        android:viewportWidth="17.0"
-        android:viewportHeight="13.0">
+    android:width="21.0dp"
+    android:height="15.66dp"
+    android:viewportHeight="13.5"
+    android:viewportWidth="18.1">
+
+    <group>
+        <!-- clip-out the circle which will contain the exclamation point (below this group) -->
+        <clip-path android:pathData="
+            M0,0
+            H18.1
+            V13.5
+            H0
+            Z
+            M15.109,13.5C17.871,13.5 20.109,11.261 20.109,8.5C20.109,5.739 17.871,3.5 15.109,3.5C12.348,3.5 10.109,5.739 10.109,8.5C10.109,11.261 12.348,13.5 15.109,13.5Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+    </group>
+
     <path
-        android:pathData="M0.146,4.015C-0.05,3.819 -0.05,3.502 0.153,3.314C4.002,-0.244 9.545,-0.937 14.055,1.234C13.339,1.449 12.792,2.053 12.66,2.801C8.998,1.281 4.65,1.924 1.568,4.73C1.364,4.916 1.048,4.917 0.853,4.722L0.146,4.015Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M12.63,4.435C9.406,2.836 5.424,3.288 2.63,5.792C2.424,5.976 2.425,6.294 2.621,6.49L3.328,7.197C3.523,7.392 3.839,7.39 4.047,7.209C6.484,5.094 10.033,4.942 12.63,6.753V4.435Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.095,8.964C4.9,8.769 4.899,8.45 5.111,8.273C7.145,6.576 10.117,6.576 12.151,8.273C12.363,8.45 12.362,8.769 12.166,8.964L11.459,9.672C11.264,9.867 10.949,9.863 10.728,9.698C9.489,8.767 7.773,8.767 6.533,9.698C6.313,9.863 5.998,9.867 5.802,9.672L5.095,8.964Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M9.652,10.779C9.889,10.92 9.887,11.244 9.692,11.439L8.984,12.146C8.789,12.342 8.473,12.342 8.277,12.146L7.57,11.439C7.375,11.244 7.373,10.92 7.61,10.779C8.237,10.407 9.024,10.407 9.652,10.779Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,11.15C14.63,10.598 15.078,10.15 15.63,10.15C16.182,10.15 16.63,10.598 16.63,11.15C16.63,11.703 16.182,12.15 15.63,12.15C15.078,12.15 14.63,11.703 14.63,11.15Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,3.15C14.63,2.874 14.854,2.65 15.13,2.65H16.13C16.406,2.65 16.63,2.874 16.63,3.15V8.15C16.63,8.427 16.406,8.65 16.13,8.65H15.13C14.854,8.65 14.63,8.427 14.63,8.15V3.15Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M15.109,5C14.699,5 14.359,5.34 14.359,5.75L14.359,8.75C14.359,9.16 14.699,9.5 15.109,9.5C15.519,9.5 15.859,9.16 15.859,8.75L15.859,5.75C15.859,5.34 15.519,5 15.109,5ZM15.109,12C15.519,12 15.859,11.66 15.859,11.25C15.859,10.84 15.519,10.5 15.109,10.5C14.699,10.5 14.359,10.84 14.359,11.25C14.359,11.66 14.699,12 15.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_1.xml b/packages/SettingsLib/res/drawable/ic_wifi_1.xml
index e170f1d..9c661f4 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_1.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_1.xml
@@ -1,5 +1,5 @@
 <!--
-     Copyright (C) 2023 The Android Open Source Project
+     Copyright (C) 2025 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.
@@ -14,23 +14,23 @@
      limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="18dp"
-        android:height="13dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="13.0">
+    android:width="17.0dp"
+    android:height="12.58dp"
+    android:viewportHeight="12.0"
+    android:viewportWidth="16.21">
+
     <path
-        android:pathData="M0.523,3.314C0.32,3.502 0.32,3.819 0.516,4.015L1.223,4.722C1.418,4.917 1.734,4.916 1.938,4.73C5.936,1.09 12.066,1.09 16.064,4.73C16.268,4.916 16.584,4.917 16.779,4.722L17.486,4.015C17.682,3.819 17.682,3.502 17.479,3.314C12.698,-1.105 5.304,-1.105 0.523,3.314Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
     <path
-        android:pathData="M15.011,6.49C15.207,6.294 15.207,5.976 15.002,5.792C11.592,2.736 6.411,2.736 3,5.792C2.795,5.976 2.795,6.294 2.991,6.49L3.698,7.197C3.893,7.392 4.209,7.39 4.417,7.209C7.042,4.93 10.96,4.93 13.585,7.209C13.793,7.39 14.109,7.392 14.304,7.197L15.011,6.49Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+
     <path
-        android:pathData="M5.465,8.964C5.27,8.769 5.269,8.45 5.481,8.273C7.515,6.576 10.487,6.576 12.521,8.273C12.733,8.45 12.732,8.769 12.537,8.964L11.83,9.672C11.634,9.867 11.319,9.863 11.099,9.698C9.859,8.767 8.143,8.767 6.904,9.698C6.683,9.863 6.368,9.867 6.173,9.672L5.465,8.964Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M10.062,11.439C10.257,11.244 10.259,10.92 10.022,10.779C9.395,10.407 8.608,10.407 7.98,10.779C7.743,10.92 7.745,11.244 7.94,11.439L8.647,12.146C8.843,12.342 9.159,12.342 9.355,12.146L10.062,11.439Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_1_error.xml b/packages/SettingsLib/res/drawable/ic_wifi_1_error.xml
index a4d6a5c..32a69f5 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_1_error.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_1_error.xml
@@ -1,27 +1,51 @@
+<!--
+     Copyright (C) 2025 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.
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="17dp"
-        android:height="13dp"
-        android:viewportWidth="17.0"
-        android:viewportHeight="13.0">
+    android:width="21.0dp"
+    android:height="15.66dp"
+    android:viewportHeight="13.5"
+    android:viewportWidth="18.1">
+
+    <group>
+        <!-- clip-out the circle which will contain the exclamation point (below this group) -->
+        <clip-path android:pathData="
+            M0,0
+            H18.1
+            V13.5
+            H0
+            Z
+            M15.109,13.5C17.871,13.5 20.109,11.261 20.109,8.5C20.109,5.739 17.871,3.5 15.109,3.5C12.348,3.5 10.109,5.739 10.109,8.5C10.109,11.261 12.348,13.5 15.109,13.5Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+    </group>
+
     <path
-        android:pathData="M0.146,4.015C-0.05,3.819 -0.05,3.502 0.153,3.314C4.002,-0.244 9.545,-0.937 14.055,1.234C13.339,1.449 12.792,2.053 12.66,2.801C8.998,1.281 4.65,1.924 1.568,4.73C1.364,4.916 1.048,4.917 0.853,4.722L0.146,4.015Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M12.63,4.435C9.406,2.836 5.424,3.288 2.63,5.792C2.424,5.976 2.425,6.294 2.621,6.49L3.328,7.197C3.523,7.392 3.839,7.39 4.047,7.209C6.484,5.094 10.033,4.942 12.63,6.753V4.435Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.095,8.964C4.9,8.769 4.899,8.45 5.111,8.273C7.145,6.576 10.117,6.576 12.151,8.273C12.363,8.45 12.362,8.769 12.166,8.964L11.459,9.672C11.264,9.867 10.949,9.863 10.728,9.698C9.489,8.767 7.773,8.767 6.533,9.698C6.313,9.863 5.998,9.867 5.802,9.672L5.095,8.964Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M9.652,10.779C9.889,10.92 9.887,11.244 9.692,11.439L8.984,12.146C8.789,12.342 8.473,12.342 8.277,12.146L7.57,11.439C7.375,11.244 7.373,10.92 7.61,10.779C8.237,10.407 9.024,10.407 9.652,10.779Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,11.15C14.63,10.598 15.078,10.15 15.63,10.15C16.182,10.15 16.63,10.598 16.63,11.15C16.63,11.703 16.182,12.15 15.63,12.15C15.078,12.15 14.63,11.703 14.63,11.15Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,3.15C14.63,2.874 14.854,2.65 15.13,2.65H16.13C16.406,2.65 16.63,2.874 16.63,3.15V8.15C16.63,8.427 16.406,8.65 16.13,8.65H15.13C14.854,8.65 14.63,8.427 14.63,8.15V3.15Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M15.109,5C14.699,5 14.359,5.34 14.359,5.75L14.359,8.75C14.359,9.16 14.699,9.5 15.109,9.5C15.519,9.5 15.859,9.16 15.859,8.75L15.859,5.75C15.859,5.34 15.519,5 15.109,5ZM15.109,12C15.519,12 15.859,11.66 15.859,11.25C15.859,10.84 15.519,10.5 15.109,10.5C14.699,10.5 14.359,10.84 14.359,11.25C14.359,11.66 14.699,12 15.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_2.xml b/packages/SettingsLib/res/drawable/ic_wifi_2.xml
index fc62267..02c14e1 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_2.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_2.xml
@@ -1,5 +1,5 @@
 <!--
-     Copyright (C) 2023 The Android Open Source Project
+     Copyright (C) 2025 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.
@@ -14,22 +14,22 @@
      limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="18dp"
-        android:height="13dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="13.0">
+    android:width="17.0dp"
+    android:height="12.58dp"
+    android:viewportHeight="12.0"
+    android:viewportWidth="16.21">
+
     <path
-        android:pathData="M0.523,3.314C0.32,3.502 0.32,3.819 0.516,4.015L1.223,4.722C1.418,4.917 1.734,4.916 1.938,4.73C5.936,1.09 12.066,1.09 16.064,4.73C16.268,4.916 16.584,4.917 16.779,4.722L17.486,4.015C17.682,3.819 17.682,3.502 17.479,3.314C12.698,-1.105 5.304,-1.105 0.523,3.314Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
     <path
-        android:pathData="M15.011,6.49C15.207,6.294 15.207,5.976 15.002,5.792C11.592,2.736 6.411,2.736 3,5.792C2.795,5.976 2.795,6.294 2.991,6.49L3.698,7.197C3.893,7.392 4.209,7.39 4.417,7.209C7.042,4.93 10.96,4.93 13.585,7.209C13.793,7.39 14.109,7.392 14.304,7.197L15.011,6.49Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillAlpha="0.45"
+        android:fillColor="#000"
+        android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+
     <path
-        android:pathData="M5.465,8.964C5.27,8.769 5.269,8.45 5.481,8.273C7.515,6.576 10.487,6.576 12.521,8.273C12.733,8.45 12.732,8.769 12.537,8.964L11.83,9.672C11.634,9.867 11.319,9.863 11.099,9.698C9.859,8.767 8.143,8.767 6.904,9.698C6.683,9.863 6.368,9.867 6.173,9.672L5.465,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M10.062,11.439C10.257,11.244 10.259,10.92 10.022,10.779C9.395,10.407 8.608,10.407 7.98,10.779C7.743,10.92 7.745,11.244 7.94,11.439L8.647,12.146C8.843,12.342 9.159,12.342 9.355,12.146L10.062,11.439Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_2_error.xml b/packages/SettingsLib/res/drawable/ic_wifi_2_error.xml
index 65f40ef..da0aa12 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_2_error.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_2_error.xml
@@ -1,26 +1,50 @@
+<!--
+     Copyright (C) 2025 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.
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="17dp"
-        android:height="13dp"
-        android:viewportWidth="17.0"
-        android:viewportHeight="13.0">
+    android:width="21.0dp"
+    android:height="15.66dp"
+    android:viewportHeight="13.5"
+    android:viewportWidth="18.1">
+
+    <group>
+        <!-- clip-out the circle which will contain the exclamation point (below this group) -->
+        <clip-path android:pathData="
+            M0,0
+            H18.1
+            V13.5
+            H0
+            Z
+            M15.109,13.5C17.871,13.5 20.109,11.261 20.109,8.5C20.109,5.739 17.871,3.5 15.109,3.5C12.348,3.5 10.109,5.739 10.109,8.5C10.109,11.261 12.348,13.5 15.109,13.5Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
+        <path
+            android:fillAlpha="0.45"
+            android:fillColor="#000"
+            android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+    </group>
+
     <path
-        android:pathData="M0.146,4.015C-0.05,3.819 -0.05,3.502 0.153,3.314C4.002,-0.244 9.545,-0.937 14.055,1.234C13.339,1.449 12.792,2.053 12.66,2.801C8.998,1.281 4.65,1.924 1.568,4.73C1.364,4.916 1.048,4.917 0.853,4.722L0.146,4.015Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M12.63,4.435C9.406,2.836 5.424,3.288 2.63,5.792C2.424,5.976 2.425,6.294 2.621,6.49L3.328,7.197C3.523,7.392 3.839,7.39 4.047,7.209C6.484,5.094 10.033,4.942 12.63,6.753V4.435Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.095,8.964C4.9,8.769 4.899,8.45 5.111,8.273C7.145,6.576 10.117,6.576 12.151,8.273C12.363,8.45 12.362,8.769 12.166,8.964L11.459,9.672C11.264,9.867 10.949,9.863 10.728,9.698C9.489,8.767 7.773,8.767 6.533,9.698C6.313,9.863 5.998,9.867 5.802,9.672L5.095,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M9.652,10.779C9.889,10.92 9.887,11.244 9.692,11.439L8.984,12.146C8.789,12.342 8.473,12.342 8.277,12.146L7.57,11.439C7.375,11.244 7.373,10.92 7.61,10.779C8.237,10.407 9.024,10.407 9.652,10.779Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,11.15C14.63,10.598 15.078,10.15 15.63,10.15C16.182,10.15 16.63,10.598 16.63,11.15C16.63,11.703 16.182,12.15 15.63,12.15C15.078,12.15 14.63,11.703 14.63,11.15Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,3.15C14.63,2.874 14.854,2.65 15.13,2.65H16.13C16.406,2.65 16.63,2.874 16.63,3.15V8.15C16.63,8.427 16.406,8.65 16.13,8.65H15.13C14.854,8.65 14.63,8.427 14.63,8.15V3.15Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M15.109,5C14.699,5 14.359,5.34 14.359,5.75L14.359,8.75C14.359,9.16 14.699,9.5 15.109,9.5C15.519,9.5 15.859,9.16 15.859,8.75L15.859,5.75C15.859,5.34 15.519,5 15.109,5ZM15.109,12C15.519,12 15.859,11.66 15.859,11.25C15.859,10.84 15.519,10.5 15.109,10.5C14.699,10.5 14.359,10.84 14.359,11.25C14.359,11.66 14.699,12 15.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_3.xml b/packages/SettingsLib/res/drawable/ic_wifi_3.xml
index 9079daf..6b183af 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_3.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_3.xml
@@ -1,5 +1,5 @@
 <!--
-     Copyright (C) 2023 The Android Open Source Project
+     Copyright (C) 2025 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.
@@ -14,21 +14,21 @@
      limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="18dp"
-        android:height="13dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="13.0">
+    android:width="17.0dp"
+    android:height="12.58dp"
+    android:viewportHeight="12.0"
+    android:viewportWidth="16.21">
+
     <path
-        android:pathData="M0.523,3.314C0.32,3.502 0.32,3.819 0.516,4.015L1.223,4.722C1.418,4.917 1.734,4.916 1.938,4.73C5.936,1.09 12.066,1.09 16.064,4.73C16.268,4.916 16.584,4.917 16.779,4.722L17.486,4.015C17.682,3.819 17.682,3.502 17.479,3.314C12.698,-1.105 5.304,-1.105 0.523,3.314Z"
-        android:fillAlpha="0.24"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
     <path
-        android:pathData="M15.011,6.49C15.207,6.294 15.207,5.976 15.002,5.792C11.592,2.736 6.411,2.736 3,5.792C2.795,5.976 2.795,6.294 2.991,6.49L3.698,7.197C3.893,7.392 4.209,7.39 4.417,7.209C7.042,4.93 10.96,4.93 13.585,7.209C13.793,7.39 14.109,7.392 14.304,7.197L15.011,6.49Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+
     <path
-        android:pathData="M5.465,8.964C5.27,8.769 5.269,8.45 5.481,8.273C7.515,6.576 10.487,6.576 12.521,8.273C12.733,8.45 12.732,8.769 12.537,8.964L11.83,9.672C11.634,9.867 11.319,9.863 11.099,9.698C9.859,8.767 8.143,8.767 6.904,9.698C6.683,9.863 6.368,9.867 6.173,9.672L5.465,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M10.062,11.439C10.257,11.244 10.259,10.92 10.022,10.779C9.395,10.407 8.608,10.407 7.98,10.779C7.743,10.92 7.745,11.244 7.94,11.439L8.647,12.146C8.843,12.342 9.159,12.342 9.355,12.146L10.062,11.439Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_3_error.xml b/packages/SettingsLib/res/drawable/ic_wifi_3_error.xml
index 940781b..c30affa 100644
--- a/packages/SettingsLib/res/drawable/ic_wifi_3_error.xml
+++ b/packages/SettingsLib/res/drawable/ic_wifi_3_error.xml
@@ -1,25 +1,49 @@
+<!--
+     Copyright (C) 2025 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.
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="17dp"
-        android:height="13dp"
-        android:viewportWidth="17.0"
-        android:viewportHeight="13.0">
+    android:width="21.0dp"
+    android:height="15.66dp"
+    android:viewportHeight="13.5"
+    android:viewportWidth="18.1">
+
+    <group>
+        <!-- clip-out the circle which will contain the exclamation point (below this group) -->
+        <clip-path android:pathData="
+            M0,0
+            H18.1
+            V13.5
+            H0
+            Z
+            M15.109,13.5C17.871,13.5 20.109,11.261 20.109,8.5C20.109,5.739 17.871,3.5 15.109,3.5C12.348,3.5 10.109,5.739 10.109,8.5C10.109,11.261 12.348,13.5 15.109,13.5Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M8.109,12C8.938,12 9.609,11.328 9.609,10.5C9.609,9.672 8.938,9 8.109,9C7.281,9 6.609,9.672 6.609,10.5C6.609,11.328 7.281,12 8.109,12Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M12.659,7.45C13.199,6.91 13.149,6.01 12.479,5.64C11.179,4.92 9.689,4.51 8.109,4.51C6.529,4.51 5.029,4.92 3.739,5.64C3.069,6.01 3.019,6.91 3.559,7.45C3.999,7.89 4.699,7.94 5.259,7.66C6.119,7.24 7.089,7 8.109,7C9.129,7 10.099,7.24 10.959,7.66C11.519,7.94 12.219,7.89 12.659,7.45Z" />
+
+        <path
+            android:fillColor="#000"
+            android:pathData="M15.85,4.26C16.36,3.75 16.34,2.91 15.76,2.49C13.61,0.93 10.97,0 8.11,0C5.25,0 2.61,0.92 0.46,2.49C-0.12,2.91 -0.14,3.75 0.37,4.26C0.84,4.73 1.59,4.75 2.13,4.37C3.83,3.19 5.89,2.5 8.11,2.5C10.33,2.5 12.39,3.19 14.09,4.37C14.63,4.75 15.38,4.73 15.85,4.26Z" />
+    </group>
+
     <path
-        android:pathData="M0.146,4.015C-0.05,3.819 -0.05,3.502 0.153,3.314C4.002,-0.244 9.545,-0.937 14.055,1.234C13.339,1.449 12.792,2.053 12.66,2.801C8.998,1.281 4.65,1.924 1.568,4.73C1.364,4.916 1.048,4.917 0.853,4.722L0.146,4.015Z"
-        android:fillAlpha="0.3"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M12.63,4.435C9.406,2.836 5.424,3.288 2.63,5.792C2.424,5.976 2.425,6.294 2.621,6.49L3.328,7.197C3.523,7.392 3.839,7.39 4.047,7.209C6.484,5.094 10.033,4.942 12.63,6.753V4.435Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.095,8.964C4.9,8.769 4.899,8.45 5.111,8.273C7.145,6.576 10.117,6.576 12.151,8.273C12.363,8.45 12.362,8.769 12.166,8.964L11.459,9.672C11.264,9.867 10.949,9.863 10.728,9.698C9.489,8.767 7.773,8.767 6.533,9.698C6.313,9.863 5.998,9.867 5.802,9.672L5.095,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M9.652,10.779C9.889,10.92 9.887,11.244 9.692,11.439L8.984,12.146C8.789,12.342 8.473,12.342 8.277,12.146L7.57,11.439C7.375,11.244 7.373,10.92 7.61,10.779C8.237,10.407 9.024,10.407 9.652,10.779Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,11.15C14.63,10.598 15.078,10.15 15.63,10.15C16.182,10.15 16.63,10.598 16.63,11.15C16.63,11.703 16.182,12.15 15.63,12.15C15.078,12.15 14.63,11.703 14.63,11.15Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,3.15C14.63,2.874 14.854,2.65 15.13,2.65H16.13C16.406,2.65 16.63,2.874 16.63,3.15V8.15C16.63,8.427 16.406,8.65 16.13,8.65H15.13C14.854,8.65 14.63,8.427 14.63,8.15V3.15Z"
-        android:fillColor="#000"/>
+        android:fillColor="#000"
+        android:pathData="M15.109,5C14.699,5 14.359,5.34 14.359,5.75L14.359,8.75C14.359,9.16 14.699,9.5 15.109,9.5C15.519,9.5 15.859,9.16 15.859,8.75L15.859,5.75C15.859,5.34 15.519,5 15.109,5ZM15.109,12C15.519,12 15.859,11.66 15.859,11.25C15.859,10.84 15.519,10.5 15.109,10.5C14.699,10.5 14.359,10.84 14.359,11.25C14.359,11.66 14.699,12 15.109,12Z" />
+
 </vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_4.xml b/packages/SettingsLib/res/drawable/ic_wifi_4.xml
deleted file mode 100644
index 6185e4a..0000000
--- a/packages/SettingsLib/res/drawable/ic_wifi_4.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-     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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="18dp"
-        android:height="13dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="13.0">
-    <path
-        android:pathData="M0.523,3.314C0.32,3.502 0.32,3.819 0.516,4.015L1.223,4.722C1.418,4.917 1.734,4.916 1.938,4.73C5.936,1.09 12.066,1.09 16.064,4.73C16.268,4.916 16.584,4.917 16.779,4.722L17.486,4.015C17.682,3.819 17.682,3.502 17.479,3.314C12.698,-1.105 5.304,-1.105 0.523,3.314Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M15.011,6.49C15.207,6.294 15.207,5.976 15.002,5.792C11.592,2.736 6.411,2.736 3,5.792C2.795,5.976 2.795,6.294 2.991,6.49L3.698,7.197C3.893,7.392 4.209,7.39 4.417,7.209C7.042,4.93 10.96,4.93 13.585,7.209C13.793,7.39 14.109,7.392 14.304,7.197L15.011,6.49Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.465,8.964C5.27,8.769 5.269,8.45 5.481,8.273C7.515,6.576 10.487,6.576 12.521,8.273C12.733,8.45 12.732,8.769 12.537,8.964L11.83,9.672C11.634,9.867 11.319,9.863 11.099,9.698C9.859,8.767 8.143,8.767 6.904,9.698C6.683,9.863 6.368,9.867 6.173,9.672L5.465,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M10.062,11.439C10.257,11.244 10.259,10.92 10.022,10.779C9.395,10.407 8.608,10.407 7.98,10.779C7.743,10.92 7.745,11.244 7.94,11.439L8.647,12.146C8.843,12.342 9.159,12.342 9.355,12.146L10.062,11.439Z"
-        android:fillColor="#000"/>
-</vector>
diff --git a/packages/SettingsLib/res/drawable/ic_wifi_4_error.xml b/packages/SettingsLib/res/drawable/ic_wifi_4_error.xml
deleted file mode 100644
index 715aaa0..0000000
--- a/packages/SettingsLib/res/drawable/ic_wifi_4_error.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="17dp"
-        android:height="13dp"
-        android:viewportWidth="17.0"
-        android:viewportHeight="13.0">
-    <path
-        android:pathData="M0.146,4.015C-0.05,3.819 -0.05,3.502 0.153,3.314C4.002,-0.244 9.545,-0.937 14.055,1.234C13.339,1.449 12.792,2.053 12.66,2.801C8.998,1.281 4.65,1.924 1.568,4.73C1.364,4.916 1.048,4.917 0.853,4.722L0.146,4.015Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M12.63,4.435C9.406,2.836 5.424,3.288 2.63,5.792C2.424,5.976 2.425,6.294 2.621,6.49L3.328,7.197C3.523,7.392 3.839,7.39 4.047,7.209C6.484,5.094 10.033,4.942 12.63,6.753V4.435Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M5.095,8.964C4.9,8.769 4.899,8.45 5.111,8.273C7.145,6.576 10.117,6.576 12.151,8.273C12.363,8.45 12.362,8.769 12.166,8.964L11.459,9.672C11.264,9.867 10.949,9.863 10.728,9.698C9.489,8.767 7.773,8.767 6.533,9.698C6.313,9.863 5.998,9.867 5.802,9.672L5.095,8.964Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M9.652,10.779C9.889,10.92 9.887,11.244 9.692,11.439L8.984,12.146C8.789,12.342 8.473,12.342 8.277,12.146L7.57,11.439C7.375,11.244 7.373,10.92 7.61,10.779C8.237,10.407 9.024,10.407 9.652,10.779Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,11.15C14.63,10.598 15.078,10.15 15.63,10.15C16.182,10.15 16.63,10.598 16.63,11.15C16.63,11.703 16.182,12.15 15.63,12.15C15.078,12.15 14.63,11.703 14.63,11.15Z"
-        android:fillColor="#000"/>
-    <path
-        android:pathData="M14.63,3.15C14.63,2.874 14.854,2.65 15.13,2.65H16.13C16.406,2.65 16.63,2.874 16.63,3.15V8.15C16.63,8.427 16.406,8.65 16.13,8.65H15.13C14.854,8.65 14.63,8.427 14.63,8.15V3.15Z"
-        android:fillColor="#000"/>
-</vector>
diff --git a/core/res/res/values-w204dp-round-watch/dimens_watch.xml b/packages/SettingsLib/res/layout/activity_create_new_user.xml
similarity index 67%
rename from core/res/res/values-w204dp-round-watch/dimens_watch.xml
rename to packages/SettingsLib/res/layout/activity_create_new_user.xml
index 3509474..7453b53 100644
--- a/core/res/res/values-w204dp-round-watch/dimens_watch.xml
+++ b/packages/SettingsLib/res/layout/activity_create_new_user.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
   ~ Copyright (C) 2025 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,8 +13,10 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<resources>
-    <!--  watch's indeterminate progress bar dimens based on the current screen size -->
-    <dimen name="loader_horizontal_min_width_watch">70dp</dimen>
-    <dimen name="loader_horizontal_min_height_watch">15dp</dimen>
-</resources>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent"
+    android:orientation="vertical">
+</LinearLayout>
\ No newline at end of file
diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml
index c4ba7eb..89648d1 100644
--- a/packages/SettingsLib/res/values-af/arrays.xml
+++ b/packages/SettingsLib/res/values-af/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Slegs toestelskerm (verstek)"</item>
+    <item msgid="9161645858025071955">"Eksterne skerm"</item>
+    <item msgid="23651860565814477">"Laaste interaksie met statusbalk"</item>
+    <item msgid="7521112827893653392">"Fokusgebaseer"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Wys skakering net op toestelskerm"</item>
+    <item msgid="1955398604822147783">"Wys skakering op enkele eksterne skerm"</item>
+    <item msgid="391477482416751568">"Wys skakering op die skerm waarop die statusbalk die laaste interaksie gehad het"</item>
+    <item msgid="1746820128097981528">"Wys skakering op die laaste gefokusde skerm"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 3a7e452..dbc4e5a 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kon nie omgewing opdateer nie"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktief (net media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiewe (net media). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Gekoppel (steun oudiodeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Gekoppel (steun oudiodeling). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Gekoppel (steun oudiodeling). Links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Gekoppel (steun oudiodeling). Regs: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Gekoppel (steun oudiodeling)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktief (net media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Steun oudiodeling"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktief (net media), net linkerkant"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktief (net media), net regterkant"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktief (net media), linker- en regterkant"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardeware-versnelde lewering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitering"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strengmodus geaktiveer"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Flits skerm as apps lang bewerkings uitvoer op die hoofdraad"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Wyserligging"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Stel WebView-implementering"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Hierdie keuse is nie meer geldig nie. Probeer weer."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Fotokleurmodus"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Gebruik sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Gedeaktiveer"</string>
diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml
index a151f83..4ae2d99b 100644
--- a/packages/SettingsLib/res/values-am/arrays.xml
+++ b/packages/SettingsLib/res/values-am/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"የመሣሪያ ማሳያ ብቻ (ነባሪ)"</item>
+    <item msgid="9161645858025071955">"ውጫዊ ማሳያ"</item>
+    <item msgid="23651860565814477">"የቅርብ ጊዜ የሁኔታ አሞሌ ንክኪ"</item>
+    <item msgid="7521112827893653392">"ትኩረት ላይ የተመሠረተ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"በመሣሪያ ማሳያ ላይ ብቻ ጥላ አሳይ"</item>
+    <item msgid="1955398604822147783">"በነጠላ ውጫዊ ማሳያ ላይ ጥላ አሳይ"</item>
+    <item msgid="391477482416751568">"ለመጨረሻ ጊዜ በሁኔታ አሞሌው መስተጋብር የተፈጠረበት ማሳያ ላይ ጥላ አሳይ"</item>
+    <item msgid="1746820128097981528">"ለመጨረሻ ጊዜ ትኩረት በተደረገበት ማሳያ ላይ ጥላ አሳይ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 25e9c5e..bfe6006 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"በዙሪያ ያሉትን ማዘመን አልተቻለም"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ገቢር (ሚዲያ ብቻ)። <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ገቢር (ሚዲያ ብቻ)። ግ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>፣ ቀ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ባትሪ።"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)፣ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል) ግ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>፣ ቀ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ባትሪ።"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)። ግራ፦<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)። ቀኝ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ።"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ተገናኝቷል (የድምፅ ማጋራት ይደግፋል)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ገቢር (ሚዲያ ብቻ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ድምፅ ማጋራትን ይደግፋል"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ገቢር (ሚዲያ ብቻ)፣ ግራ ብቻ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ገቢር (ሚዲያ ብቻ) ቀኝ ብቻ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ገቢር (ሚዲያ ብቻ)፣ ግራ እና ቀኝ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"የተፋጠነ የሃርድዌር አሰጣጥ"</string>
     <string name="media_category" msgid="8122076702526144053">"ማህደረመረጃ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"ቁጥጥር"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"ጥብቅ ሁነታ ነቅቷል"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"መተግበሪያዎች ረጅም ክንውኖች ወደ ዋና ክሮች ሲያካሂዱ ማያላይ ብልጭ አድርግ።"</string>
     <string name="pointer_location" msgid="7516929526199520173">"የአመልካች ሥፍራ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"የWebView ትግበራ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"የWebView ትግበራን ያዘጋጁ"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ይህ ምርጫ ከአሁን በኋላ የሚሰራ አይደለም። እንደገና ይሞክሩ።"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"የስዕል ቀለም ሁነታ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ይጠቀሙ"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ተሰናክሏል"</string>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index ebdb0c7..e3c36b8 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"شاشة الجهاز فقط (الإعداد التلقائي)"</item>
+    <item msgid="9161645858025071955">"الشاشة الخارجية"</item>
+    <item msgid="23651860565814477">"آخر لمسة على شريط الحالة"</item>
+    <item msgid="7521112827893653392">"على الشاشة التي يتم التركيز عليها"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"عرض الظل على شاشة الجهاز فقط"</item>
+    <item msgid="1955398604822147783">"عرض الظل على شاشة خارجية واحدة"</item>
+    <item msgid="391477482416751568">"عرض الظل على آخر شاشة تم التفاعل مع شريط الحالة فيها"</item>
+    <item msgid="1746820128097981528">"عرض الظل على آخر شاشة تم التركيز عليها"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 8956c44..64a021d 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"تعذَّر تعديل حالة الأصوات المحيطة"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"‏البلوتوث نشِط (للوسائط فقط). مستوى شحن البطارية: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"‏البلوتوث نشِط (للوسائط فقط)، مستوى الشحن في سماعة الرأس اليسرى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، مستوى الشحن في سماعة الرأس اليمنى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"‏البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى شحن البطارية: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"‏البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليسرى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، مستوى الشحن في سماعة الرأس اليمنى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"‏البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليسرى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"‏البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة). مستوى الشحن في سماعة الرأس اليمنى: ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"البلوتوث متصل (ميزة \"مشاركة الصوت\" متاحة)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"البلوتوث مفعَّل (للوسائط فقط)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"تتوفّر ميزة \"مشاركة الصوت\""</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"السماعة اليسرى فقط مشغَّلة (للوسائط فقط)"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"السماعة اليمنى فقط مشغَّلة (للوسائط فقط)"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"السماعتان اليسرى واليمنى مشغَّلتان (للوسائط فقط)"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"عرض تسارع الأجهزة"</string>
     <string name="media_category" msgid="8122076702526144053">"الوسائط"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"المراقبة"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"تفعيل الوضع المتشدد"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"وميض الشاشة عند إجراء التطبيقات عمليات طويلة في سلسلة المحادثات الرئيسية"</string>
     <string name="pointer_location" msgid="7516929526199520173">"موقع المؤشر"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"‏تطبيق WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"‏تعيين تطبيق WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"لم يعد هذا الاختيار صالحًا. أعد المحاولة."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"نمط لون الصورة"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"‏استخدام sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"غير مفعّل"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index bfacbb2..82ee7f3 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"আশ-পাশ আপডে’ট কৰিব পৰা নগ’ল"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)। বাওঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, সোঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> বেটাৰী।"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে), বাওঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, সোঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> বেটাৰী"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। বাকী আছে: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)। সোঁ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰী।"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"সংযুক্ত হৈ আছে (অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"অডিঅ’ শ্বেয়াৰিং সমৰ্থন কৰে"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), কেৱল বাওঁ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), কেৱল সোঁ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"সক্ৰিয় হৈ আছে (কেৱল মিডিয়া), বাওঁ আৰু সোঁ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"হাৰ্ডৱেৰৰদ্বাৰা ত্বৰিত ৰেণ্ডাৰিং"</string>
     <string name="media_category" msgid="8122076702526144053">"মিডিয়া"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"নিৰীক্ষণ কৰি থকা হৈছে"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"কঠোৰ ম’ড সক্ষম কৰা হৈছে"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"যেতিয়া এপ্‌সমূহে মুখ্য থ্ৰেডত দীঘলীয়া কাৰ্যকলাপ চলায়, তেতিয়া স্ক্ৰীন ফ্লাশ্ব কৰক"</string>
     <string name="pointer_location" msgid="7516929526199520173">"পইণ্টাৰৰ অৱস্থান"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"ৱেবভিউ প্ৰয়োগ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ৱেবভিউ প্ৰয়োগ ছেট কৰক"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"বাছনিটো এতিয়া আৰু মান্য় নহয়। আকৌ চেষ্টা কৰক।"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"চিত্ৰৰ ৰং ম’ড"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"এছআৰজিবি ব্যৱহাৰ কৰক"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"নিষ্ক্ৰিয় হৈ আছে"</string>
diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml
index 52cf498..3b02070 100644
--- a/packages/SettingsLib/res/values-az/arrays.xml
+++ b/packages/SettingsLib/res/values-az/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Yalnız cihaz displeyi (defolt)"</item>
+    <item msgid="9161645858025071955">"Xarici displey"</item>
+    <item msgid="23651860565814477">"Ən son status paneli toxunuşu"</item>
+    <item msgid="7521112827893653392">"Fokus əsaslı"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Kölgəni yalnız cihaz displeyində göstərin"</item>
+    <item msgid="1955398604822147783">"Tək xarici displeydə kölgə göstərilsin"</item>
+    <item msgid="391477482416751568">"Ən son status paneli ilə interaksiya edilmiş displeydə kölgə göstərilsin"</item>
+    <item msgid="1746820128097981528">"Son fokuslanmış displeydə kölgə göstərilsin"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 9013fb5..aa93964 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ətraf mühit güncəllənmədi"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (yalnız media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (yalnız media). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batareya."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Qoşulub (audio paylaşma dəstəklənir). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Qoşulub (audio paylaşma dəstəklənir). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batareya."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Qoşulub (audio paylaşma dəstəklənir). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Qoşulub (audio paylaşma dəstəklənir). Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Qoşulub (audio paylaşma dəstəklənir)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (yalnız media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audio paylaşma dəstəklənir"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (yalnız media), yalnız sol"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (yalnız media), yalnız sağ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (yalnız media), sol və sağ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderinq aparat sürətlənməsi"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorinq"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Ciddi rejim"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Uzun əməliyyatlar ərzində ekran işıqlandırılsın"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Kursor yeri"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView servisi"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView servisini ayarlayın"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu seçim artıq etibarlı deyil. Yenidən cəhd edin."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Şəkil rəng rejimi"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB istifadə edin"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiv"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 7a00b96..7f60500 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspelo"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo za medije). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo za medije). Levo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava deljenje zvuka), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava deljenje zvuka), levo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava deljenje zvuka). Levo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava deljenje zvuka). Desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava deljenje zvuka)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivan (samo za medije)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava deljenje zvuka"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivan (samo za medije), samo levo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivan (samo za medije), samo desno"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivan (samo za medije), levo i desno"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano prikazivanje"</string>
     <string name="media_category" msgid="8122076702526144053">"Mediji"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Nadgledanje"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Omogućen je strogi režim"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ekran treperi kada aplikacije obavljaju duge operacije na glavnoj niti"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Primena WebView-a"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Podesite primenu WebView-a"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ovaj izbor više nije važeći. Probajte ponovo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Režim boja slika"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Koristi sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno je"</string>
diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml
index 48c3627..e33a71e 100644
--- a/packages/SettingsLib/res/values-be/arrays.xml
+++ b/packages/SettingsLib/res/values-be/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Толькі дысплэй прылады (стандартна)"</item>
+    <item msgid="9161645858025071955">"Знешні дысплэй"</item>
+    <item msgid="23651860565814477">"Апошняе націсканне на панэль стану"</item>
+    <item msgid="7521112827893653392">"У залежнасці ад выкарыстання"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Паказваць шчыток толькі на дысплэі прылады"</item>
+    <item msgid="1955398604822147783">"Паказваць шчыток апавяшчэнняў на адным знешнім дысплэі"</item>
+    <item msgid="391477482416751568">"Паказваць шчыток апавяшчэнняў на дысплэі, на якім адбывалася апошняе ўзаемадзеянне з панэллю стану"</item>
+    <item msgid="1746820128097981528">"Паказваць шчыток апавяшчэнняў на дысплэі, які выкарыстоўваўся апошнім"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 0ad8ac7..50de924 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не ўдалося абнавіць стан навакольных гукаў"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Выкарыстоўваецца (толькі для мультымедыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Выкарыстоўваецца (толькі для мультымедыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (левы навушнік), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (правы навушнік)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (левы навушнік), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (правы навушнік)."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (левы навушнік)."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Падключана (падтрымліваецца абагульванне аўдыя). Зарад акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (правы навушнік)."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Падключана (падтрымліваецца абагульванне аўдыя)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Выкарыстоўваецца (толькі для мультымедыя)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Падтрымліваецца абагульванне аўдыя"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Выкарыстоўваецца (толькі для мультымедыя), толькі левы навушнік"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Выкарыстоўваецца (толькі для мультымедыя), толькі правы навушнік"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Выкарыстоўваецца (толькі для мультымедыя), левы і правы навушнікі"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Апаратнае паскарэнне рэндэрынгу"</string>
     <string name="media_category" msgid="8122076702526144053">"Медыя"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Маніторынг"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Уключаны строгі рэжым"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Падсвечваць экран падчас доўгіх аперацый"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Пазіцыя ўказальніка"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Рэалізацыя WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Наладзіць рэалізацыю WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Гэты варыянт больш не даступны. Паспрабуйце яшчэ раз."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Каляровы рэжым выявы"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Выкарыстоўваць sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Выключана"</string>
diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml
index 21dfa06..fabd7d9 100644
--- a/packages/SettingsLib/res/values-bg/arrays.xml
+++ b/packages/SettingsLib/res/values-bg/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Само на екрана на устройството (по подразбиране)"</item>
+    <item msgid="9161645858025071955">"Външен екран"</item>
+    <item msgid="23651860565814477">"Последно докосване на лентата на състоянието"</item>
+    <item msgid="7521112827893653392">"Въз основа на фокуса"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Показване на падащия панел само на екрана на устройството"</item>
+    <item msgid="1955398604822147783">"Показване на падащия панел на един външен екран"</item>
+    <item msgid="391477482416751568">"Показване на падащия панел на екрана, с чиято лента на състоянието е взаимодействано последно"</item>
+    <item msgid="1746820128097981528">"Показване на падащия панел на екрана, върху който последно е бил поставен фокусът"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 8a87e57..c3c1783 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Данните за околните звуци не бяха актуализирани"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само за мултимедия). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само за мултимедия). Л: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Д: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Свързано (поддържа споделяне на звука). Батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Свързано (поддържа споделяне на звука). Л: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Д: батерия – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Свързано (поддържа споделяне на звука). За ляво ухо. Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Свързано (поддържа споделяне на звука). За дясно ухо. Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Свързано (поддържа споделяне на звука)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (само за мултимедия)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддържа споделяне на звука"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (само за мултимедия), само лявата"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (само за мултимедия), само дясната"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (само за мултимедия), лявата и дясната"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардуерно ускорено изобразяване"</string>
     <string name="media_category" msgid="8122076702526144053">"Мултимедия"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Наблюдение"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Активиран строг режим"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Примигване на екрана при дълги операции в главната нишка"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Mестопол. на показалеца"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Внедряване на WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Задаване на внедряването на WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Този избор вече не е валиден. Опитайте отново."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Цветови режим за снимките"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Използване на sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Деактивирано"</string>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index b27264d..27fe258 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"শুধুমাত্র ডিভাইসের ডিসপ্লে (ডিফল্ট)"</item>
+    <item msgid="9161645858025071955">"এক্সটার্নাল ডিসপ্লে"</item>
+    <item msgid="23651860565814477">"লেটেস্ট স্ট্যাটাস বার টাচ"</item>
+    <item msgid="7521112827893653392">"ফোকাস-ভিত্তিক"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"শুধুমাত্র ডিভাইসের ডিসপ্লেতে শেড দেখুন"</item>
+    <item msgid="1955398604822147783">"কোনও একটি বাইরের ডিসপ্লেতে শেড দেখুন"</item>
+    <item msgid="391477482416751568">"সেই ডিসপ্লেতে শেড দেখুন যেখানে যার স্ট্যাটাস বারে শেষ বার ইন্টার‍্যাকশন করা হয়েছে"</item>
+    <item msgid="1746820128097981528">"সেই ডিসপ্লেতে শেড দেখুন যেখানে শেষবার ফোকাস করা হয়েছে"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 1e7c7a2..93b6521 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"সারাউন্ডিং আপডেট করা যায়নি"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"চালু আছে (শুধুমাত্র মিডিয়া)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"চালু আছে (শুধুমাত্র মিডিয়া), বাঁদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ডানদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ব্যাটারি।"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে), বাঁদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ডানদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ব্যাটারি।"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)। বাঁদিক: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)। ডানদিকে: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ব্যাটারি।"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"কানেক্ট করা আছে (অডিও শেয়ারিংয়ে কাজ করে)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"চালু আছে (শুধুমাত্র মিডিয়া)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"অডিও শেয়ারিংয়ে কাজ করে"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"চালু আছে (শুধুমাত্র মিডিয়া), শুধুমাত্র বাঁদিক"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"চালু আছে (শুধুমাত্র মিডিয়া), শুধুমাত্র ডানদিক"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"চালু আছে (শুধুমাত্র মিডিয়া), বাঁদিক ও ডানদিক"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"হার্ডওয়্যার দ্বারা চালিত রেন্ডারিং"</string>
     <string name="media_category" msgid="8122076702526144053">"মিডিয়া"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"পর্যবেক্ষণে রাখা"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"স্ট্রিক্ট মোড চালু আছে"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"মুখ্য থ্রেডে অ্যাপগুলির দীর্ঘ কার্যকলাপের ক্ষেত্রে স্ক্রিন ফ্ল্যাশ করে"</string>
     <string name="pointer_location" msgid="7516929526199520173">"পয়েন্টারের লোকেশন"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"ওয়েবভিউ প্রয়োগ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ওয়েবভিউ প্রয়োগ সেট করুন"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"এই পছন্দটি আর বৈধ নেই৷ আবার চেষ্টা করুন৷"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ছবি রঙ মোড"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ব্যবহার করুন"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"অক্ষম হয়েছে"</string>
diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml
index 44bbfaf..f8fc6ac 100644
--- a/packages/SettingsLib/res/values-bs/arrays.xml
+++ b/packages/SettingsLib/res/values-bs/arrays.xml
@@ -291,14 +291,14 @@
   <string-array name="shade_display_awareness_entries">
     <item msgid="816770658383209617">"Samo zaslon uređaja (zadano)"</item>
     <item msgid="9161645858025071955">"Vanjski ekran"</item>
-    <item msgid="23651860565814477">"Najnoviji dodir trake statusa"</item>
-    <item msgid="7521112827893653392">"Na temelju fokusa"</item>
+    <item msgid="23651860565814477">"Posljednji dodir na statusnu traku"</item>
+    <item msgid="7521112827893653392">"Na osnovu fokusa"</item>
   </string-array>
   <string-array name="shade_display_awareness_summaries">
     <item msgid="2964753205732912921">"Prikaži sjenu samo na ekranu uređaja"</item>
-    <item msgid="1955398604822147783">"Prikaži sjenčanje na jednom vanjskom zaslonu"</item>
-    <item msgid="391477482416751568">"Prikaži sjenčanje na zaslonu na kojem je posljednje stupljeno u interakciju s trakom statusa"</item>
-    <item msgid="1746820128097981528">"Prikaži sjenčanje na posljednjem fokusiranom zaslonu"</item>
+    <item msgid="1955398604822147783">"Prikaži sjenu na jednom vanjskom ekranu"</item>
+    <item msgid="391477482416751568">"Prikaži sjenu na posljednjem ekranu na kojem se stupalo u interakciju sa statusnom trakom"</item>
+    <item msgid="1746820128097981528">"Prikaži sjenu na posljednjem fokusiranom ekranu"</item>
   </string-array>
   <string-array name="shade_display_awareness_values">
     <item msgid="3055776101992426514">"default_display"</item>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 756a326..abb0775 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspjelo"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo za medijski sadržaj). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo za medijski sadržaj). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava dijeljenje zvuka). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava dijeljenje zvuka). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava dijeljenje zvuka). Lijevo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava dijeljenje zvuka). Desno: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava dijeljenje zvuka)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo za medijski sadržaj)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava dijeljenje zvuka"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo za medijski sadržaj), samo lijevo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo za medijski sadržaj), samo desno"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo za medijski sadržaj), lijevo i desno"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano prikazivanje"</string>
     <string name="media_category" msgid="8122076702526144053">"Mediji"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Praćenje"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Omogući strogi način rada"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ekran bljeska kada aplikacije vrše duge operacije u glavnoj niti"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Postavljanje WebViewa"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Podesi WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ovaj izbor više ne vrijedi. Pokušajte ponovo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Način rada boja slika"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Koristi sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno"</string>
diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml
index f19551c..8f1f630 100644
--- a/packages/SettingsLib/res/values-ca/arrays.xml
+++ b/packages/SettingsLib/res/values-ca/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Només a la pantalla del dispositiu (opció predeterminada)"</item>
+    <item msgid="9161645858025071955">"Pantalla externa"</item>
+    <item msgid="23651860565814477">"Darrer toc a la barra d\'estat"</item>
+    <item msgid="7521112827893653392">"Basat en l\'enfocament"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Mostra l\'ombra només a la pantalla del dispositiu"</item>
+    <item msgid="1955398604822147783">"Mostra l\'àrea en una sola pantalla externa"</item>
+    <item msgid="391477482416751568">"Mostra l\'àrea a la pantalla amb què s\'ha interaccionat per darrera vegada a la barra d\'estat"</item>
+    <item msgid="1746820128097981528">"Mostra l\'àrea a la darrera pantalla en què s\'hagi posat el focus"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 0548099..ed49307c 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No s\'ha pogut actualitzar l\'entorn"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actiu (només contingut multimèdia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actiu (només contingut multimèdia), E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connectat (admet compartició d\'àudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connectat (admet compartició d\'àudio), E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connectat (admet compartició d\'àudio). Esquerre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connectat (admet compartició d\'àudio). Dret: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connectat (admet compartició d\'àudio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actiu (només contingut multimèdia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Admet compartició d\'àudio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actiu (només contingut multimèdia), només esquerre"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actiu (només contingut multimèdia), només dret"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actiu (només contingut multimèdia), esquerre i dret"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderització accelerada per maquinari"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimèdia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisió"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Mode estricte activat"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Il·lumina la pantalla quan les aplicacions facin operacions llargues al fil principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Ubicació del punter"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementació de WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Estableix implementació de WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Aquesta opció ja no és vàlida. Torna-ho a provar."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mode de color de la imatge"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Utilitza sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desactivat"</string>
diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml
index ad1cafd..152cd83 100644
--- a/packages/SettingsLib/res/values-cs/arrays.xml
+++ b/packages/SettingsLib/res/values-cs/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Pouze zobrazení zařízení (výchozí)"</item>
+    <item msgid="9161645858025071955">"Externí displej"</item>
+    <item msgid="23651860565814477">"Poslední dotknutí se stavového řádku"</item>
+    <item msgid="7521112827893653392">"Výběr"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Zobrazovat panel pouze na displeji zařízení"</item>
+    <item msgid="1955398604822147783">"Zobrazovat panel na jednom externím displeji"</item>
+    <item msgid="391477482416751568">"Zobrazovat panel na displeji, na kterém uživatel naposledy interagoval se stavovým řádkem"</item>
+    <item msgid="1746820128097981528">"Zobrazovat panel na displeji, který byl naposledy vybrán"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index a774a1d..7ea6e43 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolí se nepodařilo aktualizovat"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivní (pouze média). Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivní (pouze média), baterie: L <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Připojeno (podporuje sdílení zvuku), baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Připojeno (podporuje sdílení zvuku), baterie: L <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Připojeno (podporuje sdílení zvuku). Levá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Připojeno (podporuje sdílení zvuku). Pravá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Připojeno (podporuje sdílení zvuku)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivní (pouze média)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podporuje sdílení zvuku"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivní (pouze média), pouze levé"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivní (pouze média), pouze pravé"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivní (pouze média), levé a pravé"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardwarově urychlené vykreslování"</string>
     <string name="media_category" msgid="8122076702526144053">"Média"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Sledování"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Přísný režim aktivován"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Rozblikat obrazovku při dlouhých operacích hlavního vlákna"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Umístění ukazatele"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementace WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastavte implementaci WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Tato volba již není platná. Zkuste to znovu."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Režim barev obrázku"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Použije se barevný prostor sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Vypnuto"</string>
diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml
index ed45775..aff59c2 100644
--- a/packages/SettingsLib/res/values-da/arrays.xml
+++ b/packages/SettingsLib/res/values-da/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Kun på enhedens skærm (standard)"</item>
+    <item msgid="9161645858025071955">"Ekstern skærm"</item>
+    <item msgid="23651860565814477">"Seneste tryk på statusbjælken"</item>
+    <item msgid="7521112827893653392">"Fokusbaseret"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Vis kun skygge på enhedens skærm"</item>
+    <item msgid="1955398604822147783">"Vis skygge på en enkelt ekstern skærm"</item>
+    <item msgid="391477482416751568">"Vis skygge på den skærm, hvor der sidst blev interageret med statusbjælken"</item>
+    <item msgid="1746820128097981528">"Vis skygge på den skærm, der sidst var i fokus"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index d7aa9b1..4aad2a2 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Omgivelserne kunne ikke opdateres"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiveret (kun for medier). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiveret (kun for medier), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Forbundet (understøtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Forbundet (understøtter lyddeling), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Forbundet (understøtter lyddeling). Venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Forbundet (understøtter lyddeling). Højre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Forbundet (understøtter lyddeling)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiveret (kun for medier)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Understøtter lyddeling"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiveret (kun for medier), kun venstre"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiveret (kun for medier), kun højre"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiveret (kun for medier), venstre og højre"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware-accelereret gengivelse"</string>
     <string name="media_category" msgid="8122076702526144053">"Medie"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Overvågning"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Striks tilstand aktiveret"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Blink med skærmen, når apps foretager handlinger på hovedtråd"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Markørens lokation"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Konfigurer WebView-implementering"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Dette valg er ikke længere gyldigt. Prøv igen."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Farvetilstand for billeder"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Brug sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiveret"</string>
diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml
index 924718a..6dc8754 100644
--- a/packages/SettingsLib/res/values-de/arrays.xml
+++ b/packages/SettingsLib/res/values-de/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Nur Gerätedisplay (Standard)"</item>
+    <item msgid="9161645858025071955">"Externes Display"</item>
+    <item msgid="23651860565814477">"Letzte Berührung der Statusleiste"</item>
+    <item msgid="7521112827893653392">"Fokusbasiert"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Leiste nur auf dem Display des Geräts anzeigen"</item>
+    <item msgid="1955398604822147783">"Leiste auf einem einzigen externen Display anzeigen"</item>
+    <item msgid="391477482416751568">"Leiste auf dem Display anzeigen, auf dem zuletzt mit der Statusleiste interagiert wurde"</item>
+    <item msgid="1746820128097981528">"Leiste auf dem zuletzt fokussierten Display anzeigen"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 73268c5..55cae96 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Status der Umgebungsgeräusche konnte nicht aktualisiert werden"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (nur Medien). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (nur Medien). Akku links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Akku rechts: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Verbunden (unterstützt Audiofreigabe). Akku: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Verbunden (unterstützt Audiofreigabe). Akku links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Akku rechts: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Verbunden (unterstützt Audiofreigabe). Akku links: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Verbunden (unterstützt Audiofreigabe). Akku rechts: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Verbunden (unterstützt Audiofreigabe)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (nur Medien)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Unterstützt Audiofreigabe"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (nur Medien), nur links"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (nur Medien), nur rechts"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (nur Medien), links und rechts"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardwarebeschleunigtes Rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Medien"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strikter Modus aktiviert"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Bei langen App-Vorgängen im Hauptthread blinkt Bildschirm"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Zeigerposition"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-Implementierung"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-Implementierung festlegen"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Diese Auswahl ist nicht mehr gültig. Bitte versuche es noch einmal."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Farbmodus für Bilder"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB verwenden"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Deaktiviert"</string>
diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml
index 41aefc0..33e2390 100644
--- a/packages/SettingsLib/res/values-el/arrays.xml
+++ b/packages/SettingsLib/res/values-el/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Μόνο οθόνη συσκευής (Προεπιλογή)"</item>
+    <item msgid="9161645858025071955">"Εξωτερική οθόνη"</item>
+    <item msgid="23651860565814477">"Τελευταίο άγγιγμα της γραμμής κατάστασης"</item>
+    <item msgid="7521112827893653392">"Με εστίαση"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Εμφάνιση σκίασης μόνο στην οθόνη συσκευής"</item>
+    <item msgid="1955398604822147783">"Εμφάνιση σκίασης σε εξωτερική οθόνη"</item>
+    <item msgid="391477482416751568">"Εμφάνιση σκίασης στην οθόνη στην οποία έγινε η τελευταία αλληλεπίδραση με τη γραμμή κατάστασης"</item>
+    <item msgid="1746820128097981528">"Εμφάνιση σκίασης στην τελευταία οθόνη με εστίαση"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 209b782..6b6b7fb 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Δεν ήταν δυνατή η ενημέρωση των ήχων περιβάλλοντος"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ενεργό (μόνο για μέσα). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ενεργό (μόνο για μέσα). Α: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Δ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> μπαταρία."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Α: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Δ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> μπαταρία."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Αριστερά: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου). Δεξιά: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Συνδεδεμένο (υποστηρίζει κοινή χρήση ήχου)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ενεργό (μόνο για μέσα)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Υποστηρίζει κοινή χρήση ήχου"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ενεργό (μόνο για μέσα), μόνο αριστερό"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ενεργό (μόνο για μέσα), μόνο δεξί"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ενεργό (μόνο για μέσα), αριστερό και δεξί"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Απόδοση με επιτάχυνση από υλικό εξοπλισμό"</string>
     <string name="media_category" msgid="8122076702526144053">"Μέσα"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Παρακολούθηση"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Ενεργ. αυστηρής λειτουργ."</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Αναβ. οθόνη σε εκτέλεση μεγάλων λειτ.σε κύριο νήμα"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Θέση δείκτη"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Υλοποίηση WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ορισμός υλοποίησης WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Αυτή η επιλογή δεν είναι πια έγκυρη. Δοκιμάστε ξανά."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Λειτουργία χρώματος εικόνας"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Χρήση sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Απενεργοποιημένο"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml
index 6c7a7ff..b53ad98 100644
--- a/packages/SettingsLib/res/values-en-rAU/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Device display only (default)"</item>
+    <item msgid="9161645858025071955">"External display"</item>
+    <item msgid="23651860565814477">"Latest status bar touch"</item>
+    <item msgid="7521112827893653392">"Focus-based"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Show shade on device display only"</item>
+    <item msgid="1955398604822147783">"Show shade on single external display"</item>
+    <item msgid="391477482416751568">"Show shade on display which last had its status bar interacted with"</item>
+    <item msgid="1746820128097981528">"Show shade on last focused display"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index d965c65..a811960 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Couldn\'t update surroundings"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 748d7b1..a12b46c 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -113,13 +113,23 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Couldn’t update surroundings"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Guest device. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Guest device. L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Guest device (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Guest device (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
+    <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Guest device (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Guest device (supports audio sharing). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <string name="bluetooth_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Guest device (supports audio sharing)"</string>
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
+    <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Guest device"</string>
+    <string name="bluetooth_guest_media_only_no_battery_level" msgid="7666347601796705721">"Guest device (media only)"</string>
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
+    <string name="bluetooth_guest_saved_device_lea_support" msgid="5621291599518569876">"Guest device. Supports audio sharing"</string>
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -376,6 +386,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -470,6 +482,9 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
+    <string name="webview_launch_devtools_title" msgid="8009687433555367112">"WebView DevTools"</string>
+    <string name="webview_launch_devtools_no_package" msgid="3182544553665113721">"WebView package not found."</string>
+    <string name="webview_launch_devtools_no_activity" msgid="4066006313619617140">"Could not launch DevTools."</string>
     <string name="picture_color_mode" msgid="1013807330552931903">"Picture color mode"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml
index 6c7a7ff..b53ad98 100644
--- a/packages/SettingsLib/res/values-en-rGB/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Device display only (default)"</item>
+    <item msgid="9161645858025071955">"External display"</item>
+    <item msgid="23651860565814477">"Latest status bar touch"</item>
+    <item msgid="7521112827893653392">"Focus-based"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Show shade on device display only"</item>
+    <item msgid="1955398604822147783">"Show shade on single external display"</item>
+    <item msgid="391477482416751568">"Show shade on display which last had its status bar interacted with"</item>
+    <item msgid="1746820128097981528">"Show shade on last focused display"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index d965c65..a811960 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Couldn\'t update surroundings"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml
index 6c7a7ff..b53ad98 100644
--- a/packages/SettingsLib/res/values-en-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Device display only (default)"</item>
+    <item msgid="9161645858025071955">"External display"</item>
+    <item msgid="23651860565814477">"Latest status bar touch"</item>
+    <item msgid="7521112827893653392">"Focus-based"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Show shade on device display only"</item>
+    <item msgid="1955398604822147783">"Show shade on single external display"</item>
+    <item msgid="391477482416751568">"Show shade on display which last had its status bar interacted with"</item>
+    <item msgid="1746820128097981528">"Show shade on last focused display"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index d965c65..a811960 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Couldn\'t update surroundings"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Active (media only). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Active (media only). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connected (supports audio sharing). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connected (supports audio sharing). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connected (supports audio sharing). Left: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connected (supports audio sharing). Right: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connected (supports audio sharing)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Active (media only)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supports audio sharing"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Active (media only), left only"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Active (media only), right only"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Active (media only), left and right"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware accelerated rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strict mode enabled"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Flash screen when apps do long operations on main thread"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pointer location"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Set WebView implementation"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"This choice is no longer valid. Try again."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Picture colour mode"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Use sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disabled"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml
index 5894975..2f1b14d 100644
--- a/packages/SettingsLib/res/values-es-rUS/arrays.xml
+++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Solo en la pantalla del dispositivo (predeterminado)"</item>
+    <item msgid="9161645858025071955">"Pantalla externa"</item>
+    <item msgid="23651860565814477">"Última interacción con la barra de estado"</item>
+    <item msgid="7521112827893653392">"Basado en el enfoque"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Mostrar sobra solo en la pantalla del dispositivo"</item>
+    <item msgid="1955398604822147783">"Mostrar panel en una sola pantalla externa"</item>
+    <item msgid="391477482416751568">"Mostrar el panel de la última pantalla en la que se interactuó con su barra de estado"</item>
+    <item msgid="1746820128097981528">"Mostrar el panel en la última pantalla enfocada"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index acd6790..6c3c98a 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No se pudo actualizar el sonido envolvente"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activado (solo para contenido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (solo para contenido multimedia); I: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (admite el uso compartido de audio); <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (admite el uso compartido de audio); I: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (admite el uso compartido de audio). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (admite el uso compartido de audio). Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (admite el uso compartido de audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (solo para contenido multimedia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Admite el uso compartido de audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (solo para contenido multimedia); solo izquierdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (solo para contenido multimedia); solo derecho"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (solo para contenido multimedia); izquierdo y derecho"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderización acelerada por hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo estricto"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Parpadear si aplicaciones tardan en proceso principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar la implementación de WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción ya no es válida. Vuelve a intentarlo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de color de la imagen"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Usa sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inhabilitado"</string>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
index 1e8c661..9031cc3 100644
--- a/packages/SettingsLib/res/values-es/arrays.xml
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Solo en la pantalla del dispositivo (predeterminado)"</item>
+    <item msgid="9161645858025071955">"Pantalla externa"</item>
+    <item msgid="23651860565814477">"Toque más reciente en la barra de estado"</item>
+    <item msgid="7521112827893653392">"Basado en el enfoque"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Mostrar el panel solo en la pantalla del dispositivo"</item>
+    <item msgid="1955398604822147783">"Mostrar el panel en una sola pantalla externa"</item>
+    <item msgid="391477482416751568">"Mostrar el panel en la pantalla en la que se haya interactuado por última vez con la barra de estado"</item>
+    <item msgid="1746820128097981528">"Mostrar el panel en la última pantalla enfocada"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 00b987c..b91c9b4 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"No se han podido actualizar los alrededores"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activo (solo multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (solo multimedia). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (permite compartir audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (admite Compartir audio). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (admite Compartir audio). Izquierdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (admite Compartir audio). Derecho: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (admite Compartir audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (solo multimedia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Permite compartir audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (solo multimedia), solo el izquierdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (solo multimedia), solo el derecho"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (solo multimedia), izquierdo y derecho"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderización acelerada por hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo Estricto habilitado"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Hace parpadear la pantalla si las aplicaciones tardan mucho en el subproceso principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Establecer implementación de WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción ya no está disponible. Vuelve a intentarlo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de color de imagen"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliza sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inhabilitado"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index b442ed3..8c5d7fe 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ümbritsevate helide seadeid ei saanud värskendada"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiivne (ainult meedia). Aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiivne (ainult meedia). Aku: V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ühendatud (toetab heli jagamist). Aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ühendatud (toetab heli jagamist). Aku: V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Ühendatud (toetab heli jagamist). Vasak: aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ühendatud (toetab heli jagamist). Parem: aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ühendatud (toetab heli jagamist)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiivne (ainult meedia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Toetab heli jagamist"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiivne (ainult meedia), ainult vasak"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiivne (ainult meedia), ainult parem"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiivne (ainult meedia), vasak ja parem"</string>
@@ -129,7 +149,7 @@
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Sisendseade"</string>
     <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Juurdepääs internetile"</string>
     <string name="bluetooth_profile_pbap" msgid="2103406516858653017">"Luba juurdepääs kontaktidele ja kõneajale"</string>
-    <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"Teavet kasutatakse kõne teadaannete ja muu jaoks"</string>
+    <string name="bluetooth_profile_pbap_summary" msgid="402819589201138227">"Teavet kasutatakse kõne teadaannete ja muu jaoks."</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneti-ühenduse jagamine"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tekstsõnumid"</string>
     <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Juurdepääs SIM-ile"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Riistvarakiirendusega renderdamine"</string>
     <string name="media_category" msgid="8122076702526144053">"Meedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Jälgimine"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Range režiim on lubatud"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ekraan vilgub, kui rakendused teevad pealõimes pikki toiminguid"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Kursori asukoht"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView\' rakendamine"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView\' rakendamise seadistamine"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"See valik ei kehti enam. Proovige uuesti."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Pildi värvirežiim"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB kasutamine"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Keelatud"</string>
diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml
index a1528c2..616b12f 100644
--- a/packages/SettingsLib/res/values-eu/arrays.xml
+++ b/packages/SettingsLib/res/values-eu/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Gailuaren pantailan soilik (lehenetsia)"</item>
+    <item msgid="9161645858025071955">"Kanpoko pantailan"</item>
+    <item msgid="23651860565814477">"Egoera-barraren azken ukitzea"</item>
+    <item msgid="7521112827893653392">"Fokuaren arabera"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Erakutsi itzalak gailuaren pantailan soilik"</item>
+    <item msgid="1955398604822147783">"Erakutsi itzala kanpoko pantaila bakar batean"</item>
+    <item msgid="391477482416751568">"Erakutsi itzala egoera-barran interakzio bat izan duen azken pantailan"</item>
+    <item msgid="1746820128097981528">"Erakutsi itzala fokuratutako azken pantailan"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 1c422b6..a1e4664 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ezin izan da eguneratu ingurunea"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktibo (multimedia-edukia soilik). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktibo (multimedia-edukia soilik). L aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. R aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Konektatuta (audioa partekatzeko eginbidea onartzen du). L aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. R aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Ezkerreko aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Konektatuta (audioa partekatzeko eginbidea onartzen du). Eskuineko aldearen bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Konektatuta (audioa partekatzeko eginbidea onartzen du)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktibo (multimedia-edukia soilik)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audioa partekatzeko eginbidea onartzen du"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktibo (multimedia-edukia soilik); ezkerreko aldea soilik"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktibo (multimedia-edukia soilik); eskuineko aldea soilik"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktibo (multimedia-edukia soilik); ezkerreko eta eskuineko aldeak"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware bidez azeleratutako errendatzea"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia-edukia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Kontrola"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modu zorrotza gaituta"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Distirarazi hari nagusian eragiketa luzeak egitean"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Erakuslearen kokapena"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView inplementazioa"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ezarri WebView inplementazioa"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Jada ez dago erabilgarri aukera hori. Saiatu berriro."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Irudiaren kolore modua"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Erabili sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desgaituta"</string>
diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml
index d7face8..8421726 100644
--- a/packages/SettingsLib/res/values-fa/arrays.xml
+++ b/packages/SettingsLib/res/values-fa/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"۲"</item>
     <item msgid="4779928470672877922">"۳"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"فقط نمایشگر دستگاه (پیش‌فرض)"</item>
+    <item msgid="9161645858025071955">"نمایشگر خارجی"</item>
+    <item msgid="23651860565814477">"آخرین لمس نوار وضعیت"</item>
+    <item msgid="7521112827893653392">"کانونی‌محور"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"نمایش سایه فقط در نمایشگر دستگاه"</item>
+    <item msgid="1955398604822147783">"نمایش سایه در یک نمایشگر خارجی"</item>
+    <item msgid="391477482416751568">"نمایش سایه در نمایشگری که کاربر آخرین بار با نوار وضعیت آن تعامل داشته است"</item>
+    <item msgid="1746820128097981528">"نمایش سایه در آخرین نمایشگر کانونی‌شده"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"نمایشگر_پیش‌فرض"</item>
+    <item msgid="774789415968826925">"هر_نمایشگر_خارجی"</item>
+    <item msgid="7880769915418638436">"آخرین_لمس_نوار_وضعیت"</item>
+    <item msgid="4313165186636015195">"نمایشگر_کانونی‌شده"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index b1f76fb..c939180 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"پیرامون به‌روز نشد"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"فعال (فقط رسانه). باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"فعال (فقط رسانه). باتری چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، باتری راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"متصل (از اشتراک صدا پشتیبانی می‌کند)، باتری: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"متصل (از اشتراک صدا پشتیبانی می‌کند)، باتری چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، باتری راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"متصل (از اشتراک صدا پشتیبانی می‌کند). باتری چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"متصل (از اشتراک صدا پشتیبانی می‌کند). باتری راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"متصل (از اشتراک صدا پشتیبانی می‌کند)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"فعال (فقط رسانه)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"از اشتراک صدا پشتیبانی می‌کند"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"فعال (فقط رسانه)، فقط چپ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"فعال (فقط رسانه)، فقط راست"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"فعال (فقط رسانه)، چپ و راست"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"پردازش سخت‌افزاری سریع"</string>
     <string name="media_category" msgid="8122076702526144053">"رسانه"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"نظارت"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"حالت شدید فعال شد"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"چشمک زدن صفحه هنگام انجام عملیات طولانی توسط برنامه‌ها در رشته اصلی"</string>
     <string name="pointer_location" msgid="7516929526199520173">"محل اشاره‌گر"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"اجرای وب‌نما"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"تنظیم اجرای وب‌نما"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"این انتخاب دیگر معتبر نیست. دوباره امتحان کنید."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"حالت رنگ عکس"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"‏استفاده از sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"غیر فعال"</string>
diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml
index a10dfbe..9779c6a 100644
--- a/packages/SettingsLib/res/values-fi/arrays.xml
+++ b/packages/SettingsLib/res/values-fi/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Vain laitteen näyttö (oletus)"</item>
+    <item msgid="9161645858025071955">"Ulkoinen näyttö"</item>
+    <item msgid="23651860565814477">"Viimeisin tilapalkin kosketus"</item>
+    <item msgid="7521112827893653392">"Kohdistusperustainen"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Näytä ilmoitusalue vain laitteen näytöllä"</item>
+    <item msgid="1955398604822147783">"Näytä ilmoitusalue yhdellä ulkoisella näytöllä"</item>
+    <item msgid="391477482416751568">"Näytä ilmoitusalue näytöllä, jolla tilapalkkiin on viimeksi reagoitu"</item>
+    <item msgid="1746820128097981528">"Näytä ilmoitusalue viimeksi kohdistetulla näytöllä"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index b59aa30..d222882 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ympäristön päivittäminen epäonnistui"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiivinen (vain media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiivinen (vain media). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, O: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> virtaa."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Yhdistetty (tukee audionjakoa). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Yhdistetty (tukee audionjakoa). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> virtaa, O: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> virtaa."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Yhdistetty (tukee audionjakoa). Vasen: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Yhdistetty (tukee audionjakoa). Oikea: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> virtaa."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Yhdistetty (tukee audionjakoa)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiivinen (vain media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Tukee audionjakoa"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiivinen (vain media), vain vasen"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiivinen (vain media), vain oikea"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiivinen (vain media), vasen ja oikea"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Laitteistokiihdytetty hahmonnus"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Valvonta"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Tiukka tila käytössä"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Vilkuta näyttöä sovellusten tehdessä pitkiä toimia"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Osoittimen sijainti"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-käyttöönotto"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Määritä WebView-käyttöönotto"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Tämä valinta ei ole enää saatavilla. Yritä uudestaan."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Kuvien värit"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Ota sRGB käyttöön"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Poistettu käytöstä"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
index 9eec65d..f5be655 100644
--- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Écran de l\'appareil seulement (par défaut)"</item>
+    <item msgid="9161645858025071955">"Écran externe"</item>
+    <item msgid="23651860565814477">"Dernière barre d\'état tactile"</item>
+    <item msgid="7521112827893653392">"Affichage mis en évidence"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Afficher le volet sur l\'écran de l\'appareil seulement"</item>
+    <item msgid="1955398604822147783">"Afficher le volet sur un seul écran externe"</item>
+    <item msgid="391477482416751568">"Afficher le volet sur l\'écran avec lequel la barre d\'état a interagi en dernier"</item>
+    <item msgid="1746820128097981528">"Afficher le volet sur le dernier affichage mis en évidence"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 99ba8b0..b03e6cb 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossible de mettre à jour les sons de l\'environnement"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actif (contenu multimédia uniquement). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actif (contenu multimédia uniquement). G. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connecté (prise en charge du partage audio). Pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connecté (prise en charge du partage audio). G. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D. : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connecté (prise en charge du partage audio). Gauche : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connecté (prise en charge du partage audio). Droite : pile à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connecté (prise en charge du partage audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actif (contenu multimédia uniquement)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Prise en charge du partage audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actif (contenu multimédia uniquement), côté gauche seulement"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actif (contenu multimédia uniquement), côté droit seulement"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actif (contenu multimédia uniquement), côtés gauche et droit"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Accélération matérielle"</string>
     <string name="media_category" msgid="8122076702526144053">"Médias"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Surveillance"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Mode Strict activé"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Afficher un cadre rouge si le fil principal reste occupé"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Emplacement du curseur"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Mise en œuvre WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Définir la mise en œuvre WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ce choix n\'est plus valide. Réessayez."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mode couleur des images"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliser sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Désactivé"</string>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index 3787509..3cf68b2 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Écran de l\'appareil uniquement (par défaut)"</item>
+    <item msgid="9161645858025071955">"Écran externe"</item>
+    <item msgid="23651860565814477">"Dernière interaction avec la barre d\'état"</item>
+    <item msgid="7521112827893653392">"Basé sur la sélection"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Afficher le volet sur l\'écran de l\'appareil uniquement"</item>
+    <item msgid="1955398604822147783">"Afficher le volet sur un seul écran externe"</item>
+    <item msgid="391477482416751568">"Afficher le volet sur l\'écran avec lequel la barre d\'état a été utilisée en dernier lieu"</item>
+    <item msgid="1746820128097981528">"Afficher le volet sur le dernier écran avec lequel l\'utilisateur a interagi"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index ba77d87..4440126 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossible de mettre à jour le mode Sons environnants"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actif (multimédia uniquement). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actif (multimédia uniquement). Gauche : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batterie, droit : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batterie."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connecté (compatible avec le partage audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connecté (compatible avec le partage audio). Gauche : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batterie, droit : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batterie."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connecté (compatible avec le partage audio). Gauche : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connecté (compatible avec le partage audio). Droit : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connecté (compatible avec le partage audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activé (multimédia uniquement)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Compatible avec le partage audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activé (multimédia uniquement), gauche uniquement"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activé (multimédia uniquement), droit uniquement"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activé (multimédia uniquement), gauche et droit"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendu accéléré par le matériel"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimédia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Suivi"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Mode Strict activé"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Faire clignoter l\'écran si le thread principal reste occupé"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Emplacement du curseur"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implémentation WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Définir la mise en œuvre WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ce choix n\'est plus valide. Réessayez."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mode de couleur des images"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliser sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Désactivé"</string>
diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml
index 9307ba7..76441f9 100644
--- a/packages/SettingsLib/res/values-gl/arrays.xml
+++ b/packages/SettingsLib/res/values-gl/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Só pantalla do dispositivo (opción predeterminada)"</item>
+    <item msgid="9161645858025071955">"Pantalla externa"</item>
+    <item msgid="23651860565814477">"Último toque na barra de estado"</item>
+    <item msgid="7521112827893653392">"En función do enfoque"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Mostrar panel despregable só na pantalla do dispositivo"</item>
+    <item msgid="1955398604822147783">"Mostrar panel despregable nunha única pantalla externa"</item>
+    <item msgid="391477482416751568">"Mostrar panel despregable na pantalla na que tivo lugar a última interacción coa barra de estado"</item>
+    <item msgid="1746820128097981528">"Mostrar panel despregable na última pantalla enfocada"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"pantalla_predeterminada"</item>
+    <item msgid="774789415968826925">"calquera_pantalla_externa"</item>
+    <item msgid="7880769915418638436">"último_toque_barra_estado"</item>
+    <item msgid="4313165186636015195">"pantalla_enfocada"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 3d5a9bd..536b918 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Non se puido actualizar o ambiente"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activo (só contido multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activo (só contido multimedia). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (compatible con audio compartido). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (compatible con audio compartido). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (compatible con audio compartido). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (compatible con audio compartido). Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (compatible con audio compartido)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activo (só contido multimedia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Compatible con audio compartido"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activo (só contido multimedia), só esquerdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activo (só contido multimedia), só dereito"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activo (só contido multimedia), esquerdo e dereito"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Procesamento acelerado mediante hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo estrito activado"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"A pantalla ilumínase se as aplicacións tardan moito no proceso principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Localización do punteiro"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Definir implementación de WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción xa non é válida. Téntao de novo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imaxe"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Utiliza sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desactivado"</string>
diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml
index 6026663b..8d9ef2b 100644
--- a/packages/SettingsLib/res/values-gu/arrays.xml
+++ b/packages/SettingsLib/res/values-gu/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"માત્ર ડિવાઇસનું ડિસ્પ્લે (ડિફૉલ્ટ)"</item>
+    <item msgid="9161645858025071955">"બાહ્ય ડિસ્પ્લે"</item>
+    <item msgid="23651860565814477">"નવીનતમ સ્ટેટસ બાર ટચ"</item>
+    <item msgid="7521112827893653392">"ફોકસ-આધારિત"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"માત્ર ડિવાઇસના ડિસ્પ્લે પર શેડ બતાવો"</item>
+    <item msgid="1955398604822147783">"માત્ર એક જ બાહ્ય ડિસ્પ્લે પર શેડ બતાવો"</item>
+    <item msgid="391477482416751568">"તે ડિસ્પ્લે પર શેડ બતાવો જેની સાથે તેના સ્ટેટસ બારે છેલ્લે ક્રિયાપ્રતિક્રિયા કરી હતી"</item>
+    <item msgid="1746820128097981528">"છેલ્લે ફોકસ કરેલા ડિસ્પ્લે પર શેડ બતાવો"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 57ecad8..1b4bad3 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"આસપાસના અવાજો અપડેટ કરી શક્યા નથી"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"સક્રિય (માત્ર મીડિયા માટે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"સક્રિય (માત્ર મીડિયા માટે). ડાબી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, જમણી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> બૅટરી."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). ડાબી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, જમણી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> બૅટરી."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). ડાબી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે). જમણી બાજુ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"કનેક્ટેડ (ઑડિયો શેરિંગને સપોર્ટ કરે છે)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"સક્રિય છે (માત્ર મીડિયા માટે)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ઑડિયો શેરિંગને સપોર્ટ કરે છે"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"સક્રિય છે (માત્ર મીડિયા માટે), માત્ર ડાબી બાજુ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"સક્રિય છે (માત્ર મીડિયા માટે), માત્ર જમણી બાજુ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"સક્રિય છે (માત્ર મીડિયા માટે), ડાબી અને જમણી બાજુ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"હાર્ડવેર પ્રવેગક રેન્ડરિંગ"</string>
     <string name="media_category" msgid="8122076702526144053">"મીડિયા"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"નિરિક્ષણ કરી રહ્યું છે"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"સ્ટ્રિક્ટ મોડ ચાલુ કરેલો છે"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"જ્યારે મુખ્ય થ્રેડ પર ઍપ લાંબી કામગીરીઓ કરે ત્યારે સ્ક્રીનને ફ્લેશ કરો"</string>
     <string name="pointer_location" msgid="7516929526199520173">"પૉઇન્ટર લોકેશન"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView અમલીકરણ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView અમલીકરણ સેટ કરો"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"આ વિકલ્પ હવે માન્ય નથી. ફરી પ્રયાસ કરો."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ચિત્ર રંગ મોડ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB નો ઉપયોગ કરો"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"બંધ"</string>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index 67de2ae..9c138d2 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"सिर्फ़ डिवाइस का डिसप्ले (डिफ़ॉल्ट)"</item>
+    <item msgid="9161645858025071955">"बाहरी डिसप्ले पर"</item>
+    <item msgid="23651860565814477">"हाल ही में स्टेटस बार को टच किया गया"</item>
+    <item msgid="7521112827893653392">"फ़ोकस के हिसाब से"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"सिर्फ़ डिवाइस के डिसप्ले पर शेड दिखाएं"</item>
+    <item msgid="1955398604822147783">"किसी एक बाहरी डिसप्ले पर शेड दिखाएं"</item>
+    <item msgid="391477482416751568">"उस डिसप्ले पर शेड दिखाएं जिसकी स्टेटस बार के साथ पिछली बार इंटरैक्शन किया गया था"</item>
+    <item msgid="1746820128097981528">"उस डिसप्ले पर शेड दिखाएं जिस पर आखिरी बार फ़ोकस किया गया था"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index c1f4fe2..55d425f 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"वॉल्यूम को मैनेज करने की सेटिंग नहीं बदली जा सकी"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"चालू है (सिर्फ़ मीडिया के लिए). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"चालू है (सिर्फ़ मीडिया के लिए). बायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बैटरी."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). बायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बैटरी."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). बायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट हो गया (ऑडियो शेयर करने की सुविधा काम करती है). दायां हेडसेट: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट है (ऑडियो शेयर करने की सुविधा काम करती है)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"चालू है (सिर्फ़ मीडिया के लिए)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ऑडियो शेयर करने की सुविधा काम करती है"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"चालू है (सिर्फ़ मीडिया के लिए), सिर्फ़ बाएं कान की मशीन"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"चालू है (सिर्फ़ मीडिया के लिए), सिर्फ़ दाएं कान की मशीन"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"चालू है (सिर्फ़ मीडिया के लिए), बाएं और दाएं कान की मशीन"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयर ऐक्सेलरेटेड रेंडरिंग"</string>
     <string name="media_category" msgid="8122076702526144053">"मीडिया"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"निगरानी"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड चालू रखें"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"थ्रेड पर लंबा प्रोसेस होने पर स्‍क्रीन फ़्लैश करें"</string>
     <string name="pointer_location" msgid="7516929526199520173">"पॉइंटर की जगह"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"वेबव्यू लागू करें"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"वेबव्यू सेट करें"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"यह चुनाव अब मान्य नहीं है. दोबारा कोशिश करें."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"चित्र रंग मोड"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB का उपयोग करें"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"बंद"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 131195e..97f2df6 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ažuriranje okruženja nije uspjelo"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo medijski sadržaji). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo medijski sadržaji), L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podržava zajedničko slušanje). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podržava zajedničko slušanje), L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podržava zajedničko slušanje). Lijeva strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podržava zajedničko slušanje). Desna strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podržava zajedničko slušanje)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo medijski sadržaji)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podržava zajedničko slušanje"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo medijski sadržaji), samo lijeva"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo medijski sadržaji), samo desna"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo medijski sadržaji), lijeva i desna"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano renderiranje"</string>
     <string name="media_category" msgid="8122076702526144053">"Mediji"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Nadzor"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Omogućen strogi način"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Zaslon bljeska kada operacije aplikacija u glavnoj niti dugo traju"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Mjesto pokazivača"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacija WebViewa"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Postavi implementaciju WebViewa"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Taj izbor više nije važeći. Pokušajte ponovo."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Način boje slike"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Upotrijebi sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno"</string>
diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml
index d8d42f9..677b821 100644
--- a/packages/SettingsLib/res/values-hu/arrays.xml
+++ b/packages/SettingsLib/res/values-hu/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Csak az eszköz kijelzője (alapértelmezett)"</item>
+    <item msgid="9161645858025071955">"Külső kijelző"</item>
+    <item msgid="23651860565814477">"Az állapotsor legutóbbi érintése"</item>
+    <item msgid="7521112827893653392">"Fókusz alapján"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Felület megjelenítése csak az eszköz kijelzőjén"</item>
+    <item msgid="1955398604822147783">"Felület megjelenítése egyetlen külső kijelzőn"</item>
+    <item msgid="391477482416751568">"Felület megjelenítése azon a kijelzőn, amelyen utoljára végeztek műveletet az állapotsorral"</item>
+    <item msgid="1746820128097981528">"Felület megjelenítése az utoljára fókuszban lévő kijelzőn"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index fa32155..5e97cff 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nem sikerült módosítani a környezetet"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktív (csak médiatartalom lejátszása esetén). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktív (csak médiatartalom lejátszása esetén). Akkumulátorok töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (bal) és <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (jobb)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Csatlakoztatva (támogatja a hang megosztását). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Csatlakoztatva (támogatja a hang megosztását). Akkumulátorok töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (bal) és <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (jobb)."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Csatlakoztatva (támogatja a hang megosztását). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (bal)."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Csatlakoztatva (támogatja a hang megosztását). Akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (jobb)."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Csatlakoztatva (támogatja a hang megosztását)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktív (csak médiatartalom lejátszása)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Támogatja a hang megosztását"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktív (csak médiatartalom lejátszása), csak a bal"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktív (csak médiatartalom lejátszása), csak a jobb"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktív (csak médiatartalom lejátszása), bal és jobb"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardveres gyorsítású megjelenítés"</string>
     <string name="media_category" msgid="8122076702526144053">"Média"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Figyelés"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Szigorú mód engedélyezve"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Képernyővillogás a fő szál hosszú műveleteinél"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Mutató helye"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-megvalósítás"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-megvalósítás beállítása"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ez a választás már nem érvényes. Próbálkozzon újra."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Kép színe mód"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB használata"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Letiltva"</string>
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index b2133fb..f71d1fc 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Միայն սարքի էկրանը (կանխադրված)"</item>
+    <item msgid="9161645858025071955">"Արտաքին էկրան"</item>
+    <item msgid="23651860565814477">"Կարգավիճակի գոտու հետ վերջին փոխազդումը"</item>
+    <item msgid="7521112827893653392">"Ֆոկուսի հիման վրա"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Ցույց տալ երանգը միայն սարքի էկրանին"</item>
+    <item msgid="1955398604822147783">"Ցույց տալ երանգը մեկ արտաքին էկրանին"</item>
+    <item msgid="391477482416751568">"Ցույց տալ երանգն էկրանին, որի կարգավիճակի գոտու հետ վերջերս օգտատերը փոխազդել է"</item>
+    <item msgid="1746820128097981528">"Ցույց տալ երանգը վերջին ֆոկուսավորված էկրանին"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index fa87813..d342717 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Չհաջողվեց թարմացնել շրջակայքի կարգավիճակը"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ակտիվ է (միայն մեդիա)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ակտիվ է (միայն մեդիա)։ Ձախ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, աջ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>։"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Ձախ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, աջ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>։"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Ձախ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Միացված է (աջակցում է աուդիոյի փոխանցում)։ Աջ ականջակալի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>։"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Միացված է (աջակցում է աուդիոյի փոխանցում)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ակտիվ է (միայն մեդիա)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Աջակցում է աուդիոյի փոխանցում"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ակտիվ է (միայն մեդիա), միայն ձախ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ակտիվ է (միայն մեդիա), միայն աջ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ակտիվ է (միայն մեդիա), աջ և ձախ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Սարքաշարի արագացված նյութավորում"</string>
     <string name="media_category" msgid="8122076702526144053">"Մեդիա"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Մշտադիտարկում"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Խիստ ռեժիմն ակտիվացված է"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Լուսավորել էկրանը` ծրագրի գլխավոր շղթայի վրա երկար աշխատելիս"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Նշորդի տեղադրությունը"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ծառայություն"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ընտրեք WebView-ի իրականացումը"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Այս ընտրանքն այլևս վավեր չէ: Փորձեք նորից:"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Նկարի գունային ռեժիմ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Օգտագործել sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Կասեցված է"</string>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
index fa2fa9e..a4bb2f4 100644
--- a/packages/SettingsLib/res/values-in/arrays.xml
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Hanya layar perangkat (Default)"</item>
+    <item msgid="9161645858025071955">"Layar eksternal"</item>
+    <item msgid="23651860565814477">"Sentuhan status bar terbaru"</item>
+    <item msgid="7521112827893653392">"Berbasis fokus"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Tampilkan shade hanya di layar perangkat"</item>
+    <item msgid="1955398604822147783">"Tampilkan menu di satu layar eksternal"</item>
+    <item msgid="391477482416751568">"Tampilkan menu di layar yang terakhir kali berinteraksi dengan status bar-nya"</item>
+    <item msgid="1746820128097981528">"Tampilkan menu di layar yang terakhir difokuskan"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 1ff4b29..649ee0bb 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Tidak dapat memperbarui suara sekitar"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktif (hanya media). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktif (hanya media). Baterai L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Terhubung (mendukung berbagi audio). Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Terhubung (mendukung berbagi audio). Baterai L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Terhubung (mendukung berbagi audio). Kiri: Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Terhubung (mendukung berbagi audio). Kanan: Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Terhubung (mendukung berbagi audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktif (hanya media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Mendukung berbagi audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktif (hanya media), hanya kiri"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktif (hanya media), hanya kanan"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktif (hanya media), kiri dan kanan"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Render yang dipercepat hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Pemantauan"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Mode ketat diaktifkan"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Buat layar berkedip saat aplikasi berlama-lama menjalankan operasi di thread utama"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokasi kursor"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Penerapan WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Setel penerapan WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Pilihan ini tidak valid lagi. Coba lagi."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mode warna gambar"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Gunakan sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dinonaktifkan"</string>
@@ -634,7 +662,7 @@
     <string name="user_add_profile_item_title" msgid="3111051717414643029">"Profil dibatasi"</string>
     <string name="user_add_user_title" msgid="5457079143694924885">"Tambahkan pengguna baru?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Anda dapat menggunakan perangkat ini bersama orang lain dengan membuat pengguna tambahan. Setiap pengguna memiliki ruang sendiri, yang dapat disesuaikan dengan aplikasi, wallpaper, dan lainnya. Pengguna juga dapat menyesuaikan setelan perangkat seperti Wi-Fi yang dapat memengaruhi semua pengguna lain.\n\nSaat Anda menambahkan pengguna baru, pengguna tersebut perlu menyiapkan ruangnya.\n\nPengguna mana pun dapat mengupdate aplikasi untuk semua pengguna lainnya. Layanan dan setelan aksesibilitas mungkin tidak ditransfer ke pengguna baru."</string>
-    <string name="user_add_user_message_short" msgid="3295959985795716166">"Saat Anda menambahkan pengguna baru, orang tersebut harus menyiapkan ruangnya sendiri.\n\nPengguna mana pun dapat meng-update aplikasi untuk semua pengguna lain."</string>
+    <string name="user_add_user_message_short" msgid="3295959985795716166">"Saat Anda menambahkan pengguna baru, orang tersebut harus menyiapkan ruangnya sendiri.\n\nPengguna mana pun dapat mengupdate aplikasi untuk semua pengguna lain."</string>
     <string name="user_grant_admin_title" msgid="5157031020083343984">"Jadikan pengguna ini sebagai admin?"</string>
     <string name="user_grant_admin_message" msgid="1673791931033486709">"Admin memiliki hak istimewa khusus yang tidak dimiliki pengguna lain. Admin dapat mengelola semua pengguna, mengupdate atau mereset perangkat ini, mengubah setelan, melihat semua aplikasi terinstal, dan memberi atau mencabut hak istimewa admin untuk pengguna lain."</string>
     <string name="user_grant_admin_button" msgid="5441486731331725756">"Jadikan admin"</string>
diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml
index 851a7a49..27846cc 100644
--- a/packages/SettingsLib/res/values-is/arrays.xml
+++ b/packages/SettingsLib/res/values-is/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Aðeins skjár tækis (sjálfgefið)"</item>
+    <item msgid="9161645858025071955">"Ytri skjár"</item>
+    <item msgid="23651860565814477">"Síðasta snerting stöðustiku"</item>
+    <item msgid="7521112827893653392">"Byggt á fókus"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Aðeins skyggja skjá tækis"</item>
+    <item msgid="1955398604822147783">"Skyggja stakan ytri skjá"</item>
+    <item msgid="391477482416751568">"Skyggja skjá þar sem stöðustika var síðast notuð"</item>
+    <item msgid="1746820128097981528">"Skyggja síðasta skjá í fókus"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 804ea63..d361157 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ekki var hægt að uppfæra umhverfi"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Virkt (eingöngu margmiðlunarefni). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Virkt (eingöngu margmiðlunarefni), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> rafhlöðuhleðsla."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Tengt (styður hljóðdeilingu), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Tengt (styður hljóðdeilingu), V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> rafhlöðuhleðsla."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Tengt (styður hljóðdeilingu). Vinstri: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Tengt (styður hljóðdeilingu). Hægri: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Tengt (styður hljóðdeilingu)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Virkt (eingöngu margmiðlunarefni)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Styður hljóðdeilingu"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Virkt (eingöngu margmiðlunarefni), eingöngu vinstri"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Virkt (eingöngu margmiðlunarefni), eingöngu hægri"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Virkt (eingöngu margmiðlunarefni), vinstri og hægri"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Myndþýðing með vélbúnaðarhröðun"</string>
     <string name="media_category" msgid="8122076702526144053">"Margmiðlun"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Eftirlit"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Kveikt á strangri stillingu"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Blikka skjá ef forrit gera tímafreka hluti á aðalþræði"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Staðsetning bendils"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Innleiðing WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Stilla innleiðingu WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Þetta val er ekki lengur gilt. Reyndu aftur."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Litastilling mynda"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Nota sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Óvirkt"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 09ec5cc..98e415b 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Impossibile aggiornare audio ambientale"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Attivo (solo contenuti multimediali). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Attivo (solo contenuti multimediali). S: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> di batteria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> di batteria."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Connesso (supporta la condivisione audio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Connesso (supporta la condivisione audio). S: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> di batteria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> di batteria."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Connesso (supporta la condivisione audio). Sinistro: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Connesso (supporta la condivisione audio). Destro: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> di batteria."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Connesso (supporta la condivisione audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Attivo (solo contenuti multimediali)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Supporta la condivisione audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Attivo (solo contenuti multimediali), solo sinistro"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Attivo (solo contenuti multimediali), solo destro"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Attivo (solo contenuti multimediali), sinistro e destro"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendering con accelerazione hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Contenuti multimediali"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoraggio"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Attiva StrictMode"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Fai lampeggiare lo schermo per operazioni lunghe sul thread principale"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Posizione puntatore"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementazione di WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Imposta l\'implementazione di WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"La selezione non è più valida. Riprova."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modalità colori immagini"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Usa sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Disattivato"</string>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
index 9d176c0..744e502 100644
--- a/packages/SettingsLib/res/values-iw/arrays.xml
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"מסך המכשיר בלבד (ברירת המחדל)"</item>
+    <item msgid="9161645858025071955">"מסך חיצוני"</item>
+    <item msgid="23651860565814477">"אינטראקציה אחרונה עם שורת הסטטוס"</item>
+    <item msgid="7521112827893653392">"לפי התמקדות"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"הצגת הצללה במסך המכשיר בלבד"</item>
+    <item msgid="1955398604822147783">"הצגת לוח ההתראות במסך חיצוני אחד"</item>
+    <item msgid="391477482416751568">"הצגת לוח ההתראות במסך שבו הייתה האינטראקציה האחרונה עם שורת הסטטוס"</item>
+    <item msgid="1746820128097981528">"הצגת לוח ההתראות במסך האחרון שבו המשתמש התמקד"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 361dd18..b341c4d 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"לא ניתן לעדכן את עוצמת הרעשים בסביבה"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"פעיל (מדיה בלבד). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"פעיל (מדיה בלבד). סוללה בצד שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, סוללה בצד ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"מחובר (תמיכה בשיתוף אודיו). סוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, סוללה בצד ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"מחובר (תמיכה בשיתוף אודיו). סוללה בצד ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"מחובר (תמיכה בשיתוף אודיו)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"פעיל (מדיה בלבד)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"תמיכה בשיתוף אודיו"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"פעיל (מדיה בלבד), שמאל בלבד"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"פעיל (מדיה בלבד), ימין בלבד"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"פעיל (מדיה בלבד), שמאל וימין"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"עיבוד מואץ של חומרה"</string>
     <string name="media_category" msgid="8122076702526144053">"מדיה"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"מעקב"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"מצב קפדני מופעל"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"‏המסך יהבהב כשאפליקציות יבצעו פעולות ארוכות ב-thread הראשי"</string>
     <string name="pointer_location" msgid="7516929526199520173">"מיקום מצביע"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"‏יישום WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"‏הגדרת יישום WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"אפשרות זו כבר אינה תקפה. אפשר לנסות שוב."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"מצב צבע התמונה"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"‏שימוש ב-sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"מושבת"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 1170cd1..2e36d6a 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"周囲の音を更新できませんでした"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"有効(メディアのみ)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"有効(メディアのみ)。左: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>、右: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"接続済み(音声の共有をサポート)。バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"接続済み(音声の共有をサポート)。左: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>、右: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"接続済み(音声の共有をサポート)。左: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"接続済み(音声の共有をサポート)。右: バッテリー残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"接続済み(音声の共有をサポート)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"有効(メディアのみ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"音声の共有をサポートしています"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"有効(メディアのみ)、左のみ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"有効(メディアのみ)、右のみ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"有効(メディアのみ)、左右"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ハードウェアアクセラレーテッドレンダリング"</string>
     <string name="media_category" msgid="8122076702526144053">"メディア"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"モニタリング"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"厳格モードを有効にする"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"メインスレッドの処理が長引く場合は画面を点滅させる"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ポインタの位置"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView の実装"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView の実装の設定"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"この選択は無効になりました。もう一度お試しください。"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"画像の色モード"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGBを使用"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"無効"</string>
diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml
index 8ee3338..3ecf9d8 100644
--- a/packages/SettingsLib/res/values-ka/arrays.xml
+++ b/packages/SettingsLib/res/values-ka/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"მხოლოდ მოწყობილობის ეკრანი (ნაგულისხმევი)"</item>
+    <item msgid="9161645858025071955">"გარე ეკრანი"</item>
+    <item msgid="23651860565814477">"სტატუსის ზოლის ბოლო შეხება"</item>
+    <item msgid="7521112827893653392">"ფოკუსის მიხედვით"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"ჩრდილის ჩვენება მხოლოდ მოწყობილობის ეკრანზე"</item>
+    <item msgid="1955398604822147783">"ჩრდილის ჩვენება ერთ გარე ეკრანზე"</item>
+    <item msgid="391477482416751568">"ეკრანზე ჩრდილის ჩვენება, რომლის სტატუსის ზოლთანაც მოხდა ბოლო ინტერაქცია"</item>
+    <item msgid="1746820128097981528">"ჩრდილის ჩვენება ბოლო ფოკუსირებულ ეკრანზე"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"ფოკუსირებული_ეკრანი"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 6503795..e627b79 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"გარემოცვის განახლება ვერ მოხერხდა"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"აქტიური (მხოლოდ მედია). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>%% ბატარეა."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"აქტიური (მხოლოდ მედია), მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, მარჯვენა:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ბატარეა."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). ბატარეა <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარცხენა: ბატარეა <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, მარჯვენა: ბატარეა <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია). მარჯვენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"დაკავშირებული (აუდიოს გაზიარება მხარდაჭერილია)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"აქტიური (მხოლოდ მედია)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"აუდიოს გაზიარება მხარდაჭერილია"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"აქტიური (მხოლოდ მედია), მხოლოდ მარცხენა"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"აქტიური (მხოლოდ მედია), მხოლოდ მარჯვენა"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"აქტიური (მხოლოდ მედია), მარცხენა და მარჯვენა"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"აპარატურით დაჩქარებული გამოსახულება"</string>
     <string name="media_category" msgid="8122076702526144053">"მედია"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"მონიტორინგი"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"მკაცრი რეჟიმი ჩართულია"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ეკრანის აციმციმება, როცა აპები ახორციელებენ ხანგრძლივ ოპერაციებს მთავარ ნაკადზე"</string>
     <string name="pointer_location" msgid="7516929526199520173">"მაჩვენებლის მდებარეობა"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView რეალიზაცია"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView რეალიზაციის დაყენება"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"თქვენი არჩევანი აღარ მოქმედებს. ცადეთ ხელახლა."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"გამოსახულების ფერების რეჟიმი"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB-ს გამოყენება"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"გამორთულია"</string>
diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml
index 6aa5f2b..e2510a7 100644
--- a/packages/SettingsLib/res/values-kk/arrays.xml
+++ b/packages/SettingsLib/res/values-kk/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Тек құрылғы дисплейі (әдепкі)"</item>
+    <item msgid="9161645858025071955">"Сыртқы дисплей"</item>
+    <item msgid="23651860565814477">"Соңғы күй жолағын түрту"</item>
+    <item msgid="7521112827893653392">"Назарға негізделген"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Құрылғы дисплейінде ғана реңк көрсету"</item>
+    <item msgid="1955398604822147783">"Жалғыз сыртқы дисплейде көлеңкені көрсету"</item>
+    <item msgid="391477482416751568">"Күй жолағы соңғы рет қолданылған дисплейде көлеңкені көрсету"</item>
+    <item msgid="1746820128097981528">"Соңғы рет назарда болған дисплейде көлеңкені көрсету"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 9082a56..a85e624 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Айналаны жаңарту мүмкін болмады."</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Істеп тұр (тек мультимедиа). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Істеп тұр (тек мультимедиа). Сол жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. Оң жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Жалғанып тұр (аудио бөлісу мүмкіндігі бар). Батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Қосылды (аудио бөлісуге мүмкіндік береді). Сол жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. Оң жақ: батарея зарядының деңгейі — <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Қосылды (аудио бөлісуге мүмкіндік береді). Сол жақ: батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Қосылды (аудио бөлісуге мүмкіндік береді). Оң жақ: батарея зарядының деңгейі – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Жалғанды (аудио бөлісу мүмкіндігі бар)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Істеп тұр (тек мультимедиа)."</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Аудио бөлісуге мүмкіндік береді."</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Тек сол жақ істеп тұр (мультимедиа ғана)."</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Тек оң жақ істеп тұр (мультимедиа ғана)."</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Сол және оң жақ істеп тұр (мультимедиа ғана)."</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Бейнелеуді аппаратпен жеделдету"</string>
     <string name="media_category" msgid="8122076702526144053">"Mультимeдиа"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Бақылау"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Қатаң режим қосылған"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Қолданбалар ұзақ операцияларды орындағанда экранды жыпылықтату"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Меңзер орны"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView қызметі"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ендіруін орнату"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Бұл таңдау енді жарамды емес. Әрекетті қайталаңыз."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Сурет түс режимі"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB пайдалану"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Өшірулі"</string>
diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml
index e9a21e8..07e64a5 100644
--- a/packages/SettingsLib/res/values-km/arrays.xml
+++ b/packages/SettingsLib/res/values-km/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"ផ្ទាំងអេក្រង់ឧបករណ៍តែប៉ុណ្ណោះ (លំនាំដើម)"</item>
+    <item msgid="9161645858025071955">"ផ្ទាំង​អេក្រង់​ខាង​ក្រៅ"</item>
+    <item msgid="23651860565814477">"ការចុចរបារ​ស្ថានភាពចុងក្រោយបំផុត"</item>
+    <item msgid="7521112827893653392">"ផ្អែកលើការផ្ដោត"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"បង្ហាញផ្ទាំងនៅលើផ្ទាំងអេក្រង់ឧបករណ៍តែប៉ុណ្ណោះ"</item>
+    <item msgid="1955398604822147783">"បង្ហាញផ្ទាំងនៅលើផ្ទាំងអេក្រង់ខាងក្រៅតែមួយ"</item>
+    <item msgid="391477482416751568">"បង្ហាញផ្ទាំងនៅលើផ្ទាំងអេក្រង់ដែលមានការធ្វើអន្តរកម្មចុងក្រោយលើរបារ​ស្ថានភាពរបស់វា"</item>
+    <item msgid="1746820128097981528">"បង្ហាញផ្ទាំងនៅលើផ្ទាំងអេក្រង់ដែលបានផ្ដោតចុងក្រោយ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 3cc214e..d2d5893 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"មិនអាចប្ដូរមជ្ឈដ្ឋានជុំវិញបានទេ"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)។ ឆ្វេង៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ស្ដាំ៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>។"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ឆ្វេង៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ស្ដាំ៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>។"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ឆ្វេង៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)។ ស្ដាំ៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>។"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"បានភ្ជាប់ (អាចប្រើការស្ដាប់សំឡេងរួមគ្នា)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"អាចប្រើការស្ដាប់សំឡេងរួមគ្នា"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) តែខាងឆ្វេងប៉ុណ្ណោះ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) តែខាងស្ដាំប៉ុណ្ណោះ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"សកម្ម (តែមេឌៀប៉ុណ្ណោះ) ឆ្វេង និងស្ដាំ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ការបំប្លែងដែលពន្លឿនដោយប្រើហាតវែរ"</string>
     <string name="media_category" msgid="8122076702526144053">"មេឌៀ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"តាមដាន"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"បាន​បើក​មុខងារតឹងរ៉ឹង"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"បញ្ចេញ​ពន្លឺ​អេក្រង់​ពេល​កម្មវិធី​ធ្វើ​ប្រតិបត្តិការ​យូរ​លើ​សែស្រឡាយ​​មេ"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ទីតាំង​ទ្រនិច"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"ការអនុវត្ត WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"កំណត់ការប្រតិបត្តិ WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ជម្រើសនេះលែងមានសុពលភាពទៀតហើយ ព្យាយាមម្តងទៀត"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"របៀបនៃពណ៌រូបភាព"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"ប្រើ sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"បាន​បិទ"</string>
diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml
index dc9c7e0..de2269a 100644
--- a/packages/SettingsLib/res/values-kn/arrays.xml
+++ b/packages/SettingsLib/res/values-kn/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"ಸಾಧನದ ಡಿಸ್‌ಪ್ಲೇ ಮಾತ್ರ (ಡೀಫಾಲ್ಟ್)"</item>
+    <item msgid="9161645858025071955">"ಬಾಹ್ಯ ಡಿಸ್‌ಪ್ಲೇ"</item>
+    <item msgid="23651860565814477">"ಇತ್ತೀಚಿನ ಸ್ಥಿತಿ ಪಟ್ಟಿಯ ಸ್ಪರ್ಶ"</item>
+    <item msgid="7521112827893653392">"ಫೋಕಸ್-ಆಧಾರಿತ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"ಸಾಧನದ ಡಿಸ್‌ಪ್ಲೇನಲ್ಲಿ ಮಾತ್ರ ಶೇಡ್ ತೋರಿಸಿ"</item>
+    <item msgid="1955398604822147783">"ಒಂದೇ ಬಾಹ್ಯ ಡಿಸ್‌ಪ್ಲೇನಲ್ಲಿ ಶೇಡ್ ಅನ್ನು ತೋರಿಸಿ"</item>
+    <item msgid="391477482416751568">"ಸ್ಥಿತಿ ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯದಾಗಿ ಸಂವಹನ ನಡೆಸಿದ ಶೇಡ್ ಅನ್ನು ಡಿಸ್‌ಪ್ಲೇ ಮೇಲೆ ತೋರಿಸಿ"</item>
+    <item msgid="1746820128097981528">"ಕೊನೆಯ ಕೇಂದ್ರೀಕೃತ ಡಿಸ್‌ಪ್ಲೇನಲ್ಲಿ ಶೇಡ್ ಅನ್ನು ತೋರಿಸಿ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index d2b2176..87f2cdf 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ಆ್ಯಂಬಿಯೆಂಟ್ ಸ್ಥಿತಿಯನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ). ಎಡ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ಬಲ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ಕನೆಕ್ಟ್‌ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ಕನೆಕ್ಟ್‌ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಎಡ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ಬಲ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"ಕನೆಕ್ಟ್‌ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಎಡ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ಕನೆಕ್ಟ್‌ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ). ಬಲ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ ಮಟ್ಟ."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ಕನೆಕ್ಟ್‌ ಆಗಿದೆ (ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಎಡ ಭಾಗದ ಮಾತ್ರ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಬಲ ಭಾಗದ ಮಾತ್ರ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ಸಕ್ರಿಯವಾಗಿದೆ (ಮೀಡಿಯಾ ಮಾತ್ರ), ಎಡ ಮತ್ತು ಬಲ ಭಾಗದ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ಹಾರ್ಡ್‌ವೇರ್‌ ವೇಗವರ್ಧಿತ ರೆಂಡರಿಂಗ್"</string>
     <string name="media_category" msgid="8122076702526144053">"ಮಾಧ್ಯಮ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"ಪರಿವೀಕ್ಷಣೆ ಮಾಡುವಿಕೆ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"ಸ್ಟ್ರಿಕ್ಟ್‌‌ ಮೋಡ್ ಸಕ್ರಿಯ"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮುಖ್ಯ ಥ್ರೆಡ್‌ನಲ್ಲಿ ದೀರ್ಘ ಕಾರ್ಯಾಚರಣೆ ನಿರ್ವಹಿಸಿದಾಗ ಪರದೆಯನ್ನು ಫ್ಲ್ಯಾಶ್ ಮಾಡು"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ಪಾಯಿಂಟರ್ ಸ್ಥಳ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ಹೊಂದಿಸಿ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ಅನುಷ್ಠಾನಗೊಳಿಸುವಿಕೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ಈ ಆಯ್ಕೆಯು ಇನ್ನು ಮುಂದೆ ಮಾನ್ಯವಾಗಿರುವುದಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ಚಿತ್ರ ಬಣ್ಣದ ಮೋಡ್"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ಬಳಸಿ"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
index 1477497..3cc5af0 100644
--- a/packages/SettingsLib/res/values-ko/arrays.xml
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"기기 디스플레이만(기본값)"</item>
+    <item msgid="9161645858025071955">"외부 디스플레이"</item>
+    <item msgid="23651860565814477">"최근 상태 표시줄 터치"</item>
+    <item msgid="7521112827893653392">"포커스 기반"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"기기 디스플레이에만 음영 표시"</item>
+    <item msgid="1955398604822147783">"단일 외부 디스플레이에 음영 표시"</item>
+    <item msgid="391477482416751568">"마지막으로 상호작용한 상태 표시줄이 있는 디스플레이에 음영 표시"</item>
+    <item msgid="1746820128097981528">"마지막으로 포커스된 디스플레이에 음영 표시"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index bece637..669d8ef 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"주변 소리를 업데이트할 수 없음"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"사용 중입니다(미디어 전용). 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"사용 중입니다(미디어 전용). 배터리는 왼쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 오른쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>입니다."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"연결되었습니다(오디오 공유 지원). 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"연결되었습니다(오디오 공유 지원). 배터리는 왼쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 오른쪽 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>입니다."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"연결되었습니다(오디오 공유 지원). 왼쪽 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"연결되었습니다(오디오 공유 지원). 오른쪽 배터리는 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>입니다."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"연결됨(오디오 공유 지원)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"사용 중(미디어 전용)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"오디오 공유 지원"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"사용 중(미디어 전용), 왼쪽만"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"사용 중(미디어 전용), 오른쪽만"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"사용 중(미디어 전용), 왼쪽 및 오른쪽"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"하드웨어 가속 렌더링"</string>
     <string name="media_category" msgid="8122076702526144053">"미디어"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"모니터링"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"엄격 모드 사용"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"앱이 기본 스레드에서 오래 작업하면 화면 깜박이기"</string>
     <string name="pointer_location" msgid="7516929526199520173">"포인터 위치"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 구현"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView 구현 설정"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"선택이 더 이상 유효하지 않습니다. 다시 시도하세요."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"사진 색상 모드"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB 사용"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"사용 중지됨"</string>
diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml
index 54d9ecd..5e40443 100644
--- a/packages/SettingsLib/res/values-ky/arrays.xml
+++ b/packages/SettingsLib/res/values-ky/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Түзмөктүн экраны гана (демейки)"</item>
+    <item msgid="9161645858025071955">"Тышкы экран"</item>
+    <item msgid="23651860565814477">"Абал тилкесине акыркы жолу тийүү"</item>
+    <item msgid="7521112827893653392">"Акыркы аракетке негизделген"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Көлөкөнү түзмөктүн экранында гана көрсөтүү"</item>
+    <item msgid="1955398604822147783">"Көлөкөнү бир тышкы экранда көрсөтүү"</item>
+    <item msgid="391477482416751568">"Көлөкөнү колдонуучу абал тилкеси менен акыркы жолу аракеттешкен экранда көрсөтүү"</item>
+    <item msgid="1746820128097981528">"Көлөкөнү акыркы активдүү экранда көрсөтүү"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index b6baf38..c69325b 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Айланадагы абал жаңыртылган жок"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Жигердүү (медиа үчүн гана). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Жигердүү (медиа үчүн гана). Батарея: L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Туташып турат (чогуу уксаңыз болот). Батарея: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Туташып турат (чогуу уксаңыз болот). Батарея: L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Туташып турат (чогуу уксаңыз болот). Сол кулак – батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Туташып турат (чогуу уксаңыз болот). Оң кулак – батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Туташып турат (чогуу уксаңыз болот)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активдүү (медиа үчүн гана)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Чогуу уксаңыз болот"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активдүү (медиа үчүн гана), сол кулакчын гана"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активдүү (медиа үчүн гана), оң кулакчын гана"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активдүү (медиа үчүн гана), сол жана оң кулакчын"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Визуалдаштырууну аппарат менен ылдамдатуу"</string>
     <string name="media_category" msgid="8122076702526144053">"Медиа"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Катаал режим иштетилди"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Узак операцияларда экран күйүп-өчүп турат"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Көрсөткүчтүн турган жери"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView кызматы"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView аткарылышын коюу"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Тандалган нерсе жараксыз болуп калган. Кайталап көрүңүз."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Сүрөт түсү режими"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB колдонуңуз"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Өчүк"</string>
diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml
index ccf645b..cf0a783 100644
--- a/packages/SettingsLib/res/values-lo/arrays.xml
+++ b/packages/SettingsLib/res/values-lo/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"ຈໍສະແດງຜົນຂອງອຸປະກອນເທົ່ານັ້ນ (ຄ່າເລີ່ມຕົ້ນ)"</item>
+    <item msgid="9161645858025071955">"ຈໍສະແດງຜົນພາຍນອກ"</item>
+    <item msgid="23651860565814477">"ການສຳຜັດແຖບສະຖານະຫຼ້າສຸດ"</item>
+    <item msgid="7521112827893653392">"ອີງຕາມການໂຟກັສ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"ສະແດງເສດສີໃນຈໍສະແດງຜົນຂອງອຸປະກອນເທົ່ານັ້ນ"</item>
+    <item msgid="1955398604822147783">"ສະແດງເສດສີໃນຈໍສະແດງຜົນພາຍນອກເຄື່ອງດຽວ"</item>
+    <item msgid="391477482416751568">"ສະແດງເສດສີໃນຈໍສະແດງຜົນທີ່ມີການໂຕ້ຕອບກັບແຖບສະຖານະຫຼ້າສຸດ"</item>
+    <item msgid="1746820128097981528">"ສະແດງເສດສີໃນຈໍສະແດງຜົນທີ່ໂຟກັສຫຼ້າສຸດ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 3046b4f..d1f1344 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ບໍ່ສາມາດອັບເດດສຽງແວດລ້ອມໄດ້"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ). ຊ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ຂ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຊ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ຂ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຊ້າຍ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ). ຂວາ: ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ເຊື່ອມຕໍ່ແລ້ວ (ຮອງຮັບການແບ່ງປັນສຽງ)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ຮອງຮັບການແບ່ງປັນສຽງ"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຊ້າຍເທົ່ານັ້ນ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຂວາເທົ່ານັ້ນ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ນຳໃຊ້ຢູ່ (ມີເດຍເທົ່ານັ້ນ), ຊ້າຍ ແລະ ຂວາ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ການສະແດງຜົນໂດຍໃຊ້ຮາດແວຊ່ວຍ"</string>
     <string name="media_category" msgid="8122076702526144053">"ມີເດຍ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"ກຳລັງກວດສອບ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"ເປີດໃຊ້ໂໝດເຄັ່ງຄັດ"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ກະພິບໜ້າຈໍເມື່ອມີແອັບເຮັດວຽກດົນເກີນໄປໃນເທຣດຫຼັກ"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ຕຳແໜ່ງໂຕຊີ້"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"ການຈັດຕັ້ງປະຕິບັດ WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ຕັ້ງການຈັດຕັ້ງປະຕິບັດ WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ບໍ່ສາມາດໃຊ້ການເລືອກນີ້ໄດ້ອີກຕໍ່ໄປແລ້ວ. ກະລຸນາລອງໃໝ່."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ໂໝດ​ສີ​ຮູບ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"ໃຊ້ sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ປິດນຳໃຊ້ແລ້ວ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index f81caa8..7f94010 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nepavyko atnaujinti aplinkos"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktyvus (tik medija). Akumuliatorius lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktyvus (tik medija), akumuliatoriaus lygis kairėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dešinėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Prijungta (palaikomas garso įrašų bendrinimas), akumuliatoriaus lygis kairėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, dešinėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis kairėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Prijungta (palaikomas garso įrašų bendrinimas). Akumuliatoriaus lygis dešinėje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Prijungta (palaikomas garso įrašų bendrinimas)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktyvus (tik medija)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Palaikomas garso įrašų bendrinimas"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktyvus (tik medija), tik kairė"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktyvus (tik medija), tik dešinė"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktyvus (tik medija), kairė ir dešinė"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Aparatinės įrangos paspartintas pateikimas"</string>
     <string name="media_category" msgid="8122076702526144053">"Medija"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Stebėjimas"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Įgal. griežtas režimas"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ekr. blyksės, kai pr. atl. ilgus proc. pgr. gijoje"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Žymiklio vieta"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"„WebView“ diegimas"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"„WebView“ diegimo nustatymas"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Šios parinkties nebegalima pasirinkti. Bandykite dar kartą."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Nuotraukos spalvos režimas"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Naudoti sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Išjungtas"</string>
diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml
index 6d293be..da4ae31f 100644
--- a/packages/SettingsLib/res/values-lv/arrays.xml
+++ b/packages/SettingsLib/res/values-lv/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Tikai ierīces displejs (noklusējums)"</item>
+    <item msgid="9161645858025071955">"Ārējais displejs"</item>
+    <item msgid="23651860565814477">"Pēdējais pieskāriens statusa joslai"</item>
+    <item msgid="7521112827893653392">"Saskaņā ar fokusu"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Rādīt ēnu tikai ierīces displejā"</item>
+    <item msgid="1955398604822147783">"Rādīt ēnu vienā ārējā displejā"</item>
+    <item msgid="391477482416751568">"Rādīt ēnu tajā displejā, kura statusa joslā pēdējoreiz tika veikta darbība"</item>
+    <item msgid="1746820128097981528">"Rādīt ēnu pēdējā fokusētajā displejā"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 987857b..50a56d4 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nevarēja atjaunināt apkārtnes skaņas"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktīvs (tikai multividei). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktīvs (tikai multividei). Akumulatora uzlādes līmenis kreisajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, labajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis kreisajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, labajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis kreisajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Izveidots savienojums (atbalsta audio kopīgošanu). Akumulatora uzlādes līmenis labajā austiņā: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Izveidots savienojums (atbalsta audio kopīgošanu)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktīvs (tikai multividei)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Atbalsta audio kopīgošanu"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktīvs (tikai multivide), tikai kreisās puses aparāts"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktīvs (tikai multivide), tikai labās puses aparāts"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktīvs (tikai multivide), kreisās un labās puses aparāts"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Aparatūras paātrinātā atveidošana"</string>
     <string name="media_category" msgid="8122076702526144053">"Multivide"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Pārraudzība"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Precīzais rež. ir iespēj."</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Zibsnīt ekrānu, ja liet. ilgi darbojas galv. pav."</string>
     <string name="pointer_location" msgid="7516929526199520173">"Rādītāja atrašanās vieta"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ieviešana"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Iestatīt WebView ieviešanu"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Šī iespēja vairs nav derīga. Mēģiniet vēlreiz."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Attēla krāsu režīms"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Izmantot sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Atspējota"</string>
diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml
index 0490f28..4dce6bc 100644
--- a/packages/SettingsLib/res/values-mk/arrays.xml
+++ b/packages/SettingsLib/res/values-mk/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Само на екранот на уредот (стандардно)"</item>
+    <item msgid="9161645858025071955">"Надворешен екран"</item>
+    <item msgid="23651860565814477">"Последен допир на статусната лента"</item>
+    <item msgid="7521112827893653392">"Засновано на фокус"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Прикажувај сенка само на екранот на уредот"</item>
+    <item msgid="1955398604822147783">"Прикажувај сенка на еден надворешен екран"</item>
+    <item msgid="391477482416751568">"Прикажувај сенка на екранот што последен имал интеракција со статусната лента"</item>
+    <item msgid="1746820128097981528">"Прикажувај сенка на последниот фокусиран екран"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"стандарден_екран"</item>
+    <item msgid="774789415968826925">"кој_било_надворешен_екран"</item>
+    <item msgid="7880769915418638436">"последен_допир_на_статусната_лента"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index fa65437..e86a6ce 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не можеше да се ажурира опкружувањето"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само аудиовизуелни содржини). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само аудиовизуелни содржини). Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерија, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерија."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Поврзано (поддржува споделување аудио). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Поврзано (поддржува споделување аудио). Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерија, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерија."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Поврзано (поддржува споделување аудио). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Поврзано (поддржува споделување аудио). Десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Поврзано (поддржува споделување аудио)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (само аудиовизуелни содржини)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддржува споделување аудио"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (само аудиовизуелни содржини), само лево"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (само аудиовизуелни содржини), само десно"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (само аудиовизуелни содржини), лево и десно"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверско забрзување"</string>
     <string name="media_category" msgid="8122076702526144053">"Аудиовизуелни содржини"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Следење"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Овозможен е строг режим"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Трепкај со екранот при долги операции на главна нишка"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Локација на покажувач"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Примена на WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Поставете воведување WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Овој избор веќе не важи. Обидете се повторно."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Режим на боја на слика"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Користи sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Оневозможено"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 3e59d9f..f7ab232 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"സറൗണ്ടിംഗ്‌സ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"സജീവം (മീഡിയ മാത്രം). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"സജീവം (മീഡിയ മാത്രം). ഇടതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ബാറ്ററി, വലതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ബാറ്ററി."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). ഇടതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ബാറ്ററി, വലതുവശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ബാറ്ററി."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). ഇടത് വശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു). വലത് വശത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"കണക്റ്റ് ചെയ്തു (ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"സജീവം (മീഡിയ മാത്രം)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ഓഡിയോ പങ്കിടൽ പിന്തുണയ്ക്കുന്നു"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"സജീവം (മീഡിയ മാത്രം), ഇടതുവശത്ത് മാത്രം"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"സജീവം (മീഡിയ മാത്രം), വലതുവശത്ത് മാത്രം"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"സജീവം (മീഡിയ മാത്രം), ഇടതുവശത്തെയും വലതുവശത്തെയും"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ഹാർഡ്‌വെയർ ത്വരിതപ്പെടുത്തിയ റെൻഡറിംഗ്"</string>
     <string name="media_category" msgid="8122076702526144053">"മീഡിയ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"മോണിറ്ററിംഗ്"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"ഫോഴ്സ്‌മോഡ് സജീവമാക്കി"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"പ്രധാന ത്രെഡിൽ ആപ്പുകൾ ദൈർഘ്യമേറിയ പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ സ്‌ക്രീൻ ഫ്ലാഷ് ചെയ്യുക"</string>
     <string name="pointer_location" msgid="7516929526199520173">"പോയിന്റർ ലൊക്കേഷൻ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView നടപ്പാക്കൽ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView നടപ്പാക്കൽ സജ്ജമാക്കുക"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ഈ തിരഞ്ഞെടുപ്പിന് തുടർന്നങ്ങോട്ട് സാധുതയില്ല. വീണ്ടും ശ്രമിക്കുക."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ചിത്ര വർണ്ണ മോഡ്"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ഉപയോഗിക്കുക"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"പ്രവർത്തനരഹിതമാക്കി"</string>
diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml
index ca103af..121371d 100644
--- a/packages/SettingsLib/res/values-mn/arrays.xml
+++ b/packages/SettingsLib/res/values-mn/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Зөвхөн төхөөрөмжийн дэлгэц (өгөгдмөл)"</item>
+    <item msgid="9161645858025071955">"Гаднын дэлгэц"</item>
+    <item msgid="23651860565814477">"Статус самбарын сүүлийн үеийн хүрэлт"</item>
+    <item msgid="7521112827893653392">"Төвлөрөлд тулгуурласан"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Зөвхөн төхөөрөмж дээрх дэлгэцэд сүүдрийг харуулах"</item>
+    <item msgid="1955398604822147783">"Нэг гаднын дэлгэц дээр сүүдэр харуулах"</item>
+    <item msgid="391477482416751568">"Статус самбартай нь сүүлд харилцан үйлдэл хийсэн дэлгэц дээр сүүдэр харуулах"</item>
+    <item msgid="1746820128097981528">"Сүүлд төвлөрсөн дэлгэц дээр сүүдэр харуулах"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index e8e9e0c..4dc754e 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Орчин тойрныг шинэчилж чадсангүй"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Идэвхтэй (зөвхөн медиа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Идэвхтэй (зөвхөн медиа). З: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Б: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батарей."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Холбогдсон (аудио хуваалцахыг дэмждэг). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Холбогдсон (аудио хуваалцахыг дэмждэг). З: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Б: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батарей."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Холбогдсон (аудио хуваалцахыг дэмждэг). Зүүн: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Холбогдсон (аудио хуваалцахыг дэмждэг). Баруун: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батарей."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Холбогдсон (аудио хуваалцахыг дэмждэг)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Идэвхтэй (зөвхөн медиа)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Аудио хуваалцахыг дэмждэг"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Идэвхтэй (зөвхөн медиа), зөвхөн зүүн"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Идэвхтэй (зөвхөн медиа), зөвхөн баруун"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Идэвхтэй (зөвхөн медиа), зүүн болон баруун"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Техник хангамжийн хурдасгасан үзүүлэлт"</string>
     <string name="media_category" msgid="8122076702526144053">"Медиа"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Хатуу горимыг идэвхжүүлсэн"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Аппууд үндсэн хэлхээс дээр удаан хугацаанд үйлдлүүд хийх үед дэлгэцийг анивчуулах"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Чиглүүлэгчийн байршил"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView хэрэгжилт"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView хэрэгжилтийг тохируулах"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Энэ сонголт хүчингүй байна. Дахин оролдоно уу."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"\"Зургийн өнгө\" горим"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB-г ашиглах"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Идэвхгүй болсон"</string>
diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml
index 1437a2c..eba95ae 100644
--- a/packages/SettingsLib/res/values-mr/arrays.xml
+++ b/packages/SettingsLib/res/values-mr/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"फक्त डिव्हाइस डिस्प्ले (डीफॉल्ट)"</item>
+    <item msgid="9161645858025071955">"बाह्य डिस्प्ले"</item>
+    <item msgid="23651860565814477">"नवीनतम स्टेटस बार स्पर्श"</item>
+    <item msgid="7521112827893653392">"फोकसवर आधारित"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"फक्त डिव्हाइस डिस्प्लेवर शेड दाखवा"</item>
+    <item msgid="1955398604822147783">"एकल बाह्य डिस्प्लेवर शेड दाखवा"</item>
+    <item msgid="391477482416751568">"त्याच्या स्टेटस बारशी शेवटचा संवाद साधला आहे अशा डिस्प्लेवर शेड दाखवा"</item>
+    <item msgid="1746820128097981528">"शेवटच्या फोकस केलेल्या डिस्प्लेवर शेड दाखवा"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index f1f5cab..eef39c4 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"जवळपासचे आवाज अपडेट करता आले नाहीत"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"अ‍ॅक्टिव्ह आहे (फक्त मीडिया). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ॲक्टिव्ह आहे (फक्त मीडिया). डावीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, उजवीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). डावीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, उजवीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). डावीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते). उजवीकडे: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट केले आहे (ऑडिओ शेअरिंगला सपोर्ट करते)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"अ‍ॅक्टिव्ह आहे (फक्त मीडिया)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ऑडिओ शेअरिंगला सपोर्ट करते"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"अ‍ॅक्टिव्ह आहे (फक्त मीडिया), फक्त डावे"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"अ‍ॅक्टिव्ह आहे (फक्त मीडिया), फक्त उजवे"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"अ‍ॅक्टिव्ह आहे (फक्त मीडिया), डावे आणि उजवे"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेअर अ‍ॅक्सिलरेटेड रेंडरिंग"</string>
     <string name="media_category" msgid="8122076702526144053">"मीडिया"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"परीक्षण"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"कठोर मोड सुरू"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"मुख्य थ्रेडवर अ‍ॅप्स मोठी कार्ये करतात तेव्हा स्क्रीन फ्लॅश करा"</string>
     <string name="pointer_location" msgid="7516929526199520173">"पॉइंटर स्थान"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"वेबदृश्य अंमलबजावणी"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"वेबदृश्य अंमलबजावणी सेट करा"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ही निवड यापुढे वैध असणार नाही. पुन्हा प्रयत्न करा."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"चित्र रंग मोड"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB वापरा"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"बंद केले"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 412100c..ca4649c 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Tidak dapat mengemaskinikan persekitaran"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktif (media sahaja). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktif (media sahaja), L: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Disambungkan (menyokong perkongsian audio). Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Disambungkan (menyokong perkongsian audio). L: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Disambungkan (menyokong perkongsian audio). Kiri: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Disambungkan (menyokong perkongsian audio). Kanan: Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Disambungkan (menyokong perkongsian audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktif (media sahaja)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Menyokong perkongsian audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktif (media sahaja), kiri sahaja"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktif (media sahaja), kanan sahaja"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktif (media sahaja), kiri dan kanan"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Pemaparan dipercepat perkakasan"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Memantau"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Mod tegas didayakan"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Kelip skrin apabila apl beroperasi lama pada urutan utama"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokasi penuding"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Pelaksanaan WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Tetapkan pelaksanaan WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Pilihan ini tidak lagi sah. Cuba lagi."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mod warna gambar"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Gunakan sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dilumpuhkan"</string>
diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml
index aef22b2..91ce12a 100644
--- a/packages/SettingsLib/res/values-my/arrays.xml
+++ b/packages/SettingsLib/res/values-my/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"စက်ဖန်သားပြင် သီးသန့် (မူရင်း)"</item>
+    <item msgid="9161645858025071955">"ပြင်ပဖန်သားပြင်"</item>
+    <item msgid="23651860565814477">"နောက်ဆုံး အခြေအနေပြဘား တို့ထိမှု"</item>
+    <item msgid="7521112827893653392">"ပြသမှုအခြေပြု"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"စက်ဖန်သားပြင်တွင်သာ အရိပ်ပြပါ"</item>
+    <item msgid="1955398604822147783">"ပြင်ပဖန်သားပြင်တစ်ခုတွင် အရိပ်ကိုပြပါ"</item>
+    <item msgid="391477482416751568">"အခြေအနေပြဘား နောက်ဆုံးပြန်လှန်တုံ့ပြန်ထားသော ဖန်သားပြင်တွင် အရိပ်ကိုပြပါ"</item>
+    <item msgid="1746820128097981528">"နောက်ဆုံးပြထားသော ဖန်သားပြင်တွင် အရိပ်ကိုပြပါ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"မူရင်းဖန်သားပြင်"</item>
+    <item msgid="774789415968826925">"မည်သည့်ပြင်ပဖန်သားပြင်မဆို"</item>
+    <item msgid="7880769915418638436">"အခြေအနေပြဘား နောက်ဆုံးထိတွေ့မှု"</item>
+    <item msgid="4313165186636015195">"ပြသထားသောဖန်သားပြင်"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index cf493cf..1225e4c 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ဝန်းကျင်အသံ အပ်ဒိတ်လုပ်၍ မရလိုက်ပါ"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"အသုံးပြုနေသည် (မီဒီယာသီးသန့်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"အသုံးပြုနေသည် (မီဒီယာသီးသန့်)။ ဘက်ထရီ L- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>၊ R- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>။"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘက်ထရီ L- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>၊ R- <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>။"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ဘယ်- ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)။ ညာ- ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>။"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ချိတ်ဆက်ထားသည် (အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"သုံးနေသည် (မီဒီယာသီးသန့်)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"အော်ဒီယို မျှဝေခြင်း ပံ့ပိုးသည်"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ဘယ်သီးသန့်"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ညာသီးသန့်"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"သုံးနေသည် (မီဒီယာသီးသန့်)၊ ဘယ်နှင့် ညာ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ဟာ့ဒ်ဝဲ အရှိန်မြှင့် ပုံဖော်ခြင်း"</string>
     <string name="media_category" msgid="8122076702526144053">"မီဒီယာ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"စောင့်ကြည့်စစ်ဆေးခြင်း"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"တင်းကြပ်သောစနစ် ဖွင့်ရန်"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"အက်ပ်လုပ်ဆောင်မှု ရှည်ကြာလျှင် စကရင်ပြန်စသည်"</string>
     <string name="pointer_location" msgid="7516929526199520173">"မြား၏တည်နေရာ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView အကောင်အထည်ဖော်မှု"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView အကောင်အထည်ဖော်မှု သတ်မှတ်ပါ"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ဤရွေးချယ်မှု မှန်ကန်မှု မရှိတော့ပါ။ ထပ်စမ်းကြည့်ပါ။"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ဓာတ်ပုံအရောင်မုဒ်"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ကို အသုံးပြုပါ"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ပိတ်ထားသည်"</string>
diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml
index 88f193c..c0106c4 100644
--- a/packages/SettingsLib/res/values-nb/arrays.xml
+++ b/packages/SettingsLib/res/values-nb/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Bare enhetsskjermen (standard)"</item>
+    <item msgid="9161645858025071955">"Ekstern skjerm"</item>
+    <item msgid="23651860565814477">"Siste trykk på statusfeltet"</item>
+    <item msgid="7521112827893653392">"Fokusbasert"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Vis skyggen bare på enhetsskjermen"</item>
+    <item msgid="1955398604822147783">"Vis skyggen på én ekstern skjerm"</item>
+    <item msgid="391477482416751568">"Vis skyggen på skjermen hvor det ble trykket på statusfeltet sist"</item>
+    <item msgid="1746820128097981528">"Vis skyggen på den sist fokuserte skjermen"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"Standardskjerm"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 045318a..7c9b10f 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kunne ikke oppdatere omgivelsene"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (bare medieinnhold) <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (bare medieinnhold). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Tilkoblet (støtter lyddeling). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Tilkoblet (støtter lyddeling). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Tilkoblet (støtter lyddeling). Venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Tilkoblet (støtter lyddeling). Høyre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Tilkoblet (støtter lyddeling)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (bare medieinnhold)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Støtter lyddeling"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (bare medieinnhold), bare venstre"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (bare medieinnhold), bare høyre"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (bare medieinnhold), høyre og venstre"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Maskinvareakselerert gjengivelse"</string>
     <string name="media_category" msgid="8122076702526144053">"Medier"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Overvåking"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Slå på streng modus"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Skjermblink ved lange apphandlinger på hovedtråd"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pekerplassering"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Angi WebView-implementering"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Dette valget er ikke gyldig lenger. Prøv på nytt."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Fargemodus for bilder"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Bruk sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Slått av"</string>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index 1989994..23d6343 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"२"</item>
     <item msgid="4779928470672877922">"३"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"डिभाइसको डिस्प्ले मात्र (डिफल्ट)"</item>
+    <item msgid="9161645858025071955">"बाह्य डिस्प्ले"</item>
+    <item msgid="23651860565814477">"पछिल्लो पटक स्ट्याटस बारमा टच गरिएको"</item>
+    <item msgid="7521112827893653392">"फोकसमा आधारित"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"यो सेड डिभाइसकै डिस्प्लेमा मात्र देखाउनुहोस्"</item>
+    <item msgid="1955398604822147783">"एउटा बाह्य डिस्प्लेमा सेड देखाउनुहोस्"</item>
+    <item msgid="391477482416751568">"पछिल्लो पटक जुन डिस्प्लेको स्ट्याटस बारमा टच गरिएको थियो सो डिस्प्लेमा सेड देखाउनुहोस्"</item>
+    <item msgid="1746820128097981528">"पछिल्लो पटक फोकस गरिएको डिस्प्लेमा सेड देखाउनुहोस्"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index d637a4b..e2e7a8f 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"वरपरका आवाजसम्बन्धी सेटिङ अपडेट गर्न सकिएन"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"सक्रिय छ (मिडिया मात्र)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"सक्रिय छ (मिडिया मात्र)। बायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ब्याट्री।"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। बायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, दायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ब्याट्री।"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। बायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)। दायाँ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ब्याट्री।"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"कनेक्ट गरिएको छ (अडियो सेयर गर्न मिल्छ)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"सक्रिय छ (मिडिया मात्र)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"अडियो सेयर गर्न मिल्छ"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"सक्रिय छ (मिडिया मात्र), बायाँ मात्र"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"सक्रिय छ (मिडिया मात्र), दायाँ मात्र"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"सक्रिय छ (मिडिया मात्र), बायाँ र दायाँ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयरले बढाएको रेन्डरिङ"</string>
     <string name="media_category" msgid="8122076702526144053">"मिडिया"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"अनुगमन गरिँदै छ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड अन गर्नुहोस्"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"एपले मुख्य थ्रेडमा लामा गतिविधि गर्दा स्क्रिन फ्ल्यास गर्नुहोस्"</string>
     <string name="pointer_location" msgid="7516929526199520173">"पोइन्टरको स्थान"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView कार्यान्वयन"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView कार्यान्वयन सेट गर्नुहोस्"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"यो छनोट अब मान्य छैन। फेरि प्रयास गर्नुहोस्।"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"चित्र रङ्ग मोड"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB प्रयोग गर्नुहोस्"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"अफ गरिएको छ"</string>
@@ -657,8 +685,8 @@
     <string name="add_guest_failed" msgid="8074548434469843443">"नयाँ अतिथि बनाउन सकिएन"</string>
     <string name="user_nickname" msgid="262624187455825083">"उपनाम"</string>
     <string name="edit_user_info_message" msgid="6677556031419002895">"यो डिभाइस प्रयोग गर्ने सबै जना तपाईंले छनौट गर्ने नाम र फोटो देख्न सक्ने छन्।"</string>
-    <string name="user_add_user" msgid="7876449291500212468">"प्रयोगकर्ता कनेक्ट गर्नुहोस्"</string>
-    <string name="guest_new_guest" msgid="3482026122932643557">"अतिथि कनेक्ट गर्नुहोस्"</string>
+    <string name="user_add_user" msgid="7876449291500212468">"प्रयोगकर्ता थप्नुहोस्"</string>
+    <string name="guest_new_guest" msgid="3482026122932643557">"अतिथि थप्नुहोस्"</string>
     <string name="guest_exit_guest" msgid="5908239569510734136">"अथिति हटाउनुहोस्"</string>
     <string name="guest_reset_guest" msgid="6110013010356013758">"अतिथि सत्र रिसेट गर्नुहोस्"</string>
     <string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"अतिथिका रूपमा ब्राउज गर्ने सेसन रिसेट गर्ने हो?"</string>
diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml
index 12c9551..669326a 100644
--- a/packages/SettingsLib/res/values-nl/arrays.xml
+++ b/packages/SettingsLib/res/values-nl/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Alleen apparaatscherm (standaard)"</item>
+    <item msgid="9161645858025071955">"Extern scherm"</item>
+    <item msgid="23651860565814477">"Laatste aanraking van statusbalk"</item>
+    <item msgid="7521112827893653392">"Op focus gebaseerd"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Alleen paneel tonen op apparaatscherm"</item>
+    <item msgid="1955398604822147783">"Venster tonen op één extern scherm"</item>
+    <item msgid="391477482416751568">"Venster tonen op scherm waarop de laatst interactie met de statusbalk was"</item>
+    <item msgid="1746820128097981528">"Venster tonen op laatste gefocuste scherm"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 481479e..6dfcc7b 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Kan omgeving niet updaten"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Actief (alleen media). Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Actief (alleen media), L: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Verbonden (ondersteunt audio delen), batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Verbonden (ondersteunt audio delen), L: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Verbonden (ondersteunt audio delen). Links: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Verbonden (ondersteunt audio delen). Rechts: batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Verbonden (ondersteunt audio delen)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Actief (alleen media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ondersteunt audio delen"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Actief (alleen media), alleen links"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Actief (alleen media), alleen rechts"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Actief (alleen media), links en rechts"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Rendering met hardwareversnelling"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Controle"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strikte modus staat aan"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Knipperend scherm bij lange bewerkingen door apps"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Cursorlocatie"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementatie"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-implementatie instellen"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Deze keuze is niet meer geldig. Probeer het opnieuw."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Kleurenmodus voor afbeeldingen"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB gebruiken"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Uitgezet"</string>
diff --git a/packages/SettingsLib/res/values-or/arrays.xml b/packages/SettingsLib/res/values-or/arrays.xml
index 9782303..3b906c4 100644
--- a/packages/SettingsLib/res/values-or/arrays.xml
+++ b/packages/SettingsLib/res/values-or/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"କେବଳ ଡିଭାଇସ ଡିସପ୍ଲେ (ଡିଫଲ୍ଟ)"</item>
+    <item msgid="9161645858025071955">"ଏକ୍ସଟର୍ନଲ ଡିସପ୍ଲେ"</item>
+    <item msgid="23651860565814477">"ନବୀନତମ ଷ୍ଟାଟସ ବାର ଟଚ"</item>
+    <item msgid="7521112827893653392">"ଫୋକସ-ଆଧାରିତ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"କେବଳ ଡିଭାଇସରେ ଡିସପ୍ଲେ ସେଡ ଦେଖାନ୍ତୁ"</item>
+    <item msgid="1955398604822147783">"ସିଙ୍ଗଲ ଏକ୍ସଟର୍ନଲ ଡିସପ୍ଲେରେ ସେଡ ଦେଖାନ୍ତୁ"</item>
+    <item msgid="391477482416751568">"ଡିସପ୍ଲେରେ ଏପରି ସେଡ ଦେଖାନ୍ତୁ ଯାହା ସହିତ ଏହାର ଷ୍ଟାଟସ ବାର ଶେଷ ଥର ପାଇଁ ଇଣ୍ଟରାକ୍ଟ ହୋଇଛି"</item>
+    <item msgid="1746820128097981528">"ଫୋକସ କରାଯାଇଥିବା ଗତ ଡିସପ୍ଲେରେ ସେଡ ଦେଖାନ୍ତୁ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index bcde4e9..44c819c 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ପରିପାର୍ଶ୍ୱକୁ ଅପଡେଟ କରାଯାଇପାରିଲା ନାହିଁ"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)। ବାମ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ଡାହାଣ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ବେଟେରୀ।"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)। ବାମ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ଡାହାଣ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ବେଟେରୀ।"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)। ବାମ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ)। ଡାହାଣ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବେଟେରୀ।"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"କନେକ୍ଟ କରାଯାଇଛି (ଅଡିଓ ସେୟାରିଂକୁ ସମର୍ଥନ କରେ)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ଅଡିଓ ସେୟାରିଂକୁ ସପୋର୍ଟ କରେ"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), କେବଳ ବାମ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), କେବଳ ଡାହାଣ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ସକ୍ରିୟ (କେବଳ ମିଡିଆ), ବାମ ଏବଂ ଡାହାଣ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ହାର୍ଡୱେର୍‌ ଆକ୍ସଲରେଟେଡ୍ ରେଣ୍ଡରିଙ୍ଗ"</string>
     <string name="media_category" msgid="8122076702526144053">"ମିଡିଆ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"ମନିଟରିଙ୍ଗ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"କଡ଼ା ମୋଡ୍ ସକ୍ଷମ କରାଯାଇଛି"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ମୁଖ୍ୟ ଥ୍ରେଡ୍‌ରେ ଆପ୍‌ ଦୀର୍ଘ ସମୟ କାର୍ଯ୍ୟ କଲେ ସ୍କ୍ରୀନ୍‌ ଫ୍ଲାଶ୍ କରନ୍ତୁ"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ପଏଣ୍ଟର୍‌ ଲୋକେସନ୍‌"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"ୱେବ୍‌ଭ୍ୟୁ ପ୍ରୟୋଗ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView କାର୍ଯ୍ୟକାରିତାକୁ ସେଟ୍‍ କରନ୍ତୁ"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ଏହି ପସନ୍ଦ ଆଉ ମାନ୍ୟ ନାହିଁ। ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ପିକ୍‌ଚର୍‌ ରଙ୍ଗ ମୋଡ୍"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ବ୍ୟବହାର କରନ୍ତୁ"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ଅକ୍ଷମ ହୋଇଛି"</string>
diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml
index afb85ca..115214f 100644
--- a/packages/SettingsLib/res/values-pa/arrays.xml
+++ b/packages/SettingsLib/res/values-pa/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਦੀ ਡਿਸਪਲੇ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item>
+    <item msgid="9161645858025071955">"ਬਾਹਰੀ ਡਿਸਪਲੇ"</item>
+    <item msgid="23651860565814477">"ਨਵੀਨਤਮ ਸਥਿਤੀ ਪੱਟੀ ਸਪਰਸ਼"</item>
+    <item msgid="7521112827893653392">"ਫੋਕਸ-ਆਧਾਰਿਤ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"ਸਿਰਫ਼ ਡੀਵਾਈਸ ਦੀ ਡਿਸਪਲੇ \'ਤੇ ਸ਼ੇਡ ਦਿਖਾਓ"</item>
+    <item msgid="1955398604822147783">"ਇਕਹਿਰੇ ਬਾਹਰੀ ਡਿਸਪਲੇ \'ਤੇ ਸ਼ੇਡ ਦਿਖਾਓ"</item>
+    <item msgid="391477482416751568">"ਉਸ ਡਿਸਪਲੇ \'ਤੇ ਸ਼ੇਡ ਦਿਖਾਓ ਜਿਸ ਦੀ ਸਥਿਤੀ ਪੱਟੀ ਨਾਲ ਅਖੀਰ ਵਾਰ ਅੰਤਰਕਿਰਿਆ ਕੀਤੀ ਗਈ ਸੀ"</item>
+    <item msgid="1746820128097981528">"ਆਖਰੀ ਵਾਰ ਫੋਕਸ ਕੀਤੇ ਗਏ ਡਿਸਪਲੇ \'ਤੇ ਸ਼ੇਡ ਦਿਖਾਓ"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 821c84e..731c195 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"ਆਲੇ-ਦੁਆਲੇ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)। ਖੱਬੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ਸੱਜੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ਬੈਟਰੀ।"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਖੱਬੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ਸੱਜੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ਬੈਟਰੀ।"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਖੱਬੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)। ਸੱਜੇ ਪਾਸੇ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ।"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"ਕਨੈਕਟ ਕੀਤਾ (ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ਆਡੀਓ ਸਾਂਝਾਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਸਿਰਫ਼ ਖੱਬਾ"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਸਿਰਫ਼ ਸੱਜਾ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ਕਿਰਿਆਸ਼ੀਲ (ਸਿਰਫ਼ ਮੀਡੀਆ), ਖੱਬਾ ਅਤੇ ਸੱਜਾ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ਹਾਰਡਵੇਅਰ ਐਕਸੈੱਲਰੇਟਿਡ ਰੈਂਡਰਿੰਗ"</string>
     <string name="media_category" msgid="8122076702526144053">"ਮੀਡੀਆ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"ਨਿਰੀਖਣ ਕਰਨਾ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"ਸਟ੍ਰਿਕਟ ਮੋਡ ਚਾਲੂ ਹੈ"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ਐਪਾਂ ਵੱਲੋਂ ਮੁੱਖ ਥ੍ਰੈੱਡ \'ਤੇ ਲੰਬੀਆਂ ਕਾਰਵਾਈਆਂ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ ਫਲੈਸ਼ ਕਰੋ"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ਪੁਆਇੰਟਰ ਟਿਕਾਣਾ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ਅਮਲੀਕਰਨ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ਅਮਲੀਕਰਨ ਸੈੱਟ ਕਰੋ"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ਇਹ ਚੋਣ ਹੁਣ ਵੈਧ ਨਹੀਂ ਹੈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"ਤਸਵੀਰ ਰੰਗ ਮੋਡ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ਵਰਤੋਂ ਕਰੋ"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ਬੰਦ ਹੈ"</string>
diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml
index 59791c0..6daf1b2 100644
--- a/packages/SettingsLib/res/values-pl/arrays.xml
+++ b/packages/SettingsLib/res/values-pl/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Tylko wyświetlanie na urządzeniu (domyślnie)"</item>
+    <item msgid="9161645858025071955">"Wyświetlacz zewnętrzny"</item>
+    <item msgid="23651860565814477">"Ostatnie dotknięcie paska stanu"</item>
+    <item msgid="7521112827893653392">"Na podstawie aktywnego wyświetlacza"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Pokaż cień tylko na wyświetlaczu urządzenia"</item>
+    <item msgid="1955398604822147783">"Pokazuj cień na pojedynczym wyświetlaczu zewnętrznym"</item>
+    <item msgid="391477482416751568">"Pokazuj cień na wyświetlaczu, na którym ostatnio nastąpiła interakcja z paskiem stanu"</item>
+    <item msgid="1746820128097981528">"Pokazuj cień na ostatnim aktywnym wyświetlaczu"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 9f6eb4c..b9adae2 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nie udało się zaktualizować otoczenia"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktywne (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktywne (tylko multimedia), lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Połączone (obsługa udostępniania dźwięku), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Połączone (obsługa udostępniania dźwięku), lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Połączone (obsługa udostępniania dźwięku). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Połączone (obsługa udostępniania dźwięku). Prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Połączone (obsługa udostępniania dźwięku)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktywne (tylko multimedia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Obsługa udostępniania dźwięku"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktywne (tylko multimedia), tylko lewa"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktywne (tylko multimedia), tylko prawa"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktywne (tylko multimedia), lewa i prawa"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Sprzętowa akceleracja renderowania"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorowanie"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Tryb ścisły włączony"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Miganie ekranu podczas długich operacji w wątku głównym"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokalizacja wskaźnika"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacja WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ustaw implementację WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ta opcja nie jest już obsługiwana. Spróbuj ponownie."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Tryb kolorów obrazu"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Użyj sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Wyłączone"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 72f25be..5b3bb06 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o som ambiente"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas mídia). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (aceita compartilhamento de áudio). Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (aceita compartilhamento de áudio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas mídia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Com suporte ao compartilhamento de áudio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas mídia), apenas esquerdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas mídia), somente direito"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas mídia), esquerdo e direito"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderização acelerada por hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Mídia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoramento"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo restrito ativado"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Piscar tela se apps demorarem no processo principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Localização do cursor"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar implementação do WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção não é mais válida. Tente novamente."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index d09caad..e6b343a 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o ambiente"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas para multimédia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas para multimédia). E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ligado (suporta partilha de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ligado (suporta partilha de áudio). E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Ligado (suporta a partilha de áudio). Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ligado (suporta a partilha de áudio). Direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ligado (suporta a partilha de áudio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas para multimédia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Suporta partilha de áudio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas para multimédia), apenas esquerdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas para multimédia), apenas direito"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas para multimédia), esquerdo e direito"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Conversão acelerada de hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimédia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorização"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo rigoroso ativado"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Piscar ecrã se app fazem oper. prolong. no tópico princ."</string>
     <string name="pointer_location" msgid="7516929526199520173">"Localização do ponteiro"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Definir implementação WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção já não é válida. Tente novamente."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 72f25be..5b3bb06 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Não foi possível atualizar o som ambiente"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Ativo (apenas mídia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Ativo (apenas mídia). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectado (aceita compartilhamento de áudio). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria. Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectado (aceita compartilhamento de áudio). Lado esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectado (aceita compartilhamento de áudio). Lado direito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectado (aceita compartilhamento de áudio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Ativo (apenas mídia)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Com suporte ao compartilhamento de áudio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Ativo (apenas mídia), apenas esquerdo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Ativo (apenas mídia), somente direito"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Ativo (apenas mídia), esquerdo e direito"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Renderização acelerada por hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Mídia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoramento"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modo restrito ativado"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Piscar tela se apps demorarem no processo principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Localização do cursor"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Configurar implementação do WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opção não é mais válida. Tente novamente."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modo de cor da imagem"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Usar sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Desativado"</string>
diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml
index 8bfeb70..edaf788 100644
--- a/packages/SettingsLib/res/values-ro/arrays.xml
+++ b/packages/SettingsLib/res/values-ro/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Numai pe ecranul dispozitivului (prestabilit)"</item>
+    <item msgid="9161645858025071955">"Ecran extern"</item>
+    <item msgid="23651860565814477">"Cea mai recentă atingere a barei de stare"</item>
+    <item msgid="7521112827893653392">"În funcție de focalizare"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Afișează umbra doar pe ecranul dispozitivului"</item>
+    <item msgid="1955398604822147783">"Afișează umbra pe un singur ecran extern"</item>
+    <item msgid="391477482416751568">"Afișează umbra pe ecranul pe care s-a interacționat ultima dată cu bara de stare"</item>
+    <item msgid="1746820128097981528">"Afișează umbra pe ultimul ecran focalizat"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 26fdce8..13c9032 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nu s-a putut actualiza zona din jur"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Activ (numai pentru conținut media). Nivelul bateriei <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Activ (numai pentru conținut media): nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Conectat (acceptă permiterea accesului la audio), nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei din stânga: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Conectat (acceptă permiterea accesului la audio). Nivelul bateriei din dreapta: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Conectat (acceptă permiterea accesului la audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Activ (numai pentru conținut media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Acceptă permiterea accesului la audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Activ (numai pentru conținut media), numai stânga"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Activ (numai pentru conținut media), numai dreapta"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Activ (numai pentru conținut media), stânga și dreapta"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Redare accelerată hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorizare"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Modul Strict activat"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Iluminare intermitentă la operații lungi pe firul principal"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Locația indicatorului"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementare WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Setează implementarea WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Această opțiune nu mai este validă. Încearcă din nou."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modul de culori pentru imagini"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Folosește sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Dezactivat"</string>
diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml
index 52b2549..a31168e 100644
--- a/packages/SettingsLib/res/values-ru/arrays.xml
+++ b/packages/SettingsLib/res/values-ru/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Только экран устройства (по умолчанию)"</item>
+    <item msgid="9161645858025071955">"Внешний дисплей"</item>
+    <item msgid="23651860565814477">"Последнее нажатие на строку состояния"</item>
+    <item msgid="7521112827893653392">"Последняя активность"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Показывать тень только на экране устройства"</item>
+    <item msgid="1955398604822147783">"Показывать панель уведомлений на единственном внешнем дисплее"</item>
+    <item msgid="391477482416751568">"Показывать панель уведомлений на дисплее, со строкой состояния которого пользователь взаимодействовал в последний раз"</item>
+    <item msgid="1746820128097981528">"Показывать панель уведомлений на дисплее, на который пользователь перешел в последний раз"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index bf92e20..831623d 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не удалось отрегулировать окружающие звуки."</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Используется (только для медиа), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Используется (только для медиа), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (Л), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (П)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (Л), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (П)."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (Л)."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Подключено (поддерживается отправка аудио), заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (П)."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Подключено (поддерживается отправка аудио)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Используется (только для медиа)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Поддерживается отправка аудио"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Используется (только для медиа), только левый"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Используется (только для медиа), правый наушник"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Используется (только для медиа), левый и правый наушники"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Аппаратное ускорение отрисовки"</string>
     <string name="media_category" msgid="8122076702526144053">"Мультимедиа"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Мониторинг"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Строгий режим"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Подсвечивать экран во время длительных операций"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Место касания"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Сервис WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Настройки сервиса WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Вариант недействителен. Повторите попытку."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Цветовой режим"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Использовать sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Отключено"</string>
diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml
index 66f1ba7..f9e9ae1 100644
--- a/packages/SettingsLib/res/values-si/arrays.xml
+++ b/packages/SettingsLib/res/values-si/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"උපාංග සංදර්ශකය පමණි (පෙරනිමි)"</item>
+    <item msgid="9161645858025071955">"බාහිර සංදර්ශකය"</item>
+    <item msgid="23651860565814477">"නවතම තත්ත්ව තීරු ස්පර්ශය"</item>
+    <item msgid="7521112827893653392">"නාභිගත කිරීම-පාදක"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"උපාංග සංදර්ශකයේ පමණක් සෙවන පෙන්වන්න"</item>
+    <item msgid="1955398604822147783">"තනි බාහිර සංදර්ශකය මත වැස්ම පෙන්වන්න"</item>
+    <item msgid="391477482416751568">"තත්ත්ව තීරුව අවසන් වරට අන්තර්ක්‍රියා කළ වැස්ම දර්ශනයේ පෙන්වන්න."</item>
+    <item msgid="1746820128097981528">"අවසන් වරට නාභිගත කළ සංදර්ශකයේ වැස්ම පෙන්වන්න"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"නාභිගත කළ_සංදර්ශකය"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 94e1ed4..dcfb914 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"වටපිටාව යාවත්කාලීන කළ නොහැකි විය"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ක්‍රියාත්මකයි (මාධ්‍ය පමණයි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ක්‍රියාත්මකයි (මාධ්‍ය පමණයි), බැටරිය ව: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ද: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"සම්බන්‍ධයි (ශ්‍රව්‍ය බෙදා ගැනීමට සහය දක්වයි). බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"සම්බන්‍ධයි (ශ්‍රව්‍ය බෙදා ගැනීමට සහය දක්වයි). බැටරිය ව: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ද: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"සම්බන්‍ධයි (ශ්‍රව්‍ය බෙදා ගැනීමට සහය දක්වයි). වම: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"සම්බන්‍ධයි (ශ්‍රව්‍ය බෙදා ගැනීමට සහය දක්වයි). දකුණ: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"සම්බන්‍ධයි (ශ්‍රව්‍ය බෙදා ගැනීමට සහය දක්වයි)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"සක්‍රිය (මාධ්‍ය පමණි)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ශ්‍රව්‍ය බෙදා ගැනීම සහය දක්වයි"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"සක්‍රිය (මාධ්‍ය පමණි), වම පමණි"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"සක්‍රිය (මාධ්‍ය පමණි), දකුණ පමණි"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"සක්‍රිය (මාධ්‍ය පමණි), වම සහ දකුණ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"දෘඩාංග වේගය වැඩි කළ පිරිනැමීම"</string>
     <string name="media_category" msgid="8122076702526144053">"මාධ්‍ය"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"නිරීක්ෂණය"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"තදබල ආකාරය සබල කිරීම"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"මූලික පොටේ යෙදුම්, දිගු මෙහෙයුම් කරන විට තිරය ෆ්ලෑෂ් කරන්න"</string>
     <string name="pointer_location" msgid="7516929526199520173">"සූචක පිහිටීම"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ක්‍රියාත්මක කිරීම"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ක්‍රියාත්මක කිරීම සකසන්න"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"මෙම තෝරා ගැනීම තව දුරටත් වලංගු නැත. නැවත උත්සාහ කරන්න."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"පින්තූර වර්ණ ප්‍රකාරය"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB භාවිතා කරන්න"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"අබලයි"</string>
diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml
index f8363cd..2d39d3a 100644
--- a/packages/SettingsLib/res/values-sk/arrays.xml
+++ b/packages/SettingsLib/res/values-sk/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Iba obrazovka zariadenia (predvolené)"</item>
+    <item msgid="9161645858025071955">"Externá obrazovka"</item>
+    <item msgid="23651860565814477">"Posledné klepnutie na stavový riadok"</item>
+    <item msgid="7521112827893653392">"Na základe označenia"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Zobraziť panel iba na obrazovke zariadenia"</item>
+    <item msgid="1955398604822147783">"Zobraziť panel na jednej externej obrazovke"</item>
+    <item msgid="391477482416751568">"Zobraziť panel na obrazovke, na ktorej došlo naposledy k interakcii so stavovým riadkom"</item>
+    <item msgid="1746820128097981528">"Zobraziť panel na poslednej označenej obrazovke"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 6170ac5..86e8274 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolie sa nepodarilo aktualizovať"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktívne (iba médiá). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktívne (iba médiá). Ľ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batérie, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batérie."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Pripojené (podporuje zdieľanie zvuku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Pripojené (podporuje zdieľanie zvuku). Ľ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batérie."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Pripojené (podporuje zdieľanie zvuku). Ľavá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Pripojené (podporuje zdieľanie zvuku). Pravá strana: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Pripojené (podporuje zdieľanie zvuku)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktívne (iba médiá)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podporuje zdieľanie zvuku"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktívne (iba médiá), iba ľavá strana"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktívne (iba médiá), iba pravá strana"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktívne (iba médiá), ľavá aj pravá strana"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardvérom zrýchlené vykresľovanie"</string>
     <string name="media_category" msgid="8122076702526144053">"Médiá"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorovanie"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Povoliť prísny režim"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Blikať pri dlhých operáciách hlavného vlákna"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Umiestnenie kurzora"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementácia WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastaviť implementáciu WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Táto voľba už nie je platná. Skúste to znova."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Farebný režim obrázka"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Použije sa sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Vypnuté"</string>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
index 2a128ef..498224a 100644
--- a/packages/SettingsLib/res/values-sl/arrays.xml
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Prikaz samo v napravi (privzeto)"</item>
+    <item msgid="9161645858025071955">"Zunanji zaslon"</item>
+    <item msgid="23651860565814477">"Zadnji dotik vrstice stanja"</item>
+    <item msgid="7521112827893653392">"Na podlagi fokusa"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Prikaz podokna samo na zaslonu naprave"</item>
+    <item msgid="1955398604822147783">"Prikaz podokna na enem zunanjem zaslonu"</item>
+    <item msgid="391477482416751568">"Prikaz podokna na zaslonu, na katerem je bila izvedena zadnja interakcija z vrstico stanja"</item>
+    <item msgid="1746820128097981528">"Prikaz podokna na zadnjem zaslonu s fokusom"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 39b61d9..28ae8e1 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Okolice ni bilo mogoče posodobiti"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktivno (samo predstavnost). Baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktivno (samo predstavnost), baterija – L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Povezano (podpira deljenje zvoka), baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Povezano (podpira deljenje zvoka), baterija – L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Povezano (podpira deljenje zvoka). Levo – baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Povezano (podpira deljenje zvoka). Desno – baterija: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Povezano (podpira deljenje zvoka)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktivno (samo predstavnost)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Podpira deljenje zvoka"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktivno (samo predstavnost), samo levo"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktivno (samo predstavnost), samo desno"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktivno (samo predstavnost), levo in desno"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Upodabljanje s strojnim pospeševanjem"</string>
     <string name="media_category" msgid="8122076702526144053">"Predstavnost"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Spremljanje"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strog način je omogočen"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Osveži zaslon pri dolgih postopkih v glavni niti."</string>
     <string name="pointer_location" msgid="7516929526199520173">"Mesto kazalca"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Izvedba spletnega pogleda"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastavitev izvedbe spletnega pogleda"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ta izbira ni več veljavna. Poskusite znova."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Način barv slike"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Uporaba sRGB-ja"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogočeno"</string>
diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml
index 3b0994a..98429ce 100644
--- a/packages/SettingsLib/res/values-sq/arrays.xml
+++ b/packages/SettingsLib/res/values-sq/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Vetëm ekrani i pajisjes (parazgjedhja)"</item>
+    <item msgid="9161645858025071955">"Ekrani i jashtëm"</item>
+    <item msgid="23651860565814477">"Prekja e fundit e shiritit të statusit"</item>
+    <item msgid="7521112827893653392">"Bazuar te fokusi"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Shfaq hijen vetëm në ekranin e pajisjes"</item>
+    <item msgid="1955398604822147783">"Shfaq panelin në një ekran të vetëm të jashtëm"</item>
+    <item msgid="391477482416751568">"Shfaq panelin në ekranin me shiritin e statusit të të cilit është ndërvepruar së fundi"</item>
+    <item msgid="1746820128097981528">"Shfaq panelin në ekranin e fokusuar së fundi"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 2d2c02b..4e6ec9f 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ambienti rrethues nuk mund të përditësohej"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (vetëm për media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (vetëm për media). Majtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> bateri, djathtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> bateri."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Lidhur (mbështet ndarjen e audios). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Lidhur (mbështet ndarjen e audios). Majtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> bateri, djathtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> bateri."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Lidhur (mbështet ndarjen e audios). Majtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Lidhur (mbështet ndarjen e audios). Djathtas: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> bateri."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Lidhur (mbështet ndarjen e audios)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (vetëm për media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Mbështet ndarjen e audios"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (vetëm për media), vetëm majtas"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (vetëm për media), vetëm djathtas"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (vetëm për media), majtas dhe djathtas"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Interpretimi i përshpejtuar i harduerit"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitorimi"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Aktivizo modalitetin e rreptë"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ndriço ekranin kur aplikacionet kryejnë operacione të gjata teksa bashkëveprojnë"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Vendndodhja e treguesit"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Zbatimi i WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Cakto zbatimin e WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Kjo zgjedhje nuk është më e vlefshme. Provo përsëri."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Modalitti i ngjyrave të figurës"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Përdor sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Çaktivizuar"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index c053094..96924b9 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ажурирање окружења није успело"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активно (само за медије). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активно (само за медије). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Повезано (подржава дељење звука), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Повезано (подржава дељење звука), лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Повезано (подржава дељење звука). Лево: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Повезано (подржава дељење звука). Десно: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерије."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Повезано (подржава дељење звука)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активан (само за медије)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Подржава дељење звука"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активан (само за медије), само лево"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активан (само за медије), само десно"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активан (само за медије), лево и десно"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверски убрзано приказивање"</string>
     <string name="media_category" msgid="8122076702526144053">"Медији"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Надгледање"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Омогућен је строги режим"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Екран трепери када апликације обављају дуге операције на главној нити"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Локација показивача"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Примена WebView-а"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Подесите примену WebView-а"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Овај избор више није важећи. Пробајте поново."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Режим боја слика"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Користи sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Онемогућено је"</string>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
index 8a77fdd..1a8c9d8 100644
--- a/packages/SettingsLib/res/values-sv/arrays.xml
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -295,7 +295,7 @@
     <item msgid="7521112827893653392">"Fokusbaserad"</item>
   </string-array>
   <string-array name="shade_display_awareness_summaries">
-    <item msgid="2964753205732912921">"Visa endast skugga på enhetens skärm"</item>
+    <item msgid="2964753205732912921">"Visa panelen endast på enhetens skärm"</item>
     <item msgid="1955398604822147783">"Visa skugga på en enda extern skärm"</item>
     <item msgid="391477482416751568">"Visa skugga på skärmen där statusfältet senast interagerades med"</item>
     <item msgid="1746820128097981528">"Visa skugga på skärmen som sist var i fokus"</item>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index e0897cb..3c7aff6 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Det gick inte att uppdatera omgivningsläget"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktiv (endast media). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktiv (endast media). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ansluten (ljuddelning stöds). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ansluten (ljuddelning stöds). V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Ansluten (ljuddelning stöds). Vänster: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ansluten (ljuddelning stöds). Höger: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ansluten (ljuddelning stöds)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktiv (endast media)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ljuddelning stöds"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktiv (endast media), endast vänster"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktiv (endast media), endast höger"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktiv (endast media), vänster och höger"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hårdvaruaccelererad rendering"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Övervakning"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Strikt läge aktiverat"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Tänd skärm när app gör omfattande åtgärd på huvudtråd"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Pekarens plats"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ange WebView-implementering"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Det här alternativet är inte längre giltigt. Försök igen."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Färgläge för bilder"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Använd sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Inaktiverad"</string>
diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml
index 652c358..2ec6256 100644
--- a/packages/SettingsLib/res/values-sw/arrays.xml
+++ b/packages/SettingsLib/res/values-sw/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Kwenye skrini ya kifaa pekee (Chaguomsingi)"</item>
+    <item msgid="9161645858025071955">"Skrini ya nje"</item>
+    <item msgid="23651860565814477">"Matumizi ya hivi majuzi zaidi ya sehemu ya arifa"</item>
+    <item msgid="7521112827893653392">"Inayoangaziwa"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Onyesha kiwango kwenye skrini ya kifaa pekee"</item>
+    <item msgid="1955398604822147783">"Onyesha kiwango kwenye skrini moja ya nje"</item>
+    <item msgid="391477482416751568">"Onyesha kiwango kwenye skrini ambayo sehemu yake ya arifa ilitumiwa hivi majuzi"</item>
+    <item msgid="1746820128097981528">"Onyesha kiwango kwenye skrini iliyoangaziwa mwisho kabisa"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index f12597f..4f520b4 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Imeshindwa kusasisha mazingira"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Inatumika (maudhui pekee). Chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Inatumika (maudhui pekee), Kushoto: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Kulia: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Chaji imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Kushoto: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Kulia: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Kushoto: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Imeunganishwa (inaweza kutumia kipengele cha kusikiliza pamoja). Kulia: chaji ya betri imefika <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Imeunganishwa (inaweza kusikiliza pamoja)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Inatumika (maudhui pekee)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Inaweza kutumia kipengele cha kusikiliza pamoja"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Inatumika (maudhui pekee), kushoto pekee"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Inatumika (maudhui pekee), kulia pekee"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Inatumika (maudhui pekee), kushoto na kulia"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Utekelezaji wa maunzi ulioharakishwa"</string>
     <string name="media_category" msgid="8122076702526144053">"Maudhui"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Ufuatiliaji"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Hali makinifu imewashwa"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Fanya skrini imemeteke programu zinapoendeleza shughuli ndefu kwenye skrini kuu"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Mahali pa kiashiria"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Utekelezaji wa WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Weka utekelezaji wa WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Chaguo hili halipo tena. Jaribu tena."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Hali ya rangi ya picha"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Tumia sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Imezimwa"</string>
diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml
index 503cd8f..f42e476 100644
--- a/packages/SettingsLib/res/values-ta/arrays.xml
+++ b/packages/SettingsLib/res/values-ta/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"சாதனக் காட்சி மட்டும் (இயல்பு)"</item>
+    <item msgid="9161645858025071955">"வெளிப்புறக் காட்சி"</item>
+    <item msgid="23651860565814477">"சமீபத்திய நிலைப் பட்டித் தொடுகை"</item>
+    <item msgid="7521112827893653392">"ஃபோகஸ் அடிப்படையிலானது"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"சாதனக் காட்சியில் மட்டும் ஷேடைக் காட்டும்"</item>
+    <item msgid="1955398604822147783">"ஒற்றை வெளிப்புறக் காட்சியில் ஷேடைக் காட்டும்"</item>
+    <item msgid="391477482416751568">"கடைசியாக நிலைப் பட்டி தொடர்புகொண்ட ஷேடைக் காட்சியில் காட்டும்"</item>
+    <item msgid="1746820128097981528">"கடைசியாக ஃபோகஸ் செய்யப்பட்ட காட்சியில் ஷேடைக் காட்டும்"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 1bd2c34..aa34584 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"சுற்றுப்புறங்களைப் புதுப்பிக்க முடியவில்லை"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"செயலிலுள்ளது (மீடியா மட்டும்). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"செயலிலுள்ளது (மீடியா மட்டும்). இடது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, வலது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). இடது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, வலது பேட்டரி: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). இடது: - <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது). வலது: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> பேட்டரி."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"இணைக்கப்பட்டுள்ளது (ஆடியோ பகிர்வை ஆதரிக்கிறது)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"செயலிலுள்ளது (மீடியா மட்டும்)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ஆடியோ பகிர்வை ஆதரிக்கிறது"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"செயலிலுள்ளது (மீடியா மட்டும்), இடதுபுறம் மட்டும்"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"செயலிலுள்ளது (மீடியா மட்டும்), வலதுபுறம் மட்டும்"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"செயலிலுள்ளது (மீடியா மட்டும்), இடதுபுறம் மற்றும் வலதுபுறம்"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"வன்பொருள் முடுக்கத்துடன் கூடிய காட்சியாக்கம்"</string>
     <string name="media_category" msgid="8122076702526144053">"மீடியா"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"கண்காணித்தல்"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"நிலையான பயன்முறை இயக்கப்பட்டது"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"முக்கியத் தொடரிழையில் நீண்ட நேரம் செயல்படும்போது திரையைக் காட்சிப்படுத்தும்"</string>
     <string name="pointer_location" msgid="7516929526199520173">"குறிப்பான் இடம்"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView செயல்படுத்தல்"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView செயல்படுத்தலை அமை"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"இனி இந்தத் தேர்வைப் பயன்படுத்த முடியாது. மீண்டும் முயலவும்."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"படத்தின் வண்ணப் பயன்முறை"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGBஐப் பயன்படுத்தும்"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"முடக்கப்பட்டது"</string>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index f72e4cd..a4e50d0 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"పరికర డిస్‌ప్లేలో మాత్రమే (ఆటోమేటిక్ సెట్టింగ్)"</item>
+    <item msgid="9161645858025071955">"ఎక్స్‌టర్నల్ డిస్‌ప్లే"</item>
+    <item msgid="23651860565814477">"తాకి ఉపయోగించగల లేటెస్ట్ స్టేటస్ బార్"</item>
+    <item msgid="7521112827893653392">"యాక్టివ్‌గా ఉన్నవి"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"షేడ్‌ను పరికర డిస్‌ప్లేలో మాత్రమే చూపండి"</item>
+    <item msgid="1955398604822147783">"ఒక ఎక్స్‌టర్నల్ డిస్‌ప్లేలో షేడ్‌ను చూపండి"</item>
+    <item msgid="391477482416751568">"స్టేటస్ బార్‌తో చివరిగా ఇంటరాక్ట్ అయిన షేడ్‌ను డిస్‌ప్లేలో చూపండి"</item>
+    <item msgid="1746820128097981528">"చివరగా యాక్టివ్‌గా ఉన్న డిస్‌ప్లేలో షేడ్‌ను చూపండి"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 010344f..cded034 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"పరిసరాలను అప్‌డేట్ చేయడం సాధ్యం కాలేదు"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"యాక్టివ్ (మీడియా మాత్రమే). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"యాక్టివ్ (మీడియా మాత్రమే). ఎడమ వైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> బ్యాటరీ, కుడివైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> బ్యాటరీ."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది). ఎడమ వైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> బ్యాటరీ, కుడివైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> బ్యాటరీ."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది). ఎడమ వైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"కనెక్ట్ అయింది (ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది). కుడివైపు: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"కనెక్ట్ చేయబడింది (ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"యాక్టివ్ (మీడియా మాత్రమే)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"ఆడియో షేరింగ్‌కు సపోర్ట్ చేస్తుంది"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"యాక్టివ్ (మీడియా మాత్రమే), ఎడమ వైపు మాత్రమే"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"యాక్టివ్ (మీడియా మాత్రమే), కుడివైపు మాత్రమే"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"యాక్టివ్ (మీడియా మాత్రమే), ఎడమ, కుడివైపు మాత్రమే"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"హార్డ్‌వేర్ యాగ్జిలరేషన్ ఆధారిత రెండరింగ్"</string>
     <string name="media_category" msgid="8122076702526144053">"మీడియా"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"పర్యవేక్షణ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"స్ట్రిక్ట్ మోడ్ ఎనేబుల్డ్"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"యాప్‌లు ప్రధాన థ్రెడ్‌లో సుదీర్ఘ చర్యలు చేసేటప్పుడు స్క్రీన్‌ను ఫ్లాష్ చేయండి"</string>
     <string name="pointer_location" msgid="7516929526199520173">"పాయింటర్ లొకేషన్"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"వెబ్ వీక్షణ అమలు"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"వెబ్ వీక్షణ అమలుని సెట్ చేయండి"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ఈ ఎంపిక ఇప్పుడు లేదు. మళ్లీ ట్రై చేయండి."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"చిత్రం రంగు మోడ్"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ఉపయోగిస్తుంది"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"డిజేబుల్ చేయబడింది"</string>
diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml
index adb274d..ad0f6bc 100644
--- a/packages/SettingsLib/res/values-th/arrays.xml
+++ b/packages/SettingsLib/res/values-th/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"จอแสดงผลของอุปกรณ์เท่านั้น (ค่าเริ่มต้น)"</item>
+    <item msgid="9161645858025071955">"จอแสดงผลภายนอก"</item>
+    <item msgid="23651860565814477">"การแตะแถบสถานะล่าสุด"</item>
+    <item msgid="7521112827893653392">"Focus-based"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"แสดงเฉดสีในจอแสดงผลของอุปกรณ์เท่านั้น"</item>
+    <item msgid="1955398604822147783">"แสดงเฉดสีในจอแสดงผลภายนอกเครื่องเดียว"</item>
+    <item msgid="391477482416751568">"แสดงเฉดสีในจอแสดงผลที่มีการโต้ตอบกับแถบสถานะล่าสุด"</item>
+    <item msgid="1746820128097981528">"แสดงเฉดสีในจอแสดงผลที่โฟกัสล่าสุด"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 9b4d408..eaf256d 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"อัปเดตเสียงแวดล้อมไม่ได้"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"ใช้งานอยู่ (สื่อเท่านั้น) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"ใช้งานอยู่ (สื่อเท่านั้น) แบตเตอรี่ข้างซ้าย: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ข้างขวา: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) แบตเตอรี่ข้างซ้าย: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ข้างขวา: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) ซ้าย: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง) ขวา: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"เชื่อมต่อแล้ว (รองรับการแชร์เสียง)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"ใช้งานอยู่ (สื่อเท่านั้น)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"รองรับการแชร์เสียง"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"ใช้งานอยู่ (สื่อเท่านั้น), ซ้ายเท่านั้น"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"ใช้งานอยู่ (สื่อเท่านั้น), ขวาเท่านั้น"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"ใช้งานอยู่ (สื่อเท่านั้น), ซ้ายและขวา"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"การแสดงผลที่มีการเร่งด้วยฮาร์ดแวร์"</string>
     <string name="media_category" msgid="8122076702526144053">"สื่อ"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"การตรวจสอบ"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"เปิดใช้งานโหมดเข้มงวด"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"กะพริบหน้าจอเมื่อแอปทำงานในเทรดหลักนาน"</string>
     <string name="pointer_location" msgid="7516929526199520173">"ตำแหน่งของตัวชี้"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"การใช้งาน WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ตั้งค่าการใช้งาน WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ตัวเลือกนี้ใช้ไม่ได้อีกต่อไป โปรดลองอีกครั้ง"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"โหมดสีของรูปภาพ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"ใช้ sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"ปิดใช้"</string>
diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml
index 0153375a..b1dd61a 100644
--- a/packages/SettingsLib/res/values-tl/arrays.xml
+++ b/packages/SettingsLib/res/values-tl/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Display ng device lang (Default)"</item>
+    <item msgid="9161645858025071955">"External na display"</item>
+    <item msgid="23651860565814477">"Pinakahuling pagpindot sa status bar"</item>
+    <item msgid="7521112827893653392">"Focus-based"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Ipakita ang shade sa display ng device lang"</item>
+    <item msgid="1955398604822147783">"Ipakita ang shade sa isang external na display"</item>
+    <item msgid="391477482416751568">"Ipakita ang shade sa display kung saan may kamakailang nakipag-ugnayan sa status bar nito"</item>
+    <item msgid="1746820128097981528">"Ipakita ang shade sa pinakahuling na-focus na display"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 4cd2f5f..b6d8d19 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Hindi ma-update ang paligid"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktibo (media lang). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktibo (media lang). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterya."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Nakakonekta (sinusuportahan ang pag-share ng audio), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Nakakonekta (sinusuportahan ang pag-share ng audio). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterya."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Nakakonekta (sinusuportahan ang pag-share ng audio). Kaliwa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Nakakonekta (sinusuportahan ang pag-share ng audio). Kanan: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Nakakonekta (sinusuportahan ang pag-share ng audio)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktibo (media lang)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Sinusuportahan ang pag-share ng audio"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Aktibo (media lang), kaliwa lang"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Aktibo (media lang), kanan lang"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Aktibo (media lang), kaliwa at kanan"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Pag-render na pinapabilis ng hardware"</string>
     <string name="media_category" msgid="8122076702526144053">"Media"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Pagsubaybay"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Enabled ang strict mode"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"I-flash ang screen pag may long ops ang app sa main thread"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Lokasyon ng pointer"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Pagpapatupad sa WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Itakda ang pagpapatupad sa WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Wala nang bisa ang napiling ito. Subukang muli."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Mode ng kulay ng larawan"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Gamitin ang sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Naka-disable"</string>
diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml
index 6fbbb12..04697f2 100644
--- a/packages/SettingsLib/res/values-tr/arrays.xml
+++ b/packages/SettingsLib/res/values-tr/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Yalnızca cihaz ekranı (Varsayılan)"</item>
+    <item msgid="9161645858025071955">"Harici ekran"</item>
+    <item msgid="23651860565814477">"Durum çubuğuyla yapılan en son etkileşim"</item>
+    <item msgid="7521112827893653392">"Odaklanmaya dayalı"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Gölgeyi yalnızca cihaz ekranında göster"</item>
+    <item msgid="1955398604822147783">"Gölgeyi tek bir harici ekranda göster"</item>
+    <item msgid="391477482416751568">"Gölgeyi, durum çubuğuyla en son etkileşim yapılan ekranda göster"</item>
+    <item msgid="1746820128097981528">"Gölgeyi en son odaklanılan ekranda göster"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index c993223..c4cbaf6 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Çevredeki sesler güncellenemedi"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Etkin (yalnızca medya). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Etkin (yalnızca medya). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil seviyesi."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Bağlı (ses paylaşımını destekler). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Bağlı (ses paylaşımını destekler). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil seviyesi."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Bağlı (ses paylaşımını destekler). Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Bağlı (ses paylaşımını destekler). Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pil seviyesi."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Bağlı (ses paylaşımını destekler)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Etkin (yalnızca medya)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Ses paylaşımını destekler"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Etkin (yalnızca medya), yalnızca sol"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Etkin (yalnızca medya), yalnızca sağ"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Etkin (yalnızca medya), sol ve sağ"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Donanım hızlandırmalı oluşturma"</string>
     <string name="media_category" msgid="8122076702526144053">"Medya"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"İzleme"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Yüksek düzey modu etkin"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Uygulamalar ana iş parçacığında uzun işlem yaparken ekranı yanıp söndür"</string>
     <string name="pointer_location" msgid="7516929526199520173">"İşaretçi konumu"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Web Görünümü kullanımı"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Web Görünümü kullanımını ayarla"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu seçenek artık geçerli değil. Tekrar deneyin."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Resim renk modu"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB\'yi kullan"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Devre dışı"</string>
diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml
index a371c9c..569d6f3 100644
--- a/packages/SettingsLib/res/values-uk/arrays.xml
+++ b/packages/SettingsLib/res/values-uk/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Лише екран пристрою (за умовчанням)"</item>
+    <item msgid="9161645858025071955">"Зовнішній дисплей"</item>
+    <item msgid="23651860565814477">"Останнє натискання рядка стану"</item>
+    <item msgid="7521112827893653392">"На основі фокусування"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Показувати панель лише на екрані пристрою"</item>
+    <item msgid="1955398604822147783">"Показувати панель на одному зовнішньому дисплеї"</item>
+    <item msgid="391477482416751568">"Показувати панель на дисплеї, де відбулася остання взаємодія з рядком стану"</item>
+    <item msgid="1746820128097981528">"Показувати панель на останньому активному дисплеї"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index fd1ade6..ecff572 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Не вдалось оновити стан оточення"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Активне з’єднання (лише для мультимедіа). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Активне з’єднання (лише для мультимедіа). Рівень заряду: лівий <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, правий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Підключено (підтримує надсилання аудіо). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Підключено (підтримує надсилання аудіо). Лівий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, правий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> заряду акумулятора."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Підключено (підтримує надсилання аудіо). Лівий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Підключено (підтримує надсилання аудіо). Правий: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Підключено (підтримує надсилання аудіо)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Активно (лише для мультимедіа)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Підтримує надсилання аудіо"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Активно (лише для мультимедіа); лише лівий"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Активно (лише для мультимедіа); лише правий"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Активно (лише для мультимедіа); лівий і правий"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Апаратне прискорення"</string>
     <string name="media_category" msgid="8122076702526144053">"Медіа"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Моніторинг"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Строгий режим увімкнено"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Підсвічувати екран під час довгострокових операцій"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Розташування курсора"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Застосування WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Налаштувати застосування WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ця опція більше не дійсна. Повторіть спробу."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Режим кольору"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Використовувати sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Вимкнено"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 13ffeb1..3407114 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"اطراف کو اپ ڈیٹ نہیں کیا جا سکا"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"فعال (صرف میڈیا)۔ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"‏فعال (صرف میڈیا)۔ L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، ‏R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> بیٹری۔"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"‏منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ ‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"‏منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، ‏R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> بیٹری۔"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ بائيں: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)۔ دائيں: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> بیٹری۔"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"منسلک ہے (آڈیو کے اشتراک کو سپورٹ کرتا ہے)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"فعال (صرف میڈیا)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"آڈیو کے اشتراک کو سپورٹ کرتا ہے"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"فعال (صرف میڈیا)، صرف بائیں"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"فعال (صرف میڈیا)، صرف دائیں"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"فعال (صرف میڈیا)، بائیں اور دائیں"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ہارڈ ویئر کے ذریعے تیز کردہ رینڈرنگ"</string>
     <string name="media_category" msgid="8122076702526144053">"میڈیا"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"مانیٹر کرنا"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"سخت وضع فعال ہے"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"ایپس کے اصل تھریڈ پر طویل اعمال انجام دیتے وقت اسکرین کو فلیش کریں"</string>
     <string name="pointer_location" msgid="7516929526199520173">"پوائنٹر مقام"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"‏WebView کا نفاذ"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"‏WebView کا نفاذ سیٹ کریں"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"یہ انتخاب اب درست نہیں رہا۔ دوبارہ کوشش کریں۔"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"تصویری رنگ موڈ"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"‏sRGB استعمال کریں"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"غیر فعال"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 04bd7fcc..bff7993 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Atrof-muhit yangilanmadi"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Faol (faqat media uchun) Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Faol (faqat media uchun), quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (L), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (R)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ulangan (audio yuborish mumkin), quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ulangan (audio yuborish mumkin), quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> (L), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> (R)"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Ulangan (audio yuborish mumkin). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (chap)."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ulangan (audio yuborish mumkin). Quvvat: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> (oʻng)."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ulangan (audio yuborish mumkin)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Faol (faqat media uchun)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Audio yuborishi mumkin"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Faol (faqat media uchun), faqat chap"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Faol (faqat media uchun), faqat oʻng"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Faol (faqat media uchun), chap va oʻng"</string>
@@ -250,11 +270,11 @@
     <string name="enable_adb" msgid="8072776357237289039">"USB orqali nosozliklarni aniqlash"</string>
     <string name="enable_adb_summary" msgid="3711526030096574316">"USB orqali kompyuterga ulanganda tuzatish rejimi yoqilsin"</string>
     <string name="clear_adb_keys" msgid="3010148733140369917">"USB orqali nosozliklarni tuzatishni taqiqlash"</string>
-    <string name="enable_adb_wireless" msgid="6973226350963971018">"Wi-Fi orqali debagging"</string>
+    <string name="enable_adb_wireless" msgid="6973226350963971018">"Wi-Fi orqali debaging"</string>
     <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Wi‑Fi tarmoqqa ulanganda nosozliklarni aniqlash rejimi"</string>
     <string name="adb_wireless_error" msgid="721958772149779856">"Xato"</string>
-    <string name="adb_wireless_settings" msgid="2295017847215680229">"Wi-Fi orqali debagging"</string>
-    <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Mavjud qurilmalarni koʻrish va ulardan foydalanish uchun Wi-Fi orqali debagging funksiyasini yoqing"</string>
+    <string name="adb_wireless_settings" msgid="2295017847215680229">"Wi-Fi orqali debaging"</string>
+    <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Mavjud qurilmalarni koʻrish va ulardan foydalanish uchun Wi-Fi orqali debaging funksiyasini yoqing"</string>
     <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Qurilmani QR kod orqali ulash"</string>
     <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR kod skaneri yordamida yangi qurilmalarni ulang"</string>
     <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Qurilmani ulanish kodi orqali ulash"</string>
@@ -345,8 +365,8 @@
     <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Modem rejimida apparatli tezlatishdan foydalanish (mavjud bo‘lsa)."</string>
     <string name="adb_warning_title" msgid="7708653449506485728">"USB orqali nosozliklarni tuzatishga ruxsat berilsinmi?"</string>
     <string name="adb_warning_message" msgid="8145270656419669221">"USB orqali nosozliklarni aniqlash faqat dasturlash maqsadlarida yoqiladi. Undan maʼlumotlarni qurilmangiz va kompyuter o‘rtasida ko‘chirish, ilovalarni xabarnomasiz o‘rnatish va jurnal maʼlumotlarini o‘qish uchun foydalaniladi."</string>
-    <string name="adbwifi_warning_title" msgid="727104571653031865">"Wi-Fi orqali debagging uchun ruxsat berilsinmi?"</string>
-    <string name="adbwifi_warning_message" msgid="8005936574322702388">"Wi-Fi orqali debagging faqat dasturlash maqsadlarida yoqiladi. Undan maʼlumotlarni qurilmangiz va kompyuter oʻrtasida koʻchirish, ilovalarni bildirishnomasiz oʻrnatish va jurnal maʼlumotlarini oʻqish uchun foydalaniladi."</string>
+    <string name="adbwifi_warning_title" msgid="727104571653031865">"Wi-Fi orqali debaging uchun ruxsat berilsinmi?"</string>
+    <string name="adbwifi_warning_message" msgid="8005936574322702388">"Wi-Fi orqali debaging faqat dasturlash maqsadlarida yoqiladi. Undan maʼlumotlarni qurilmangiz va kompyuter oʻrtasida koʻchirish, ilovalarni bildirishnomasiz oʻrnatish va jurnal maʼlumotlarini oʻqish uchun foydalaniladi."</string>
     <string name="adb_keys_warning_message" msgid="2968555274488101220">"USB orqali nosozliklarni tuzatishga berilgan ruxsat siz hisobingizga kirgan barcha kompyuterlar uchun bekor qilinsinmi?"</string>
     <string name="dev_settings_warning_title" msgid="8251234890169074553">"Dasturlash sozlamalariga ruxsat berilsinmi?"</string>
     <string name="dev_settings_warning_message" msgid="37741686486073668">"Bu sozlamalar faqat dasturlash maqsadlariga mo‘ljallangan. Shuning uchun, ular qurilmangizga va undagi ilovalariga shikast yetkazib, noto‘g‘ri ishlashiga sabab bo‘lishi mumkin."</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Vizualizatsiyani apparatli tezlatish"</string>
     <string name="media_category" msgid="8122076702526144053">"Multimedia"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Monitoring"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Qat’iy rejim yoqilgan"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Uzun amallar vaqtida ekranni miltillatish"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Kursor joylashuvi"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ta’minotchisi"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ta’minotchisini sozlash"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Bu variant endi yaroqsiz. Qaytadan urining."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Rang rejimi"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ranglaridan foydalanish"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Oʻchiq"</string>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
index 8e4cf53..daddccc 100644
--- a/packages/SettingsLib/res/values-vi/arrays.xml
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Chỉ hiển thị trên thiết bị (Mặc định)"</item>
+    <item msgid="9161645858025071955">"Màn hình ngoài"</item>
+    <item msgid="23651860565814477">"Lần gần đây nhất chạm vào thanh trạng thái"</item>
+    <item msgid="7521112827893653392">"Theo tiêu điểm"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Chỉ hiện ngăn thông báo trên màn hình thiết bị"</item>
+    <item msgid="1955398604822147783">"Hiện ngăn trên một màn hình ngoài"</item>
+    <item msgid="391477482416751568">"Hiện ngăn trên màn hình mà gần đây nhất người dùng đã tương tác với thanh trạng thái của màn hình đó"</item>
+    <item msgid="1746820128097981528">"Hiện ngăn trên màn hình mà gần đây nhất người dùng đã đặt tiêu điểm"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 2763c01..cb0a875a 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Không cập nhật được âm lượng xung quanh"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Đang hoạt động (chỉ phát nội dung đa phương tiện). Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Đang hoạt động (chỉ phát nội dung đa phương tiện). Bên trái: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pin. Bên phải: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pin."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Bên trái: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pin. Bên phải: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pin."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Bên trái: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh). Bên phải: Còn <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> pin."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Đã kết nối (có hỗ trợ tính năng chia sẻ âm thanh)."</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Đang hoạt động (chỉ phát nội dung đa phương tiện)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Hỗ trợ tính năng chia sẻ âm thanh"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Đang hoạt động (chỉ phát nội dung đa phương tiện), chỉ dùng tai nghe bên trái"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Đang hoạt động (chỉ phát nội dung đa phương tiện), chỉ dùng tai nghe bên phải"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Đang hoạt động (chỉ phát nội dung đa phương tiện), đang dùng cả tai nghe bên trái và phải"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Kết xuất có tăng tốc phần cứng"</string>
     <string name="media_category" msgid="8122076702526144053">"Phương tiện"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Giám sát"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Luôn bật chế độ nghiêm ngặt"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Màn hình nháy khi ứng dụng thực hiện các hoạt động dài trên luồng chính"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Vị trí con trỏ"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Triển khai WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Đặt triển khai WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Lựa chọn này không còn hợp lệ nữa. Hãy thử lại."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Chế độ màu của ảnh"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Sử dụng sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Đã tắt"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
index 5c82865..204bccf 100644
--- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"仅设备显示屏(默认)"</item>
+    <item msgid="9161645858025071955">"外接显示屏"</item>
+    <item msgid="23651860565814477">"最近一次触摸状态栏"</item>
+    <item msgid="7521112827893653392">"基于焦点"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"仅在设备显示屏上显示通知栏"</item>
+    <item msgid="1955398604822147783">"在单个外接显示屏上显示通知栏"</item>
+    <item msgid="391477482416751568">"在上次与状态栏互动的显示屏上显示通知栏"</item>
+    <item msgid="1746820128097981528">"在最近一次获得焦点的显示屏上显示通知栏"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 934c525..f13f7d9 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"无法更新周围声音"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"使用中(仅限媒体)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"使用中(仅限媒体)。左侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已连接(支持音频分享)。电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已连接(支持音频分享)。左侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"已连接(支持音频分享)。左侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已连接(支持音频分享)。右侧电池电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已连接(支持音频分享)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"使用中(仅限媒体)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支持音频分享"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"使用中(仅限媒体),仅左侧"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"使用中(仅限媒体),仅右侧"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"使用中(仅限媒体),左侧和右侧"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬件加速渲染"</string>
     <string name="media_category" msgid="8122076702526144053">"媒体"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"监控"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"启用严格模式"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"应用在主线程上执行长时间操作时闪烁屏幕"</string>
     <string name="pointer_location" msgid="7516929526199520173">"指针位置"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 实现"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"设置 WebView 实现"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"此选项已失效,请重试。"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"图片颜色模式"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
index 2e06059..f70b02d 100644
--- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"只限裝置顯示屏 (預設)"</item>
+    <item msgid="9161645858025071955">"外部顯示屏"</item>
+    <item msgid="23651860565814477">"最近一次觸碰狀態列"</item>
+    <item msgid="7521112827893653392">"突顯"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"只在裝置顯示屏上顯示陰影"</item>
+    <item msgid="1955398604822147783">"在單一外接螢幕顯示通知欄"</item>
+    <item msgid="391477482416751568">"在上次使用狀態列的螢幕上顯示通知欄"</item>
+    <item msgid="1746820128097981528">"在最新使用的螢幕顯示通知欄"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 037f531..14976e0 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"無法更新環境聲音"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"啟用 (只限媒體)。<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"啟用 (只限媒體),左側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> 電量,右側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> 電量。"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已連線 (支援音訊分享功能),<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已連線 (支援音訊分享功能),左側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> 電量,右側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> 電量。"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"已連線 (支援音訊分享功能)。左側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已連線 (支援音訊分享功能)。右側:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> 電量。"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已連線 (支援音訊分享功能)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"啟用 (只限媒體)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支援音訊分享功能"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"左側啟用 (只限媒體)"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"右側啟用 (只限媒體)"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"右側同時啟用 (只限媒體)"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬件加速轉譯"</string>
     <string name="media_category" msgid="8122076702526144053">"媒體"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"監控"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"嚴格模式已啟用"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"當應用程式在主執行緒中進行長時間作業時,讓螢幕閃爍"</string>
     <string name="pointer_location" msgid="7516929526199520173">"指標位置"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 設置"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"設定 WebView 設置"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"此選擇已失效,請再試一次。"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"相片顏色模式"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
index 5b48ad4..6ac8ff5 100644
--- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"僅裝置螢幕 (預設)"</item>
+    <item msgid="9161645858025071955">"外接螢幕"</item>
+    <item msgid="23651860565814477">"最近一次觸碰狀態列"</item>
+    <item msgid="7521112827893653392">"使用中的螢幕"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"只在裝置螢幕顯示通知欄"</item>
+    <item msgid="1955398604822147783">"在單一外接螢幕顯示通知欄"</item>
+    <item msgid="391477482416751568">"在上次使用狀態列的螢幕上顯示通知欄"</item>
+    <item msgid="1746820128097981528">"在最新使用的螢幕顯示通知欄"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"預設螢幕"</item>
+    <item msgid="774789415968826925">"任何外接螢幕"</item>
+    <item msgid="7880769915418638436">"最新觸控狀態列"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 0ef65e6..b65cb4f 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"無法更新環境狀態"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"已啟用 (僅限媒體)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"已啟用 (僅限媒體)。左側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"已連線 (支援音訊分享)。電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"已連線 (支援音訊分享)。左側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"已連線 (支援音訊分享)。左側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"已連線 (支援音訊分享)。右側電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>。"</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"已連線 (支援音訊分享)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"啟用 (僅限媒體)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"支援音訊分享"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"左側啟用 (僅限媒體)"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"右側啟用 (僅限媒體)"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"左右側同時啟用 (僅限媒體)"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"硬體加速轉譯"</string>
     <string name="media_category" msgid="8122076702526144053">"媒體"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"監控"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"嚴格模式已啟用"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"當應用程式在主執行緒中進行長時間作業時,讓螢幕閃爍"</string>
     <string name="pointer_location" msgid="7516929526199520173">"指標位置"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 實作"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"設定 WebView 實作"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"這個選項已失效,請再試一次。"</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"螢幕色彩模式"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"使用 sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"已停用"</string>
diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml
index 1a61f8b..25f9592 100644
--- a/packages/SettingsLib/res/values-zu/arrays.xml
+++ b/packages/SettingsLib/res/values-zu/arrays.xml
@@ -288,10 +288,22 @@
     <item msgid="3753634915787796632">"2"</item>
     <item msgid="4779928470672877922">"3"</item>
   </string-array>
-    <!-- no translation found for shade_display_awareness_entries:2 (23651860565814477) -->
-    <!-- no translation found for shade_display_awareness_entries:3 (7521112827893653392) -->
-    <!-- no translation found for shade_display_awareness_summaries:1 (1955398604822147783) -->
-    <!-- no translation found for shade_display_awareness_summaries:2 (391477482416751568) -->
-    <!-- no translation found for shade_display_awareness_summaries:3 (1746820128097981528) -->
-    <!-- no translation found for shade_display_awareness_values:3 (4313165186636015195) -->
+  <string-array name="shade_display_awareness_entries">
+    <item msgid="816770658383209617">"Ukuboniswa kwedivayisi kuphela (Okuzenzakalelayo)"</item>
+    <item msgid="9161645858025071955">"Ukubonisa Kwangaphandle"</item>
+    <item msgid="23651860565814477">"Thinta ibha yesimo yamuva"</item>
+    <item msgid="7521112827893653392">"Kusekelwe ekugxileni"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_summaries">
+    <item msgid="2964753205732912921">"Bonisa umthunzi esibonisini sedivayisi kuphela"</item>
+    <item msgid="1955398604822147783">"Bonisa umthunzi esibonisini esisodwa sangaphandle"</item>
+    <item msgid="391477482416751568">"Bonisa umthunzi esibonisini kokudlule ebesinesimo sebha okuxhunyanwe naso"</item>
+    <item msgid="1746820128097981528">"Bonisa umthunzi esibonisini sokugcina okugxilwe kuso"</item>
+  </string-array>
+  <string-array name="shade_display_awareness_values">
+    <item msgid="3055776101992426514">"default_display"</item>
+    <item msgid="774789415968826925">"any_external_display"</item>
+    <item msgid="7880769915418638436">"status_bar_latest_touch"</item>
+    <item msgid="4313165186636015195">"focused_display"</item>
+  </string-array>
 </resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index de62628..859c153 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -113,13 +113,33 @@
     <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Ayikwazanga ukubuyekeza izindawo ezizungezile"</string>
     <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Iyasebenza (imidiya kuphela). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
     <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Iyasebenza (imidiya kuphela). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ibhethri."</string>
+    <!-- no translation found for bluetooth_guest_battery_level (2820003593899467676) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered (5404013822067644960) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level (7928347900623812299) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_battery_level_untethered (4458143141394300892) -->
+    <skip />
     <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
     <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ibhethri."</string>
     <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). Kwesokudla: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
     <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe). Kwesokudla: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri."</string>
     <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Ixhunyiwe (isekela ukwabelana ngokuqoshiwe)"</string>
+    <!-- no translation found for bluetooth_guest_battery_level_lea_support (8098327939585013928) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_battery_level_untethered_lea_support (3701035025565668360) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_no_battery_level_lea_support (2977038548753103470) -->
+    <skip />
     <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Kuyasebenza (imidiya kuphela)"</string>
+    <!-- no translation found for bluetooth_guest_no_battery_level (9122974160381136920) -->
+    <skip />
+    <!-- no translation found for bluetooth_guest_media_only_no_battery_level (7666347601796705721) -->
+    <skip />
     <string name="bluetooth_saved_device_lea_support" msgid="7231323139968285768">"Isekela ukwabelana ngokuqoshiwe"</string>
+    <!-- no translation found for bluetooth_guest_saved_device_lea_support (5621291599518569876) -->
+    <skip />
     <string name="bluetooth_hearing_aid_media_only_left_active" msgid="1632152540901488645">"Iyasebenza (imidiya kuphela), ngakwesokunxele kuphela"</string>
     <string name="bluetooth_hearing_aid_media_only_right_active" msgid="3854140683042617230">"Kuyasebenza (imidiya kuphela), ngakwesokudla kuphela"</string>
     <string name="bluetooth_hearing_aid_media_only_left_and_right_active" msgid="1299913413062528417">"Kuyasebenza (imidiya kuphela), ngakwesokunxele nakwesokudla"</string>
@@ -376,6 +396,8 @@
     <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Ukunikezelwa okusheshisiwe kwezingxenyekazi zekhompyutha"</string>
     <string name="media_category" msgid="8122076702526144053">"Imidiya"</string>
     <string name="debug_monitoring_category" msgid="1597387133765424994">"Ukwengamela"</string>
+    <!-- no translation found for window_management_category (2015535427098365170) -->
+    <skip />
     <string name="strict_mode" msgid="889864762140862437">"Imodi eqinile ivumelwe"</string>
     <string name="strict_mode_summary" msgid="1838248687233554654">"Ukuphazimisa isikrini uma izinhlelo zokusebenza ziyenza umsebenzi ngesikhathi eside kuchungechunge olukhulu"</string>
     <string name="pointer_location" msgid="7516929526199520173">"Isikhombi sendawo"</string>
@@ -470,6 +492,12 @@
     <string name="select_webview_provider_title" msgid="3917815648099445503">"Ukufakwa ke-WebView"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Sesba ukufakwa kwe-WebView"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Lokhu kukhetha akusavumelekile. Zama futhi."</string>
+    <!-- no translation found for webview_launch_devtools_title (8009687433555367112) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_package (3182544553665113721) -->
+    <skip />
+    <!-- no translation found for webview_launch_devtools_no_activity (4066006313619617140) -->
+    <skip />
     <string name="picture_color_mode" msgid="1013807330552931903">"Imodi yombala wesithombe"</string>
     <string name="picture_color_mode_desc" msgid="151780973768136200">"Sebenzisa i-sRGB"</string>
     <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Kukhutshaziwe"</string>
diff --git a/packages/SettingsLib/res/values/styles.xml b/packages/SettingsLib/res/values/styles.xml
index 3326b60..7ab096f 100644
--- a/packages/SettingsLib/res/values/styles.xml
+++ b/packages/SettingsLib/res/values/styles.xml
@@ -116,4 +116,13 @@
         <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
         <item name="android:textSize">16dp</item>
     </style>
+
+    <style name="Theme.Transparent" parent="@android:style/Theme.DeviceDefault.Settings">
+        <item name="android:windowActionBar">false</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowContentOverlay">@null</item>
+    </style>
+
 </resources>
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index 4110d53..ba72709 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -585,7 +585,8 @@
                                             legacy, true);
                                 } catch (RemoteException ignored) {
                                 }
-                            } catch (NameNotFoundException | IOException e) {
+                            } catch (
+                              IllegalArgumentException | NameNotFoundException | IOException e) {
                                 Log.w(TAG, "Failed to query stats: " + e);
                                 try {
                                     mBackgroundHandler.mStatsObserver.onGetStatsCompleted(
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java
index 572444e..bf86911 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CsipDeviceManager.java
@@ -30,13 +30,11 @@
 import androidx.annotation.ChecksSdkIntAtLeast;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.settingslib.flags.Flags;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -387,7 +385,7 @@
                 preferredMainDevice.refresh();
                 hasChanged = true;
             }
-            syncAudioSharingStatusIfNeeded(preferredMainDevice);
+            syncAudioSharingSourceIfNeeded(preferredMainDevice);
         }
         if (hasChanged) {
             log("addMemberDevicesIntoMainDevice: After changed, CachedBluetoothDevice list: "
@@ -401,16 +399,13 @@
         return userManager != null && userManager.isManagedProfile();
     }
 
-    private void syncAudioSharingStatusIfNeeded(CachedBluetoothDevice mainDevice) {
+    private void syncAudioSharingSourceIfNeeded(CachedBluetoothDevice mainDevice) {
         boolean isAudioSharingEnabled = BluetoothUtils.isAudioSharingUIAvailable(mContext);
-        if (isAudioSharingEnabled && mainDevice != null) {
+        if (isAudioSharingEnabled) {
             if (isWorkProfile()) {
-                log("addMemberDevicesIntoMainDevice: skip sync audio sharing status, work profile");
+                log("addMemberDevicesIntoMainDevice: skip sync source for work profile");
                 return;
             }
-            Set<CachedBluetoothDevice> deviceSet = new HashSet<>();
-            deviceSet.add(mainDevice);
-            deviceSet.addAll(mainDevice.getMemberDevice());
             boolean hasBroadcastSource = BluetoothUtils.isBroadcasting(mBtManager)
                     && BluetoothUtils.hasConnectedBroadcastSource(
                     mainDevice, mBtManager);
@@ -424,6 +419,9 @@
                 if (metadata != null && assistant != null) {
                     log("addMemberDevicesIntoMainDevice: sync audio sharing source after "
                             + "combining the top level devices.");
+                    Set<CachedBluetoothDevice> deviceSet = new HashSet<>();
+                    deviceSet.add(mainDevice);
+                    deviceSet.addAll(mainDevice.getMemberDevice());
                     Set<BluetoothDevice> sinksToSync = deviceSet.stream()
                             .map(CachedBluetoothDevice::getDevice)
                             .filter(device ->
@@ -437,24 +435,8 @@
                     }
                 }
             }
-            if (Flags.enableTemporaryBondDevicesUi()) {
-                log("addMemberDevicesIntoMainDevice: sync temp bond metadata for audio sharing "
-                        + "sinks after combining the top level devices.");
-                Set<BluetoothDevice> sinksToSync = deviceSet.stream()
-                        .map(CachedBluetoothDevice::getDevice).filter(Objects::nonNull).collect(
-                                Collectors.toSet());
-                if (sinksToSync.stream().anyMatch(BluetoothUtils::isTemporaryBondDevice)) {
-                    for (BluetoothDevice device : sinksToSync) {
-                        if (!BluetoothUtils.isTemporaryBondDevice(device)) {
-                            log("addMemberDevicesIntoMainDevice: sync temp bond metadata for "
-                                    + device.getAnonymizedAddress());
-                            BluetoothUtils.setTemporaryBondMetadata(device);
-                        }
-                    }
-                }
-            }
         } else {
-            log("addMemberDevicesIntoMainDevice: skip sync audio sharing status, flag disabled");
+            log("addMemberDevicesIntoMainDevice: skip sync source, flag disabled");
         }
     }
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
index 8415642..3017d798 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
@@ -66,6 +66,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -84,6 +85,8 @@
 public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile {
     public static final String ACTION_LE_AUDIO_SHARING_STATE_CHANGE =
             "com.android.settings.action.BLUETOOTH_LE_AUDIO_SHARING_STATE_CHANGE";
+    public static final String ACTION_LE_AUDIO_SHARING_DEVICE_CONNECTED =
+            "com.android.settings.action.BLUETOOTH_LE_AUDIO_SHARING_DEVICE_CONNECTED";
     public static final String EXTRA_LE_AUDIO_SHARING_STATE = "BLUETOOTH_LE_AUDIO_SHARING_STATE";
     public static final String EXTRA_BLUETOOTH_DEVICE = "BLUETOOTH_DEVICE";
     public static final String EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE = "BT_DEVICE_TO_AUTO_ADD_SOURCE";
@@ -1189,6 +1192,7 @@
 
     @NonNull
     private Map<Integer, List<BluetoothDevice>> getDeviceGroupsInBroadcast() {
+        if (mServiceBroadcastAssistant == null) return new HashMap<>();
         boolean hysteresisModeFixEnabled =
                 BluetoothUtils.isAudioSharingHysteresisModeFixAvailable(mContext);
         List<BluetoothDevice> connectedDevices = mServiceBroadcastAssistant.getConnectedDevices();
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java
index d5cfe55..460c790 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java
@@ -35,6 +35,7 @@
 import android.annotation.SuppressLint;
 import android.app.AutomaticZenRule;
 import android.app.NotificationManager;
+import android.content.ComponentName;
 import android.content.Context;
 import android.net.Uri;
 import android.os.Parcel;
@@ -117,6 +118,14 @@
         DISABLED_BY_OTHER
     }
 
+    /**
+     * Information about the owner of a {@link ZenMode}. {@link #packageName()} is
+     * {@link SystemZenRules#PACKAGE_ANDROID} if the mode is system-owned; it may also be
+     * {@code null}, but only as an artifact of very old modes.
+     */
+    public record Owner(@Nullable String packageName, @Nullable ComponentName configurationActivity,
+                           @Nullable ComponentName conditionProvider) { }
+
     private final String mId;
     private final AutomaticZenRule mRule;
     private final Kind mKind;
@@ -198,7 +207,7 @@
     }
 
     @NonNull
-    public AutomaticZenRule getRule() {
+    AutomaticZenRule getRule() {
         return mRule;
     }
 
@@ -207,6 +216,10 @@
         return Strings.nullToEmpty(mRule.getName());
     }
 
+    public void setName(@NonNull String name) {
+        mRule.setName(name);
+    }
+
     @NonNull
     public Kind getKind() {
         return mKind;
@@ -217,6 +230,17 @@
         return mStatus;
     }
 
+    @NonNull
+    public Owner getOwner() {
+        return new Owner(mRule.getPackageName(), mRule.getConfigurationActivity(),
+                mRule.getOwner());
+    }
+
+    @Nullable
+    public String getOwnerPackage() {
+        return getOwner().packageName();
+    }
+
     @AutomaticZenRule.Type
     public int getType() {
         return mRule.getType();
@@ -257,6 +281,26 @@
         }
     }
 
+    /**
+     * Returns the resource id of the icon for this mode. Note that this is the <em>stored</em>
+     * resource id, and thus can be different from the value in {@link #getIconKey()} -- in
+     * particular, for modes without a custom icon set, this method returns {@code 0} whereas
+     * {@link #getIconKey()} will return a default icon based on other mode properties.
+     *
+     * <p>Most callers are interested in {@link #getIconKey()}, unless they are editing the icon.
+     */
+    public int getIconResId() {
+        return mRule.getIconResId();
+    }
+
+    /**
+     * Sets the resource id of the icon for this mode.
+     * @see #getIconResId()
+     */
+    public void setIconResId(@DrawableRes int iconResId) {
+        mRule.setIconResId(iconResId);
+    }
+
     /** Returns the interruption filter of the mode. */
     @NotificationManager.InterruptionFilter
     public int getInterruptionFilter() {
@@ -445,6 +489,10 @@
         return mStatus == Status.ENABLED_AND_ACTIVE;
     }
 
+    public boolean isManualInvocationAllowed() {
+        return mRule.isManualInvocationAllowed();
+    }
+
     public boolean isSystemOwned() {
         return SystemZenRules.PACKAGE_ANDROID.equals(mRule.getPackageName());
     }
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeDescriptions.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeDescriptions.java
index f577698..b67339b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeDescriptions.java
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeDescriptions.java
@@ -70,8 +70,7 @@
     public String getTriggerDescriptionForAccessibility(@NonNull ZenMode mode) {
         // Only one special case: time-based schedules, where we want to use full day names.
         if (mode.isSystemOwned() && mode.getType() == TYPE_SCHEDULE_TIME) {
-            ZenModeConfig.ScheduleInfo schedule = ZenModeConfig.tryParseScheduleConditionId(
-                    mode.getRule().getConditionId());
+            ZenModeConfig.ScheduleInfo schedule = ZenModeSchedules.getTimeSchedule(mode);
             if (schedule != null) {
                 String fullDaysSummary = SystemZenRules.getDaysOfWeekFull(mContext, schedule);
                 if (fullDaysSummary != null) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeSchedules.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeSchedules.java
new file mode 100644
index 0000000..c981652
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModeSchedules.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.notification.modes;
+
+import android.service.notification.ZenModeConfig;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class ZenModeSchedules {
+
+    /**
+     * Returns the {@link ZenModeConfig.ScheduleInfo} time schedule corresponding to the mode, or
+     * {@code null} if the mode is not time-schedule-based.
+     */
+    @Nullable
+    public static ZenModeConfig.ScheduleInfo getTimeSchedule(@NonNull ZenMode mode) {
+        return ZenModeConfig.tryParseScheduleConditionId(mode.getRule().getConditionId());
+    }
+
+    /**
+     * Returns the {@link ZenModeConfig.EventInfo} calendar schedule corresponding to the mode, or
+     * {@code null} if the mode is not calendar-schedule-based.
+     */
+    @Nullable
+    public static ZenModeConfig.EventInfo getCalendarSchedule(@NonNull ZenMode mode) {
+        return ZenModeConfig.tryParseEventConditionId(mode.getRule().getConditionId());
+    }
+
+    private ZenModeSchedules() { }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/users/CreateUserActivity.java b/packages/SettingsLib/src/com/android/settingslib/users/CreateUserActivity.java
new file mode 100644
index 0000000..c5e6f60
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/users/CreateUserActivity.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.users;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.view.MotionEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.R;
+
+
+public class CreateUserActivity extends Activity {
+    private static final String TAG = "CreateUserActivity";
+
+    public static final String EXTRA_USER_NAME = "new_user_name";
+    public static final String EXTRA_IS_ADMIN = "is_admin";
+    public static final String EXTRA_USER_ICON_PATH = "user_icon_path";
+    private static final String DIALOG_STATE_KEY = "create_user_dialog_state";
+    private static final String EXTRA_CAN_CREATE_ADMIN = "can_create_admin";
+    private static final String EXTRA_FILE_AUTHORITY = "file_authority";
+
+    private CreateUserDialogController mCreateUserDialogController;
+    @VisibleForTesting
+    Dialog mSetupUserDialog;
+
+
+    /**
+     * Creates intent to start CreateUserActivity
+     */
+    public static @NonNull Intent createIntentForStart(@NonNull Context context,
+            boolean canCreateAdminUser, @NonNull String fileAuth) {
+        Intent intent = new Intent(context, CreateUserActivity.class);
+        intent.putExtra(EXTRA_CAN_CREATE_ADMIN, canCreateAdminUser);
+        intent.putExtra(EXTRA_FILE_AUTHORITY, fileAuth);
+        return intent;
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Intent intent = getIntent();
+
+        mCreateUserDialogController = new CreateUserDialogController(
+                intent.getStringExtra(EXTRA_FILE_AUTHORITY));
+        setContentView(R.layout.activity_create_new_user);
+        if (savedInstanceState != null) {
+            mCreateUserDialogController.onRestoreInstanceState(savedInstanceState);
+        }
+        mSetupUserDialog = createDialog(intent.getBooleanExtra(EXTRA_CAN_CREATE_ADMIN, false));
+        mSetupUserDialog.show();
+    }
+
+    @Override
+    protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
+        super.onRestoreInstanceState(savedInstanceState);
+        Bundle savedDialogState = savedInstanceState.getBundle(DIALOG_STATE_KEY);
+        if (savedDialogState != null && mSetupUserDialog != null) {
+            mSetupUserDialog.onRestoreInstanceState(savedDialogState);
+        }
+    }
+
+    private Dialog createDialog(boolean canCreateAdminUser) {
+        return mCreateUserDialogController.createDialog(
+                this,
+                this::startActivity,
+                canCreateAdminUser,
+                this::setSuccessResult,
+                this::cancel
+        );
+    }
+
+    @Override
+    public boolean onTouchEvent(@Nullable MotionEvent event) {
+        onBackInvoked();
+        return super.onTouchEvent(event);
+    }
+
+    private void onBackInvoked() {
+        if (mSetupUserDialog != null) {
+            mSetupUserDialog.dismiss();
+        }
+        setResult(RESULT_CANCELED);
+        finish();
+    }
+
+    @VisibleForTesting
+    void setSuccessResult(String userName, Drawable userIcon, String path, Boolean isAdmin) {
+        Intent intent = new Intent(this, CreateUserActivity.class);
+        intent.putExtra(EXTRA_USER_NAME, userName);
+        intent.putExtra(EXTRA_IS_ADMIN, isAdmin);
+        intent.putExtra(EXTRA_USER_ICON_PATH, path);
+
+        mSetupUserDialog.dismiss();
+        setResult(RESULT_OK, intent);
+        finish();
+    }
+
+    @VisibleForTesting
+    void cancel() {
+        mSetupUserDialog.dismiss();
+        setResult(RESULT_CANCELED);
+        finish();
+    }
+
+    @Override
+    protected void onSaveInstanceState(@NonNull Bundle outState) {
+        if (mSetupUserDialog != null && mSetupUserDialog.isShowing()) {
+            outState.putBundle(DIALOG_STATE_KEY, mSetupUserDialog.onSaveInstanceState());
+        }
+        mCreateUserDialogController.onSaveInstanceState(outState);
+        super.onSaveInstanceState(outState);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        mCreateUserDialogController.onActivityResult(requestCode, resultCode, data);
+    }
+
+    private void startActivity(Intent intent, int requestCode) {
+        startActivityForResult(intent, requestCode);
+        mCreateUserDialogController.startingActivityForResult();
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/users/CreateUserDialogController.java b/packages/SettingsLib/src/com/android/settingslib/users/CreateUserDialogController.java
index d71b337..d9f1b63 100644
--- a/packages/SettingsLib/src/com/android/settingslib/users/CreateUserDialogController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/users/CreateUserDialogController.java
@@ -242,7 +242,7 @@
                         .setMessage(messageResId)
                         .setNegativeButtonText(R.string.cancel)
                         .setPositiveButtonText(R.string.next);
-                mCustomDialogHelper.requestFocusOnTitle();
+                focus();
                 break;
             case GRANT_ADMIN_DIALOG:
                 mEditUserInfoView.setVisibility(View.GONE);
@@ -255,7 +255,7 @@
                         .setMessage(R.string.user_grant_admin_message)
                         .setNegativeButtonText(R.string.back)
                         .setPositiveButtonText(R.string.next);
-                mCustomDialogHelper.requestFocusOnTitle();
+                focus();
                 if (mIsAdmin == null) {
                     mCustomDialogHelper.setButtonEnabled(false);
                 }
@@ -267,7 +267,7 @@
                         .setTitle(R.string.user_info_settings_title)
                         .setNegativeButtonText(R.string.back)
                         .setPositiveButtonText(R.string.done);
-                mCustomDialogHelper.requestFocusOnTitle();
+                focus();
                 mEditUserInfoView.setVisibility(View.VISIBLE);
                 mGrantAdminView.setVisibility(View.GONE);
                 break;
@@ -282,7 +282,7 @@
                 mCustomDialogHelper.getDialog().dismiss();
                 break;
             case EXIT_DIALOG:
-                mCustomDialogHelper.getDialog().dismiss();
+                finish();
                 break;
             default:
                 if (mCurrentState < EXIT_DIALOG) {
@@ -394,13 +394,21 @@
         return mCustomDialogHelper != null && mCustomDialogHelper.getDialog() != null;
     }
 
+    void focus() {
+        mCustomDialogHelper.requestFocusOnTitle();
+    }
+
     /**
      * Runs callback and clears saved values after dialog is dismissed.
      */
     public void finish() {
         if (mCurrentState == CREATE_USER_AND_CLOSE) {
             if (mSuccessCallback != null) {
-                mSuccessCallback.onSuccess(mUserName, mNewUserIcon, Boolean.TRUE.equals(mIsAdmin));
+                if (mEditUserPhotoController != null && mCachedDrawablePath == null) {
+                    mCachedDrawablePath = mEditUserPhotoController.getCachedDrawablePath();
+                }
+                mSuccessCallback.onSuccess(mUserName, mNewUserIcon, mCachedDrawablePath,
+                        Boolean.TRUE.equals(mIsAdmin));
             }
         } else {
             if (mCancelCallback != null) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/users/NewUserData.java b/packages/SettingsLib/src/com/android/settingslib/users/NewUserData.java
index 3d18b59..eed608e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/users/NewUserData.java
+++ b/packages/SettingsLib/src/com/android/settingslib/users/NewUserData.java
@@ -18,6 +18,8 @@
 
 import android.graphics.drawable.Drawable;
 
+import androidx.annotation.Nullable;
+
 /**
  * Defines a callback when a new user data is filled out.
  */
@@ -27,8 +29,10 @@
      * Consumes data relevant to new user that needs to be created.
      * @param userName New user name.
      * @param userImage New user icon.
+     * @param iconPath New user icon path.
      * @param isNewUserAdmin A boolean that indicated whether new user has admin status.
      */
-    void onSuccess(String userName, Drawable userImage, Boolean isNewUserAdmin);
+    void onSuccess(@Nullable String userName, @Nullable Drawable userImage,
+            @Nullable String iconPath, @Nullable Boolean isNewUserAdmin);
 
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
index c71b19c..88bccc9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
@@ -119,12 +119,16 @@
 
         private fun getIconsBasedOnFlag(): IntArray {
             return if (newStatusBarIcons()) {
+                // TODO(b/396664075):
+                // The new wifi icons only define a range of [0, 3]. Since this array is indexed on
+                // level, we can simulate the range squash by mapping both level 3 to drawn-level 2,
+                // and level 4 to drawn-level 3
                 intArrayOf(
                     R.drawable.ic_wifi_0,
                     R.drawable.ic_wifi_1,
                     R.drawable.ic_wifi_2,
+                    R.drawable.ic_wifi_2,
                     R.drawable.ic_wifi_3,
-                    R.drawable.ic_wifi_4
                 )
             } else {
                 intArrayOf(
@@ -141,12 +145,13 @@
 
         private fun getErrorIconsBasedOnFlag(): IntArray {
             return if (newStatusBarIcons()) {
+                // See above note, new wifi icons only have 3 bars, so levels 2 and 3 are the same
                 intArrayOf(
                     R.drawable.ic_wifi_0_error,
                     R.drawable.ic_wifi_1_error,
                     R.drawable.ic_wifi_2_error,
+                    R.drawable.ic_wifi_2_error,
                     R.drawable.ic_wifi_3_error,
-                    R.drawable.ic_wifi_4_error
                 )
             } else {
                 intArrayOf(
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CsipDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CsipDeviceManagerTest.java
index 2eccaa6..fd14d1f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CsipDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CsipDeviceManagerTest.java
@@ -40,8 +40,6 @@
 import android.os.Looper;
 import android.os.Parcel;
 import android.os.UserManager;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
 import android.platform.test.flag.junit.SetFlagsRule;
 
 import com.android.settingslib.flags.Flags;
@@ -76,9 +74,6 @@
     private final static String DEVICE_ADDRESS_1 = "AA:BB:CC:DD:EE:11";
     private final static String DEVICE_ADDRESS_2 = "AA:BB:CC:DD:EE:22";
     private final static String DEVICE_ADDRESS_3 = "AA:BB:CC:DD:EE:33";
-    private static final int METADATA_FAST_PAIR_CUSTOMIZED_FIELDS = 25;
-    private static final String TEMP_BOND_METADATA =
-            "<TEMP_BOND_TYPE>le_audio_sharing</TEMP_BOND_TYPE>";
     private final static int GROUP1 = 1;
     private final BluetoothClass DEVICE_CLASS_1 =
             createBtClass(BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES);
@@ -342,7 +337,6 @@
     }
 
     @Test
-    @DisableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
     public void addMemberDevicesIntoMainDevice_preferredDeviceIsMainAndTwoMain_returnTrue() {
         // Condition: The preferredDevice is main and there is another main device in top list
         // Expected Result: return true and there is the preferredDevice in top list
@@ -352,6 +346,7 @@
         mCachedDevices.add(preferredDevice);
         mCachedDevices.add(mCachedDevice2);
         mCachedDevices.add(mCachedDevice3);
+        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
 
         assertThat(mCsipDeviceManager.addMemberDevicesIntoMainDevice(GROUP1, preferredDevice))
                 .isTrue();
@@ -364,7 +359,6 @@
     }
 
     @Test
-    @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, Flags.FLAG_ENABLE_TEMPORARY_BOND_DEVICES_UI})
     public void
             addMemberDevicesIntoMainDevice_preferredDeviceIsMainAndTwoMain_workProfile_doNothing() {
         // Condition: The preferredDevice is main and there is another main device in top list
@@ -375,6 +369,7 @@
         mCachedDevices.add(preferredDevice);
         mCachedDevices.add(mCachedDevice2);
         mCachedDevices.add(mCachedDevice3);
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
         when(mBroadcast.isEnabled(null)).thenReturn(true);
         BluetoothLeBroadcastMetadata metadata = Mockito.mock(BluetoothLeBroadcastMetadata.class);
         when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(metadata);
@@ -382,8 +377,6 @@
                 BluetoothLeBroadcastReceiveState.class);
         when(state.getBisSyncState()).thenReturn(ImmutableList.of(1L));
         when(mAssistant.getAllSources(mDevice2)).thenReturn(ImmutableList.of(state));
-        when(mDevice2.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS))
-                .thenReturn(TEMP_BOND_METADATA.getBytes());
         when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
         when(mUserManager.isManagedProfile()).thenReturn(true);
 
@@ -394,13 +387,10 @@
         assertThat(mCachedDevices.contains(mCachedDevice3)).isTrue();
         assertThat(preferredDevice.getMemberDevice()).contains(mCachedDevice2);
         verify(mAssistant, never()).addSource(mDevice1, metadata, /* isGroupOp= */ false);
-        verify(mDevice1, never()).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
     }
 
     @Test
-    @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, Flags.FLAG_ENABLE_TEMPORARY_BOND_DEVICES_UI})
-    public void addMemberDevicesIntoMainDevice_preferredDeviceIsMainAndTwoMain_syncState() {
+    public void addMemberDevicesIntoMainDevice_preferredDeviceIsMainAndTwoMain_syncSource() {
         // Condition: The preferredDevice is main and there is another main device in top list
         // Expected Result: return true and there is the preferredDevice in top list
         CachedBluetoothDevice preferredDevice = mCachedDevice1;
@@ -409,6 +399,7 @@
         mCachedDevices.add(preferredDevice);
         mCachedDevices.add(mCachedDevice2);
         mCachedDevices.add(mCachedDevice3);
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
         when(mBroadcast.isEnabled(null)).thenReturn(true);
         BluetoothLeBroadcastMetadata metadata = Mockito.mock(BluetoothLeBroadcastMetadata.class);
         when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(metadata);
@@ -416,8 +407,6 @@
                 BluetoothLeBroadcastReceiveState.class);
         when(state.getBisSyncState()).thenReturn(ImmutableList.of(1L));
         when(mAssistant.getAllSources(mDevice2)).thenReturn(ImmutableList.of(state));
-        when(mDevice2.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS))
-                .thenReturn(TEMP_BOND_METADATA.getBytes());
 
         assertThat(mCsipDeviceManager.addMemberDevicesIntoMainDevice(GROUP1, preferredDevice))
                 .isTrue();
@@ -426,8 +415,6 @@
         assertThat(mCachedDevices.contains(mCachedDevice3)).isTrue();
         assertThat(preferredDevice.getMemberDevice()).contains(mCachedDevice2);
         verify(mAssistant).addSource(mDevice1, metadata, /* isGroupOp= */ false);
-        verify(mDevice1).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
     }
 
     @Test
@@ -449,13 +436,13 @@
     }
 
     @Test
-    @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, Flags.FLAG_ENABLE_TEMPORARY_BOND_DEVICES_UI})
     public void addMemberDevicesIntoMainDevice_preferredDeviceIsMemberAndTwoMain_returnTrue() {
         // Condition: The preferredDevice is member and there are two main device in top list
         // Expected Result: return true and there is the preferredDevice in top list
         CachedBluetoothDevice preferredDevice = mCachedDevice2;
         BluetoothDevice expectedMainBluetoothDevice = preferredDevice.getDevice();
         mCachedDevice3.setGroupId(GROUP1);
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
         when(mBroadcast.isEnabled(null)).thenReturn(false);
 
         assertThat(mCsipDeviceManager.addMemberDevicesIntoMainDevice(GROUP1, preferredDevice))
@@ -470,20 +457,16 @@
         assertThat(mCachedDevice1.getDevice()).isEqualTo(expectedMainBluetoothDevice);
         verify(mAssistant, never()).addSource(any(BluetoothDevice.class),
                 any(BluetoothLeBroadcastMetadata.class), anyBoolean());
-        verify(mDevice2, never()).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
-        verify(mDevice3, never()).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
     }
 
     @Test
-    @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, Flags.FLAG_ENABLE_TEMPORARY_BOND_DEVICES_UI})
-    public void addMemberDevicesIntoMainDevice_preferredDeviceIsMemberAndTwoMain_syncState() {
+    public void addMemberDevicesIntoMainDevice_preferredDeviceIsMemberAndTwoMain_syncSource() {
         // Condition: The preferredDevice is member and there are two main device in top list
         // Expected Result: return true and there is the preferredDevice in top list
         CachedBluetoothDevice preferredDevice = mCachedDevice2;
         BluetoothDevice expectedMainBluetoothDevice = preferredDevice.getDevice();
         mCachedDevice3.setGroupId(GROUP1);
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
         when(mBroadcast.isEnabled(null)).thenReturn(true);
         BluetoothLeBroadcastMetadata metadata = Mockito.mock(BluetoothLeBroadcastMetadata.class);
         when(mBroadcast.getLatestBluetoothLeBroadcastMetadata()).thenReturn(metadata);
@@ -491,8 +474,6 @@
                 BluetoothLeBroadcastReceiveState.class);
         when(state.getBisSyncState()).thenReturn(ImmutableList.of(1L));
         when(mAssistant.getAllSources(mDevice1)).thenReturn(ImmutableList.of(state));
-        when(mDevice1.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS))
-                .thenReturn(TEMP_BOND_METADATA.getBytes());
 
         assertThat(mCsipDeviceManager.addMemberDevicesIntoMainDevice(GROUP1, preferredDevice))
                 .isTrue();
@@ -507,10 +488,6 @@
         assertThat(mCachedDevice1.getDevice()).isEqualTo(expectedMainBluetoothDevice);
         verify(mAssistant).addSource(mDevice2, metadata, /* isGroupOp= */ false);
         verify(mAssistant).addSource(mDevice3, metadata, /* isGroupOp= */ false);
-        verify(mDevice2).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
-        verify(mDevice3).setMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS,
-                TEMP_BOND_METADATA.getBytes());
     }
 
     @Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/modes/ZenModeTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/modes/ZenModeTest.java
index 6b30f15..71ecf5b7 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/modes/ZenModeTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/modes/ZenModeTest.java
@@ -21,6 +21,7 @@
 import static android.app.AutomaticZenRule.TYPE_IMMERSIVE;
 import static android.app.AutomaticZenRule.TYPE_OTHER;
 import static android.app.AutomaticZenRule.TYPE_SCHEDULE_CALENDAR;
+import static android.app.AutomaticZenRule.TYPE_SCHEDULE_TIME;
 import static android.app.AutomaticZenRule.TYPE_THEATER;
 import static android.app.AutomaticZenRule.TYPE_UNKNOWN;
 import static android.app.NotificationManager.INTERRUPTION_FILTER_ALARMS;
@@ -35,6 +36,8 @@
 import static org.junit.Assert.assertThrows;
 
 import android.app.AutomaticZenRule;
+import android.content.ComponentName;
+import android.content.Context;
 import android.net.Uri;
 import android.os.Parcel;
 import android.service.notification.Condition;
@@ -43,13 +46,17 @@
 import android.service.notification.ZenModeConfig;
 import android.service.notification.ZenPolicy;
 
+import androidx.test.core.app.ApplicationProvider;
+
 import com.android.internal.R;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
 
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
@@ -72,6 +79,13 @@
                     .setType(TYPE_OTHER)
                     .build();
 
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = ApplicationProvider.getApplicationContext();
+    }
+
     @Test
     public void testBasicMethods_mode() {
         ZenMode zenMode = new ZenMode("id", ZEN_RULE, zenConfigRuleFor(ZEN_RULE, true));
@@ -95,7 +109,7 @@
         assertThat(manualMode.canEditPolicy()).isTrue();
         assertThat(manualMode.canBeDeleted()).isFalse();
         assertThat(manualMode.isActive()).isFalse();
-        assertThat(manualMode.getRule().getPackageName()).isEqualTo(PACKAGE_ANDROID);
+        assertThat(manualMode.getOwnerPackage()).isEqualTo(PACKAGE_ANDROID);
     }
 
     @Test
@@ -153,7 +167,7 @@
     public void isCustomManual_scheduleTime_false() {
         AutomaticZenRule rule = new AutomaticZenRule.Builder("Mode", Uri.parse("x"))
                 .setPackage(SystemZenRules.PACKAGE_ANDROID)
-                .setType(AutomaticZenRule.TYPE_SCHEDULE_TIME)
+                .setType(TYPE_SCHEDULE_TIME)
                 .build();
         ZenMode mode = new ZenMode("id", rule, zenConfigRuleFor(rule, false));
 
@@ -194,6 +208,23 @@
     }
 
     @Test
+    public void getOwner_returnsOwnerDetails() {
+        AutomaticZenRule azr = new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
+                .setPackage("package")
+                .setConfigurationActivity(new ComponentName("package", "configActivity"))
+                .setOwner(new ComponentName("package", "conditionService"))
+                .build();
+        ZenMode zenMode = new ZenMode("id", azr, zenConfigRuleFor(azr, false));
+
+        ZenMode.Owner owner = zenMode.getOwner();
+        assertThat(owner.packageName()).isEqualTo("package");
+        assertThat(owner.configurationActivity()).isEqualTo(
+                new ComponentName("package", "configActivity"));
+        assertThat(owner.conditionProvider()).isEqualTo(
+                new ComponentName("package", "conditionService"));
+    }
+
+    @Test
     public void getPolicy_interruptionFilterPriority_returnsZenPolicy() {
         AutomaticZenRule azr = new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
                 .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
@@ -245,7 +276,7 @@
 
         zenMode.setPolicy(ZEN_POLICY);
 
-        assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
+        assertThat(zenMode.getInterruptionFilter()).isEqualTo(
                 INTERRUPTION_FILTER_PRIORITY);
         assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
         assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(ZEN_POLICY);
@@ -397,6 +428,7 @@
 
         assertThat(iconKey.resPackage()).isEqualTo("some.package");
         assertThat(iconKey.resId()).isEqualTo(123);
+        assertThat(mode.getIconResId()).isEqualTo(123);
     }
 
     @Test
@@ -411,6 +443,7 @@
 
         assertThat(iconKey.resPackage()).isNull();
         assertThat(iconKey.resId()).isEqualTo(123);
+        assertThat(mode.getIconResId()).isEqualTo(123);
     }
 
     @Test
@@ -425,15 +458,18 @@
 
         assertThat(iconKey.resPackage()).isEqualTo("some.package");
         assertThat(iconKey.resId()).isEqualTo(123);
+        assertThat(mode.getIconResId()).isEqualTo(123);
     }
 
     @Test
     public void getIconKey_manualDnd_isDndIcon() {
-        ZenIcon.Key iconKey = TestModeBuilder.MANUAL_DND.getIconKey();
+        ZenMode mode = TestModeBuilder.MANUAL_DND;
+        ZenIcon.Key iconKey = mode.getIconKey();
 
         assertThat(iconKey.resPackage()).isNull();
         assertThat(iconKey.resId()).isEqualTo(
                 com.android.internal.R.drawable.ic_zen_mode_type_special_dnd);
+        assertThat(mode.getIconResId()).isEqualTo(0);
     }
 
     @Test
@@ -448,6 +484,7 @@
         assertThat(iconKey.resPackage()).isNull();
         assertThat(iconKey.resId()).isEqualTo(
                 com.android.internal.R.drawable.ic_zen_mode_type_bedtime);
+        assertThat(mode.getIconResId()).isEqualTo(0);
     }
 
     @Test
@@ -462,6 +499,7 @@
         assertThat(iconKey.resPackage()).isNull();
         assertThat(iconKey.resId()).isEqualTo(
                 com.android.internal.R.drawable.ic_zen_mode_type_schedule_calendar);
+        assertThat(mode.getIconResId()).isEqualTo(0);
     }
 
     @Test
@@ -477,6 +515,77 @@
         assertThat(iconKey.resPackage()).isNull();
         assertThat(iconKey.resId()).isEqualTo(
                 com.android.internal.R.drawable.ic_zen_mode_type_special_dnd);
+        assertThat(mode.getIconResId()).isEqualTo(0);
+    }
+
+    @Test
+    public void setCustomModeConditionId_timeSchedule() {
+        ZenMode mode = new TestModeBuilder()
+                .setPackage(PACKAGE_ANDROID)
+                .build();
+        ZenModeConfig.ScheduleInfo timeSchedule = new ZenModeConfig.ScheduleInfo();
+        timeSchedule.startHour = 9;
+        timeSchedule.endHour = 12;
+        timeSchedule.days = new int[] {Calendar.SATURDAY, Calendar.SUNDAY};
+        Uri scheduleUri = ZenModeConfig.toScheduleConditionId(timeSchedule);
+
+        mode.setCustomModeConditionId(mContext, scheduleUri);
+
+        assertThat(mode.getType()).isEqualTo(TYPE_SCHEDULE_TIME);
+        assertThat(ZenModeSchedules.getTimeSchedule(mode)).isEqualTo(timeSchedule);
+        assertThat(mode.getTriggerDescription()).isEqualTo("Sun, Sat, 9:00 AM - 12:00 PM");
+
+        assertThat(mode.getRule().getConditionId()).isEqualTo(scheduleUri);
+        assertThat(mode.getRule().getOwner()).isEqualTo(
+                ZenModeConfig.getScheduleConditionProvider());
+    }
+
+    @Test
+    public void setCustomModeConditionId_calendarSchedule() {
+        ZenMode mode = new TestModeBuilder()
+                .setPackage(PACKAGE_ANDROID)
+                .build();
+        ZenModeConfig.EventInfo calendarSchedule = new ZenModeConfig.EventInfo();
+        calendarSchedule.calendarId = 1L;
+        calendarSchedule.calName = "My events";
+        Uri scheduleUri = ZenModeConfig.toEventConditionId(calendarSchedule);
+
+        mode.setCustomModeConditionId(mContext, scheduleUri);
+
+        assertThat(mode.getType()).isEqualTo(TYPE_SCHEDULE_CALENDAR);
+        assertThat(ZenModeSchedules.getCalendarSchedule(mode)).isEqualTo(calendarSchedule);
+        assertThat(mode.getTriggerDescription()).isEqualTo("My events");
+
+        assertThat(mode.getRule().getConditionId()).isEqualTo(scheduleUri);
+        assertThat(mode.getRule().getOwner()).isEqualTo(
+                ZenModeConfig.getEventConditionProvider());
+    }
+
+    @Test
+    public void setCustomModeConditionId_manualSchedule() {
+        ZenMode mode = new TestModeBuilder()
+                .setPackage(PACKAGE_ANDROID)
+                .build();
+
+        mode.setCustomModeConditionId(mContext, ZenModeConfig.toCustomManualConditionId());
+
+        assertThat(mode.getType()).isEqualTo(TYPE_OTHER);
+        assertThat(mode.getTriggerDescription()).isEqualTo("");
+
+        assertThat(mode.getRule().getConditionId()).isEqualTo(
+                ZenModeConfig.toCustomManualConditionId());
+        assertThat(mode.getRule().getOwner()).isEqualTo(
+                ZenModeConfig.getCustomManualConditionProvider());
+    }
+
+    @Test
+    public void setCustomModeConditionId_nonSystemRule_throws() {
+        ZenMode mode = new TestModeBuilder()
+                .setPackage("some.other.package")
+                .build();
+
+        assertThrows(IllegalStateException.class,
+                () -> mode.setCustomModeConditionId(mContext, Uri.parse("blah")));
     }
 
     private static void assertUnparceledIsEqualToOriginal(String type, ZenMode original) {
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserActivityTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserActivityTest.java
new file mode 100644
index 0000000..f58eb7c
--- /dev/null
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserActivityTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.users;
+
+import static com.android.settingslib.users.CreateUserActivity.EXTRA_IS_ADMIN;
+import static com.android.settingslib.users.CreateUserActivity.EXTRA_USER_ICON_PATH;
+import static com.android.settingslib.users.CreateUserActivity.EXTRA_USER_NAME;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.view.MotionEvent;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class CreateUserActivityTest {
+
+    private static final String TEST_USER_NAME = "test_user";
+    private static final String TEST_USER_ICON_PATH = "/test_path";
+    private static final boolean TEST_IS_ADMIN = true;
+
+    private Context mContext;
+    private CreateUserActivity mCreateUserActivity;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mCreateUserActivity = Robolectric.buildActivity(CreateUserActivity.class).setup().get();
+    }
+
+    @Test
+    public void startActivity_startsActivityForResult() {
+        Intent activityIntent = CreateUserActivity.createIntentForStart(mContext, true, "");
+        mCreateUserActivity.startActivity(activityIntent, null);
+
+        assertThat(shadowOf(mCreateUserActivity).getNextStartedActivityForResult().intent)
+                .isEqualTo(activityIntent);
+    }
+
+    @Test
+    public void onTouchEvent_dismissesDialogAndCancelsResult() {
+        mCreateUserActivity.onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0,
+                0));
+
+        assertThat(mCreateUserActivity.mSetupUserDialog.isShowing()).isFalse();
+        assertThat(shadowOf(mCreateUserActivity).getResultCode())
+                .isEqualTo(Activity.RESULT_CANCELED);
+    }
+
+    @Test
+    public void setSuccessResult_dismissesDialogAndSetsSuccessResult() {
+        Drawable mockDrawable = mock(Drawable.class);
+
+        mCreateUserActivity.setSuccessResult(TEST_USER_NAME, mockDrawable, TEST_USER_ICON_PATH,
+                TEST_IS_ADMIN);
+
+        assertThat(mCreateUserActivity.mSetupUserDialog.isShowing()).isFalse();
+        assertThat(shadowOf(mCreateUserActivity).getResultCode()).isEqualTo(Activity.RESULT_OK);
+
+        Intent resultIntent = shadowOf(mCreateUserActivity).getResultIntent();
+        assertThat(resultIntent.getStringExtra(EXTRA_USER_NAME)).isEqualTo(TEST_USER_NAME);
+        assertThat(resultIntent.getBooleanExtra(EXTRA_IS_ADMIN, false)).isEqualTo(TEST_IS_ADMIN);
+        assertThat(resultIntent.getStringExtra(EXTRA_USER_ICON_PATH))
+                .isEqualTo(TEST_USER_ICON_PATH);
+    }
+
+    @Test
+    public void cancel_dismissesDialogAndSetsCancelResult() {
+        mCreateUserActivity.cancel();
+
+        assertThat(mCreateUserActivity.mSetupUserDialog.isShowing()).isFalse();
+        assertThat(shadowOf(mCreateUserActivity).getResultCode())
+                .isEqualTo(Activity.RESULT_CANCELED);
+    }
+
+    @Test
+    public void onSaveInstanceState_savesDialogState() {
+        Bundle outState = new Bundle();
+        mCreateUserActivity.onSaveInstanceState(outState);
+
+        CreateUserActivity restoredActivity =
+                Robolectric.buildActivity(CreateUserActivity.class).setup(outState).get();
+
+        assertThat(restoredActivity.mSetupUserDialog).isNotNull();
+        assertThat(restoredActivity.mSetupUserDialog.isShowing()).isTrue();
+    }
+}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserDialogControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserDialogControllerTest.java
index 6831222..e602323 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserDialogControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/CreateUserDialogControllerTest.java
@@ -211,7 +211,7 @@
         editText.setText(expectedNewName);
         next.performClick();
         verify(successCallback, times(1))
-                .onSuccess(expectedNewName, null, true);
+                .onSuccess(expectedNewName, null, null, true);
         verifyNoInteractions(cancelCallback);
     }
 
@@ -233,7 +233,7 @@
         editText.setText(expectedNewName);
         next.performClick();
         verify(successCallback, times(1))
-                .onSuccess(expectedNewName, null, false);
+                .onSuccess(expectedNewName, null, null, false);
         verifyNoInteractions(cancelCallback);
     }
 
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 9505977..f03a5fb 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1696,6 +1696,7 @@
             proto.write(SettingProto.DEFAULT_VALUE, setting.getDefaultValue());
             proto.write(SettingProto.DEFAULT_FROM_SYSTEM, setting.isDefaultFromSystem());
         }
+        proto.write(SettingProto.PRESERVED_IN_RESTORE, setting.isValuePreservedInRestore());
         proto.end(settingsToken);
     }
 
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 7c588b3..bc281ee 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -988,6 +988,11 @@
             if (setting.getTag() != null) {
                 pw.print(" tag:"); pw.print(setting.getTag());
             }
+            // The majority of settings are preserved in restore, so we're just dumping those that
+            // are not (to save space).
+            if (!setting.isValuePreservedInRestore()) {
+                pw.println(" notPreservedInRestore");
+            }
             pw.println();
         }
     }
@@ -1498,7 +1503,7 @@
         if (DEBUG) {
             Slog.v(LOG_TAG, "insertGlobalSetting(" + name + ", " + value  + ", "
                     + ", " + tag + ", " + makeDefault + ", " + requestingUserId
-                    + ", " + forceNotify + ")");
+                    + ", " + forceNotify + ", " + overrideableByRestore + ")");
         }
         return mutateGlobalSetting(name, value, tag, makeDefault, requestingUserId,
                 MUTATION_OPERATION_INSERT, forceNotify, 0, overrideableByRestore);
@@ -1780,7 +1785,7 @@
         if (DEBUG) {
             Slog.v(LOG_TAG, "insertSecureSetting(" + name + ", " + value + ", "
                     + ", " + tag  + ", " + makeDefault + ", "  + requestingUserId
-                    + ", " + forceNotify + ")");
+                    + ", " + forceNotify + ", " + overrideableByRestore + ")");
         }
         return mutateSecureSetting(name, value, tag, makeDefault, requestingUserId,
                 MUTATION_OPERATION_INSERT, forceNotify, 0, overrideableByRestore);
@@ -1941,7 +1946,7 @@
             boolean overrideableByRestore) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "insertSystemSetting(" + name + ", " + value + ", "
-                    + requestingUserId + ")");
+                    + requestingUserId + ", " + overrideableByRestore + ")");
         }
 
         return mutateSystemSetting(name, value, /* tag= */ null, requestingUserId,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
index 17ebf6f..0484def 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
@@ -30,6 +30,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
+import android.util.Slog;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -94,6 +95,8 @@
     }
 
     final static class MyShellCommand extends ShellCommand {
+        private static final String LOG_TAG = "SettingsShellCmd";
+
         final SettingsProvider mProvider;
         final boolean mDumping;
 
@@ -115,6 +118,7 @@
         String mTag = null;
         int mResetMode = -1;
         boolean mMakeDefault;
+        boolean mOverrideableByRestore;
 
         MyShellCommand(SettingsProvider provider, boolean dumping) {
             mProvider = provider;
@@ -209,6 +213,7 @@
                         return -1;
                     }
                     break;
+                // At this point, mVerb == PUT
                 } else if (mKey == null) {
                     mKey = arg;
                     // keep going; there's another PUT arg
@@ -217,36 +222,8 @@
                     // what we have so far is a valid command
                     valid = true;
                     // keep going; there may be another PUT arg
-                } else if (mTag == null) {
-                    mTag = arg;
-                    if ("default".equalsIgnoreCase(mTag)) {
-                        mTag = null;
-                        mMakeDefault = true;
-                        if (peekNextArg() == null) {
-                            valid = true;
-                        } else {
-                            perr.println("Too many arguments");
-                            return -1;
-                        }
-                        break;
-                    }
-                    if (peekNextArg() == null) {
-                        valid = true;
-                        break;
-                    }
-                } else { // PUT, final arg
-                    if (!"default".equalsIgnoreCase(arg)) {
-                        perr.println("Argument expected to be 'default'");
-                        return -1;
-                    }
-                    mMakeDefault = true;
-                    if (peekNextArg() == null) {
-                        valid = true;
-                    } else {
-                        perr.println("Too many arguments");
-                        return -1;
-                    }
-                    break;
+                } else {
+                    valid = parseOptionalPutArgument(arg);
                 }
             } while ((arg = getNextArg()) != null);
 
@@ -275,7 +252,8 @@
                     pout.println(getForUser(iprovider, mUser, mTable, mKey));
                     break;
                 case PUT:
-                    putForUser(iprovider, mUser, mTable, mKey, mValue, mTag, mMakeDefault);
+                    putForUser(iprovider, mUser, mTable, mKey, mValue, mTag, mMakeDefault,
+                            mOverrideableByRestore);
                     break;
                 case DELETE:
                     pout.println("Deleted "
@@ -297,6 +275,41 @@
             return 0;
         }
 
+        private boolean parseOptionalPutArgument(String arg) {
+            boolean valid = true;
+            // Given that the order is TAG default overrideableByRestore, we need to parse from the
+            // opposite direction
+            switch (arg) {
+                case "overrideableByRestore":
+                    if (mOverrideableByRestore) {
+                        valid = false;
+                    } else {
+                        mOverrideableByRestore = true;
+                    }
+                    break;
+                case "default":
+                    if (mMakeDefault || mOverrideableByRestore) {
+                        valid = false;
+                    } else {
+                        mMakeDefault = true;
+                    }
+                    break;
+                default: // tag
+                    if (mMakeDefault || mOverrideableByRestore || mTag != null) {
+                        valid = false;
+                    } else {
+                        mTag = arg;
+                    }
+                    break;
+            }
+            if (!valid) {
+                Slog.e(LOG_TAG, "parseOptionalPutArgument(" + arg + "): invalid state ("
+                        + "mTag=" + mTag + ", mMakeDefault=" + mMakeDefault
+                        + ", mOverrideableByRestore=" + mOverrideableByRestore + ")");
+            }
+            return valid;
+        }
+
         List<String> listForUser(IContentProvider provider, int userHandle, String table) {
             final String callListCommand;
             if ("system".equals(table)) callListCommand = Settings.CALL_METHOD_LIST_SYSTEM;
@@ -351,7 +364,11 @@
         }
 
         void putForUser(IContentProvider provider, int userHandle, final String table,
-                final String key, final String value, String tag, boolean makeDefault) {
+                final String key, final String value, String tag, boolean makeDefault,
+                boolean overrideableByRestore) {
+            Slog.v(LOG_TAG, "putForUser(userId=" + userHandle + ", table=" + table + ", key=" + key
+                    + ", value=" + value + ", tag=" + tag + ", makeDefault=" + makeDefault
+                    + ", overrideableByRestore=" + overrideableByRestore + ")");
             final String callPutCommand;
             if ("system".equals(table)) {
                 callPutCommand = Settings.CALL_METHOD_PUT_SYSTEM;
@@ -377,6 +394,9 @@
                 if (makeDefault) {
                     arg.putBoolean(Settings.CALL_METHOD_MAKE_DEFAULT_KEY, true);
                 }
+                if (overrideableByRestore) {
+                    arg.putBoolean(Settings.CALL_METHOD_OVERRIDEABLE_BY_RESTORE_KEY, true);
+                }
                 final AttributionSource attributionSource = new AttributionSource(
                         Binder.getCallingUid(), resolveCallingPackage(), /*attributionTag*/ null);
                 provider.call(attributionSource, Settings.AUTHORITY,
@@ -474,10 +494,11 @@
                 pw.println("      Print this help text.");
                 pw.println("  get [--user <USER_ID> | current] NAMESPACE KEY");
                 pw.println("      Retrieve the current value of KEY.");
-                pw.println("  put [--user <USER_ID> | current] NAMESPACE KEY VALUE [TAG] [default]");
+                pw.println("  put [--user <USER_ID> | current] NAMESPACE KEY VALUE [TAG] [default] [overrideableByRestore]");
                 pw.println("      Change the contents of KEY to VALUE.");
-                pw.println("      TAG to associate with the setting.");
+                pw.println("      TAG to associate with the setting (cannot be default or overrideableByRestore).");
                 pw.println("      {default} to set as the default, case-insensitive only for global/secure namespace");
+                pw.println("      {overrideableByRestore} to let the value be overridden by BackupManager on restore operations");
                 pw.println("  delete [--user <USER_ID> | current] NAMESPACE KEY");
                 pw.println("      Delete the entry for KEY.");
                 pw.println("  reset [--user <USER_ID> | current] NAMESPACE {PACKAGE_NAME | RESET_MODE}");
diff --git a/packages/SoundPicker/res/values-fr/strings.xml b/packages/SoundPicker/res/values-fr/strings.xml
index 9452e70..bfcbc67 100644
--- a/packages/SoundPicker/res/values-fr/strings.xml
+++ b/packages/SoundPicker/res/values-fr/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Sonnerie par défaut"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"Son de notification par défaut"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"Son de l\'alarme par défaut"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"Son par défaut de l\'alarme"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Ajouter une sonnerie"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Ajouter une alarme"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Ajouter une notification"</string>
diff --git a/packages/SoundPicker/res/values-mr/strings.xml b/packages/SoundPicker/res/values-mr/strings.xml
index 3ddb991..39c7c4b 100644
--- a/packages/SoundPicker/res/values-mr/strings.xml
+++ b/packages/SoundPicker/res/values-mr/strings.xml
@@ -17,7 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"डीफॉल्ट रिंगटोन"</string>
-    <string name="notification_sound_default" msgid="8133121186242636840">"डीफॉल्ट सूचना आवाज"</string>
+    <string name="notification_sound_default" msgid="8133121186242636840">"डीफॉल्ट नोटिफिकेशन आवाज"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"डीफॉल्ट अलार्म आवाज"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिंगटोन जोडा"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म जोडा"</string>
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 29b578a..eb5b22f 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -1370,6 +1370,16 @@
 }
 
 flag {
+    name: "media_controls_a11y_colors"
+    namespace: "systemui"
+    description: "Color scheme updates for improved a11y"
+    bug: "378848399"
+    metadata {
+      purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
   name: "output_switcher_redesign"
   namespace: "systemui"
   description: "Enables visual update for Media Output Switcher"
@@ -1915,6 +1925,13 @@
 }
 
 flag {
+   name: "physical_notification_movement"
+   namespace: "systemui"
+   description: "Make notifications use physics based animations for movement"
+   bug: "393581344"
+}
+
+flag {
    name: "glanceable_hub_direct_edit_mode"
    namespace: "systemui"
    description: "Invokes edit mode directly from long press in glanceable hub"
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewTransitionAnimatorController.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewTransitionAnimatorController.kt
index 444389f..fdb07bd 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewTransitionAnimatorController.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewTransitionAnimatorController.kt
@@ -155,7 +155,7 @@
     /** [ViewTransitionToken] to be used for storing transitioning view in [transitionRegistry] */
     private val transitionToken =
         if (Flags.decoupleViewControllerInAnimlib()) {
-            ViewTransitionToken(transitioningView::class.java)
+            transitionRegistry?.register(transitioningView)
         } else {
             null
         }
@@ -164,7 +164,7 @@
     private val ghostedView: View
         get() =
             if (Flags.decoupleViewControllerInAnimlib()) {
-                transitionRegistry?.getView(transitionToken!!)
+                transitionToken?.let { token -> transitionRegistry?.getView(token) }
             } else {
                 _ghostedView
             }!!
@@ -186,10 +186,6 @@
             )
         }
 
-        if (Flags.decoupleViewControllerInAnimlib()) {
-            transitionRegistry?.register(transitionToken!!, transitioningView)
-        }
-
         /** Find the first view with a background in [view] and its children. */
         fun findBackground(view: View): Drawable? {
             if (view.background != null) {
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/IViewTransitionRegistry.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/IViewTransitionRegistry.kt
index af3ca87..280d90d 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/IViewTransitionRegistry.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/IViewTransitionRegistry.kt
@@ -22,12 +22,12 @@
 interface IViewTransitionRegistry {
 
     /**
-     * Registers the transitioning [view] mapped to a [token]
+     * Registers the transitioning [view] mapped to returned token
      *
-     * @param token The token corresponding to the transitioning view
      * @param view The view undergoing transition
+     * @return token mapped to the transitioning view
      */
-    fun register(token: ViewTransitionToken, view: View)
+    fun register(view: View): ViewTransitionToken
 
     /**
      * Unregisters the transitioned view from its corresponding [token]
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt
index 86c7f76..882ff3b 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt
@@ -22,21 +22,21 @@
 
 /**
  * A registry to temporarily store the view being transitioned into a Dialog (using
- * [DialogTransitionAnimator]) or an Activity (using [ActivityTransitionAnimator])
+ * [DialogTransitionAnimator]) or an Activity (using [ActivityTransitionAnimator]).
  */
 class ViewTransitionRegistry : IViewTransitionRegistry {
 
     /**
      * A map of a unique token to a WeakReference of the View being transitioned. WeakReference
      * ensures that Views are garbage collected whenever they become eligible and avoid any
-     * memory leaks
+     * memory leaks.
      */
-    private val registry by lazy { mutableMapOf<ViewTransitionToken, WeakReference<View>>() }
+    private val registry by lazy { mutableMapOf<ViewTransitionToken, ViewTransitionInfo>() }
 
     /**
      * A [View.OnAttachStateChangeListener] to be attached to all views stored in the registry to
      * ensure that views (and their corresponding entry) is automatically removed when the view is
-     * detached from the Window
+     * detached from the Window.
      */
     private val listener by lazy {
         object : View.OnAttachStateChangeListener {
@@ -45,74 +45,121 @@
             }
 
             override fun onViewDetachedFromWindow(view: View) {
-                getViewToken(view)?.let { token -> unregister(token) }
+                // if view is detached from window, remove it from registry irrespective of number
+                // of reference held by clients/user of this registry
+                getViewToken(view)?.let { token -> remove(token) }
             }
         }
     }
 
     /**
-     * Creates an entry of a unique "token" mapped to "transitioning view" in the registry
+     * Creates an entry of a unique token mapped to transitioning [view] in the registry.
      *
-     * @param token unique token associated with the transitioning view
      * @param view view undergoing transitions
+     * @return unique token mapped to the view being registered
      */
-    override fun register(token: ViewTransitionToken, view: View) {
+    override fun register(view: View): ViewTransitionToken {
+        // if view being registered is already present in the registry and has a unique token
+        // assigned to it, reuse that token
+        getViewToken(view)?.let { token ->
+            registry[token]?.let { info -> info.viewRefCount += 1 }
+            return token
+        }
+
         // token embedded as a view tag enables to use a single listener for all views
+        val token = ViewTransitionToken(view::class.java)
         view.setTag(R.id.tag_view_transition_token, token)
         view.addOnAttachStateChangeListener(listener)
-        registry[token] = WeakReference(view)
+        registry[token] = ViewTransitionInfo(WeakReference(view))
         onRegistryUpdate()
+
+        return token
     }
 
     /**
-     * Removes the entry associated with the unique "token" in the registry
+     * Unregisters a view mapped to the unique [token] in the registry. This will either remove the
+     * entry entirely from registry (if the reference count of the associated view reached zero) or
+     * will decrement the reference count of the associated view in the registry.
      *
      * @param token unique token associated with the transitioning view
      */
     override fun unregister(token: ViewTransitionToken) {
-        registry.remove(token)?.let {
-            it.get()?.let { view ->
+        registry[token]?.let { info ->
+            info.viewRefCount -= 1
+            if (info.viewRefCount == 0) {
+                remove(token)
+            }
+        }
+    }
+
+    /**
+     * Removes the entry associated with the unique [token] in the registry.
+     *
+     * @param token unique token associated with the transitioning view
+     */
+    private fun remove(token: ViewTransitionToken) {
+        registry.remove(token)?.let { removedInfo ->
+            removedInfo.viewRef.get()?.let { view ->
                 view.removeOnAttachStateChangeListener(listener)
                 view.setTag(R.id.tag_view_transition_token, null)
             }
-            it.clear()
+            removedInfo.viewRef.clear()
             onRegistryUpdate()
         }
     }
 
     /**
-     * Access a view from registry using unique "token" associated with it
+     * Access a view from registry using unique [token] associated with it.
      * WARNING - this returns a StrongReference to the View stored in the registry
      */
     override fun getView(token: ViewTransitionToken): View? {
-        return registry[token]?.get()
+        return registry[token]?.viewRef?.get()
     }
 
     /**
-     * Return token mapped to the [view], if it is present in the registry
+     * Return token mapped to the [view], if it is present in the registry.
      *
      * @param view the transitioning view whose token we are requesting
      * @return token associated with the [view] if present, else null
      */
     override fun getViewToken(view: View): ViewTransitionToken? {
-        return (view.getTag(R.id.tag_view_transition_token) as? ViewTransitionToken)?.let { token ->
-            getView(token)?.let { token }
+        // extract token from the view if it is embedded inside it as a tag
+        val token = view.getTag(R.id.tag_view_transition_token) as? ViewTransitionToken
+
+        // this should never really happen, but if token embedded inside the view as tag, doesn't
+        // point to a valid view in the registry, remove that token (tag) from the view and registry
+        if (token != null && getView(token) == null) {
+            view.setTag(R.id.tag_view_transition_token, null)
+            remove(token)
+            return null
         }
+
+        return token
     }
 
-    /** Event call to run on registry update (on both [register] and [unregister]) */
+    /** Event call to run on registry update (on both [register] and [unregister]). */
     override fun onRegistryUpdate() {
         emitCountForTrace()
     }
 
     /**
      * Utility function to emit number of non-null views in the registry whenever the registry is
-     * updated (via [register] or [unregister])
+     * updated (via [register] or [unregister]).
      */
     private fun emitCountForTrace() {
         Trace.setCounter("transition_registry_view_count", registry.count().toLong())
     }
 
+    /** Information associated with each transitioning view in the registry. */
+    private data class ViewTransitionInfo(
+
+        /** View being transitioned */
+        val viewRef: WeakReference<View>,
+
+        /** Count of clients (users of this registry) referencing same transitioning view */
+        var viewRefCount: Int = 1
+    )
+
     companion object {
         val instance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { ViewTransitionRegistry() }
     }
diff --git a/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDetector.kt b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDetector.kt
index 2a27a30..6eafb9f 100644
--- a/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDetector.kt
+++ b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDetector.kt
@@ -29,6 +29,14 @@
 import org.jetbrains.uast.UClass
 import org.jetbrains.uast.getContainingUFile
 
+/**
+ * Lint check to ensure that when including a Context or Context-dependent argument in
+ * shade-relevant packages, the argument has the @ShadeDisplayAware annotation.
+ *
+ * This is to ensure that Context-dependent components correctly handle Configuration changes when
+ * the shade is moved to a different display. @ShadeDisplayAware-annotated components will update
+ * accordingly to reflect the new display.
+ */
 class ShadeDisplayAwareDetector : Detector(), SourceCodeScanner {
     override fun getApplicableUastTypes() = listOf(UClass::class.java)
 
@@ -38,8 +46,8 @@
                 for (constructor in node.constructors) {
                     // Visit all injected constructors in shade-relevant packages
                     if (!constructor.hasAnnotation(INJECT_ANNOTATION)) continue
-                    if (!isInRelevantShadePackage(node)) continue
-                    if (IGNORED_PACKAGES.contains(node.qualifiedName)) continue
+                    if (!isInRelevantShadePackage(node.getContainingUFile()?.packageName)) continue
+                    if (IGNORED_CLASSES.contains(node.qualifiedName)) continue
 
                     for (parameter in constructor.parameterList.parameters) {
                         if (parameter.shouldReport()) {
@@ -84,24 +92,19 @@
                 CONFIG_INTERACTOR,
             )
 
-        private val CONFIG_CLASSES = setOf(CONFIG_STATE, CONFIG_CONTROLLER, CONFIG_INTERACTOR)
-
         private val SHADE_WINDOW_PACKAGES =
             listOf(
                 "com.android.systemui.biometrics",
                 "com.android.systemui.bouncer",
                 "com.android.systemui.keyboard.docking.ui.viewmodel",
+                "com.android.systemui.media.controls.ui.controller",
                 "com.android.systemui.qs",
                 "com.android.systemui.shade",
-                "com.android.systemui.statusbar.notification",
+                "com.android.systemui.statusbar.lockscreen",
                 "com.android.systemui.unfold.domain.interactor",
             )
 
-        private val IGNORED_PACKAGES =
-            setOf(
-                "com.android.systemui.biometrics.UdfpsController",
-                "com.android.systemui.qs.customize.TileAdapter",
-            )
+        private val IGNORED_CLASSES = setOf("com.android.systemui.statusbar.phone.SystemUIDialog")
 
         private fun PsiParameter.shouldReport(): Boolean {
             val className = type.canonicalText
@@ -116,8 +119,7 @@
             return true
         }
 
-        private fun isInRelevantShadePackage(node: UClass): Boolean {
-            val packageName = node.getContainingUFile()?.packageName
+        fun isInRelevantShadePackage(packageName: String?): Boolean {
             if (packageName.isNullOrBlank()) return false
             return SHADE_WINDOW_PACKAGES.any { relevantPackage ->
                 packageName.startsWith(relevantPackage)
diff --git a/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetector.kt b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetector.kt
new file mode 100644
index 0000000..4cd5d89
--- /dev/null
+++ b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetector.kt
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.systemui.lint
+
+import com.android.internal.systemui.lint.ShadeDisplayAwareDetector.Companion.isInRelevantShadePackage
+import com.android.tools.lint.detector.api.Category
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Implementation
+import com.android.tools.lint.detector.api.Issue
+import com.android.tools.lint.detector.api.JavaContext
+import com.android.tools.lint.detector.api.Scope
+import com.android.tools.lint.detector.api.Severity
+import com.android.tools.lint.detector.api.SourceCodeScanner
+import com.android.tools.lint.detector.api.UastLintUtils.Companion.tryResolveUDeclaration
+import com.intellij.psi.PsiMethod
+import org.jetbrains.uast.UCallExpression
+import org.jetbrains.uast.getContainingUClass
+import org.jetbrains.uast.getContainingUFile
+
+/**
+ * Lint check to ensure that when creating dialogs shade-relevant packages, the correct Context is
+ * provided.
+ *
+ * This is to ensure that the dialog is created with the correct context when the shade is moved to
+ * a different display. When the shade is moved, the configuration might change, and only
+ * `@ShadeDisplayAware`-annotated components will update accordingly to reflect the new display.
+ *
+ * Example:
+ * ```kotlin
+ * class ExampleClass
+ *      @Inject
+ *      constructor(private val contextInteractor: ShadeDialogContextInteractor) {
+ *
+ *      fun showDialog() {
+ *          val dialog = systemUIDialogFactory.create(delegate, contextInteractor.context)
+ *          dialog.show()
+ *      }
+ *  }
+ * ```
+ */
+// TODO: b/396066687 - update linter after refactoring to use ShadeDialogFactory
+class ShadeDisplayAwareDialogDetector : Detector(), SourceCodeScanner {
+    override fun getApplicableMethodNames(): List<String> = listOf(CREATE_METHOD)
+
+    override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
+        if (!isInRelevantShadePackage(node.getContainingUFile()?.packageName)) return
+        if (!context.evaluator.isMemberInClass(method, SYSUI_DIALOG_FACTORY)) return
+        val contextArg =
+            node.valueArguments.find {
+                it.getExpressionType()?.canonicalText == "android.content.Context"
+            }
+        if (contextArg == null) {
+            context.report(
+                issue = ISSUE,
+                scope = node,
+                location = context.getNameLocation(node),
+                message =
+                    "SystemUIDialog.Factory#create requires a Context that accounts for the " +
+                        "shade's display. Use create(shadeDialogContextInteractor.getContext()) " +
+                        "or create(shadeDialogContextInteractor.context) to provide the correct Context.",
+            )
+        } else {
+            val isProvidedByContextInteractor =
+                contextArg.tryResolveUDeclaration()?.getContainingUClass()?.qualifiedName ==
+                    SHADE_DIALOG_CONTEXT_INTERACTOR
+
+            if (!isProvidedByContextInteractor) {
+                context.report(
+                    issue = ISSUE,
+                    scope = contextArg,
+                    location = context.getNameLocation(contextArg),
+                    message =
+                        "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                            "with the Context directly from ShadeDialogContextInteractor " +
+                            "(ShadeDialogContextInteractor.context or getContext()). " +
+                            "Avoid intermediate variables or function calls. This direct usage " +
+                            "is required to ensure proper shade display handling.",
+                )
+            }
+        }
+    }
+
+    companion object {
+        private const val CREATE_METHOD = "create"
+        private const val SYSUI_DIALOG_FACTORY =
+            "com.android.systemui.statusbar.phone.SystemUIDialog.Factory"
+        private const val SHADE_DIALOG_CONTEXT_INTERACTOR =
+            "com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor"
+
+        @JvmField
+        val ISSUE: Issue =
+            Issue.create(
+                id = "ShadeDisplayAwareDialogChecker",
+                briefDescription = "Checking for shade display aware context when creating dialogs",
+                explanation =
+                    """
+                Dialogs created by the notification shade must use a special Context to appear
+                on the correct display, especially when the shade is not on the default display.
+            """
+                        .trimIndent(),
+                category = Category.CORRECTNESS,
+                priority = 8,
+                severity = Severity.WARNING,
+                implementation =
+                    Implementation(
+                        ShadeDisplayAwareDialogDetector::class.java,
+                        Scope.JAVA_FILE_SCOPE,
+                    ),
+            )
+    }
+}
diff --git a/packages/SystemUI/checks/src/com/android/internal/systemui/lint/SystemUIIssueRegistry.kt b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/SystemUIIssueRegistry.kt
index 6d18f93..adb3116 100644
--- a/packages/SystemUI/checks/src/com/android/internal/systemui/lint/SystemUIIssueRegistry.kt
+++ b/packages/SystemUI/checks/src/com/android/internal/systemui/lint/SystemUIIssueRegistry.kt
@@ -47,6 +47,7 @@
                 TestFunctionNameViolationDetector.ISSUE,
                 MissingApacheLicenseDetector.ISSUE,
                 ShadeDisplayAwareDetector.ISSUE,
+                ShadeDisplayAwareDialogDetector.ISSUE,
                 RegisterContentObserverSyncViaSettingsProxyDetector.SYNC_WARNING,
                 RegisterContentObserverViaContentResolverDetector.CONTENT_RESOLVER_ERROR,
             )
diff --git a/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDetectorTest.kt b/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDetectorTest.kt
index 638d7cb7..f8f8b40 100644
--- a/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDetectorTest.kt
+++ b/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDetectorTest.kt
@@ -410,34 +410,6 @@
             .expectClean()
     }
 
-    @Test
-    fun injectedConstructor_inExemptPackage_withRelevantParameter_withoutAnnotation() {
-        lint()
-            .files(
-                TestFiles.java(
-                    """
-                        package com.android.systemui.qs.customize;
-
-                        import javax.inject.Inject;
-                        import com.android.systemui.qs.dagger.QSThemedContext;
-                        import android.content.Context;
-
-                        public class TileAdapter {
-                            @Inject
-                            public TileAdapter(@QSThemedContext Context context) {}
-                        }
-                    """
-                        .trimIndent()
-                ),
-                *androidStubs,
-                *otherStubs,
-            )
-            .issues(ShadeDisplayAwareDetector.ISSUE)
-            .testModes(TestMode.DEFAULT)
-            .run()
-            .expectClean()
-    }
-
     private fun errorMsgString(lineNumber: Int, className: String) =
         "src/com/android/systemui/shade/example/ExampleClass.kt:$lineNumber: Error: UI elements of " +
             "the shade window should use ShadeDisplayAware-annotated $className, as the shade " +
diff --git a/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetectorTest.kt b/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetectorTest.kt
new file mode 100644
index 0000000..86cdcdc
--- /dev/null
+++ b/packages/SystemUI/checks/tests/com/android/internal/systemui/lint/ShadeDisplayAwareDialogDetectorTest.kt
@@ -0,0 +1,541 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.systemui.lint
+
+import com.android.tools.lint.checks.infrastructure.TestFile
+import com.android.tools.lint.checks.infrastructure.TestFiles
+import com.android.tools.lint.checks.infrastructure.TestMode
+import com.android.tools.lint.detector.api.Detector
+import com.android.tools.lint.detector.api.Issue
+import org.junit.Test
+
+class ShadeDisplayAwareDialogDetectorTest : SystemUILintDetectorTest() {
+    override fun getDetector(): Detector = ShadeDisplayAwareDialogDetector()
+
+    override fun getIssues(): List<Issue> = listOf(ShadeDisplayAwareDialogDetector.ISSUE)
+
+    private val injectStub: TestFile =
+        kotlin(
+                """
+                package javax.inject
+                @Retention(AnnotationRetention.RUNTIME) annotation class Inject
+                """
+            )
+            .indented()
+    private val shadeDisplayAwareStub: TestFile =
+        kotlin(
+                """
+                package com.android.systemui.shade
+                @Retention(AnnotationRetention.RUNTIME) annotation class ShadeDisplayAware
+                """
+            )
+            .indented()
+    private val mainStub: TestFile =
+        kotlin(
+                """
+                package com.android.systemui.dagger.qualifiers
+
+                @Retention(AnnotationRetention.RUNTIME) annotation class Main
+                """
+            )
+            .indented()
+    private val dialogContextStub: TestFile =
+        kotlin(
+                """
+                package com.android.systemui.shade.domain.interactor
+
+                import android.content.Context
+
+                interface ShadeDialogContextInteractor {
+                    val context: Context
+                }
+                """
+            )
+            .indented()
+    private val delegateStub: TestFile =
+        java(
+            """
+                package com.android.systemui.statusbar.phone;
+
+                public interface Delegate { }
+            """
+                .trimIndent()
+        )
+    private val sysuiDialogStub: TestFile =
+        java(
+                """
+            package com.android.systemui.statusbar.phone;
+
+            import android.content.Context;
+            public class SystemUIDialog {
+                public SystemUIDialog(int id) { }
+
+                public static class Factory {
+                    public SystemUIDialog create() {
+                        return new SystemUIDialog();
+                    }
+
+                    public SystemUIDialog create(Context context) {
+                        return new SystemUIDialog();
+                    }
+
+                    public SystemUIDialog create(Delegate delegate, Context context) {
+                        return new SystemUIDialog();
+                    }
+
+                    public SystemUIDialog create(Delegate delegate, Context context,
+                            boolean shouldAcsdDismissDialog) {
+                        return new SystemUIDialog();
+                    }
+
+                    public SystemUIDialog create(Delegate delegate, Context context, int theme) {
+                        return new SystemUIDialog();
+                    }
+
+                    public SystemUIDialog create(Delegate delegate) {
+                        return new SystemUIDialog();
+                    }
+                }
+            }
+            """
+            )
+            .indented()
+
+    private val otherStubs =
+        arrayOf(
+            injectStub,
+            shadeDisplayAwareStub,
+            mainStub,
+            delegateStub,
+            sysuiDialogStub,
+            dialogContextStub,
+        )
+
+    @Test
+    fun create_noArguments() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+
+                        class ExampleClass
+                            @Inject
+                            constructor(private val systemUIDialogFactory: SystemUIDialog.Factory) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create()
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "SystemUIDialog.Factory#create requires a Context that accounts for the " +
+                    "shade's display. Use create(shadeDialogContextInteractor.getContext()) " +
+                    "or create(shadeDialogContextInteractor.context) to provide the correct Context."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_UnannotatedContext() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val context: Context,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(context)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                    "with the Context directly from ShadeDialogContextInteractor " +
+                    "(ShadeDialogContextInteractor.context or getContext()). " +
+                    "Avoid intermediate variables or function calls. This direct usage " +
+                    "is required to ensure proper shade display handling."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_annotatedContext() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.shade.ShadeDisplayAware
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                @ShadeDisplayAware private val context: Context,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(context)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                    "with the Context directly from ShadeDialogContextInteractor " +
+                    "(ShadeDialogContextInteractor.context or getContext()). " +
+                    "Avoid intermediate variables or function calls. This direct usage " +
+                    "is required to ensure proper shade display handling."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_LocalVariable() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
+
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val contextInteractor: ShadeDialogContextInteractor,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val context2 = contextInteractor.context
+                                val dialog = systemUIDialogFactory.create(context2)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                    "with the Context directly from ShadeDialogContextInteractor " +
+                    "(ShadeDialogContextInteractor.context or getContext()). " +
+                    "Avoid intermediate variables or function calls. This direct usage " +
+                    "is required to ensure proper shade display handling."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_delegate_UnannotatedContext() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.statusbar.phone.Delegate
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val context: Context,
+                                private val delegate: Delegate,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate, context)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                    "with the Context directly from ShadeDialogContextInteractor " +
+                    "(ShadeDialogContextInteractor.context or getContext()). " +
+                    "Avoid intermediate variables or function calls. This direct usage " +
+                    "is required to ensure proper shade display handling."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_delegate_Context() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.statusbar.phone.Delegate
+                        import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
+
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val delegate: Delegate,
+                                private val contextInteractor: ShadeDialogContextInteractor,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate, contextInteractor.context)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun create_Delegate_Context_Boolean() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.statusbar.phone.Delegate
+
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val delegate: Delegate,
+                                private val contextInteractor: ShadeDialogContextInteractor,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate, contextInteractor.context, true)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun create_Delegate_UnannotatedContext_Int() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import android.content.Context
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.statusbar.phone.Delegate
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val context: Context,
+                                private val delegate: Delegate,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate, context, 0)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "In shade-relevant packages, SystemUIDialog.Factory#create must be called " +
+                    "with the Context directly from ShadeDialogContextInteractor " +
+                    "(ShadeDialogContextInteractor.context or getContext()). " +
+                    "Avoid intermediate variables or function calls. This direct usage " +
+                    "is required to ensure proper shade display handling."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+
+    @Test
+    fun create_Delegate_Context_Int() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+                        import com.android.systemui.statusbar.phone.Delegate
+
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val delegate: Delegate,
+                                private val contextInteractor: ShadeDialogContextInteractor,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate, contextInteractor.context, 0)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun create_Delegate() {
+        lint()
+            .files(
+                TestFiles.kotlin(
+                    """
+                        package com.android.systemui.shade.example
+                        import javax.inject.Inject
+                        import com.android.systemui.statusbar.phone.Delegate
+                        import com.android.systemui.statusbar.phone.SystemUIDialog
+
+                        class ExampleClass
+                            @Inject
+                            constructor(
+                                private val delegate: Delegate,
+                                private val systemUIDialogFactory: SystemUIDialog.Factory
+                            ) {
+
+                            fun showDialog() {
+                                val dialog = systemUIDialogFactory.create(delegate)
+                                dialog.show()
+                            }
+                        }
+                    """
+                        .trimIndent()
+                ),
+                *androidStubs,
+                *otherStubs,
+            )
+            .issues(ShadeDisplayAwareDialogDetector.ISSUE)
+            .testModes(TestMode.DEFAULT)
+            .run()
+            .expectWarningCount(1)
+            .expectContains(
+                "SystemUIDialog.Factory#create requires a Context that accounts for the " +
+                    "shade's display. Use create(shadeDialogContextInteractor.getContext()) " +
+                    "or create(shadeDialogContextInteractor.context) to provide the correct Context."
+            )
+            .expectContains("[ShadeDisplayAwareDialogChecker]")
+            .expectContains("0 errors, 1 warning")
+    }
+}
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
index a1d362a..8739919 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt
@@ -31,14 +31,13 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.LocalContentColor
 import androidx.compose.material3.contentColorFor
 import androidx.compose.material3.minimumInteractiveComponentSize
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.DisposableEffect
-import androidx.compose.runtime.State
+import androidx.compose.runtime.Stable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.movableContentOf
 import androidx.compose.runtime.mutableStateOf
@@ -62,9 +61,17 @@
 import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.graphics.drawscope.Stroke
 import androidx.compose.ui.graphics.drawscope.scale
+import androidx.compose.ui.graphics.drawscope.translate
+import androidx.compose.ui.graphics.layer.GraphicsLayer
+import androidx.compose.ui.graphics.layer.drawLayer
+import androidx.compose.ui.graphics.rememberGraphicsLayer
 import androidx.compose.ui.layout.boundsInRoot
 import androidx.compose.ui.layout.findRootCoordinates
+import androidx.compose.ui.layout.layout
 import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.layout.onPlaced
+import androidx.compose.ui.node.DrawModifierNode
+import androidx.compose.ui.node.ModifierNodeElement
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.unit.Density
@@ -75,6 +82,8 @@
 import androidx.lifecycle.setViewTreeViewModelStoreOwner
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.savedstate.setViewTreeSavedStateRegistryOwner
+import com.android.compose.modifiers.thenIf
+import com.android.compose.ui.graphics.FullScreenComposeViewInOverlay
 import com.android.systemui.animation.Expandable
 import com.android.systemui.animation.TransitionAnimator
 import kotlin.math.max
@@ -122,6 +131,9 @@
     borderStroke: BorderStroke? = null,
     onClick: ((Expandable) -> Unit)? = null,
     interactionSource: MutableInteractionSource? = null,
+    // TODO(b/285250939): Default this to true then remove once the Compose QS expandables have
+    // proven that the new implementation is robust.
+    useModifierBasedImplementation: Boolean = false,
     content: @Composable (Expandable) -> Unit,
 ) {
     Expandable(
@@ -129,6 +141,7 @@
         modifier,
         onClick,
         interactionSource,
+        useModifierBasedImplementation,
         content,
     )
 }
@@ -157,16 +170,26 @@
  * @sample com.android.systemui.compose.gallery.ActivityLaunchScreen
  * @sample com.android.systemui.compose.gallery.DialogLaunchScreen
  */
-@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun Expandable(
     controller: ExpandableController,
     modifier: Modifier = Modifier,
     onClick: ((Expandable) -> Unit)? = null,
     interactionSource: MutableInteractionSource? = null,
+    // TODO(b/285250939): Default this to true then remove once the Compose QS expandables have
+    // proven that the new implementation is robust.
+    useModifierBasedImplementation: Boolean = false,
     content: @Composable (Expandable) -> Unit,
 ) {
     val controller = controller as ExpandableControllerImpl
+
+    if (useModifierBasedImplementation) {
+        Box(modifier.expandable(controller, onClick, interactionSource)) {
+            WrappedContent(controller.expandable, controller.contentColor, content)
+        }
+        return
+    }
+
     val color = controller.color
     val contentColor = controller.contentColor
     val shape = controller.shape
@@ -277,6 +300,133 @@
     }
 }
 
+@Composable
+@Stable
+private fun Modifier.expandable(
+    controller: ExpandableController,
+    onClick: ((Expandable) -> Unit)? = null,
+    interactionSource: MutableInteractionSource? = null,
+): Modifier {
+    val controller = controller as ExpandableControllerImpl
+
+    val isAnimating = controller.isAnimating
+    val drawInOverlayModifier =
+        if (isAnimating) {
+            val graphicsLayer = rememberGraphicsLayer()
+
+            FullScreenComposeViewInOverlay { view ->
+                Modifier.then(DrawExpandableInOverlayElement(view, controller, graphicsLayer))
+            }
+
+            Modifier.drawWithContent { graphicsLayer.record { this@drawWithContent.drawContent() } }
+        } else {
+            null
+        }
+
+    return this.thenIf(onClick != null) { Modifier.minimumInteractiveComponentSize() }
+        .thenIf(!isAnimating) {
+            Modifier.border(controller)
+                .then(clickModifier(controller, onClick, interactionSource))
+                .background(controller.color, controller.shape)
+        }
+        .thenIf(drawInOverlayModifier != null) { drawInOverlayModifier!! }
+        .onPlaced { controller.boundsInComposeViewRoot = it.boundsInRoot() }
+        .thenIf(!isAnimating && controller.isDialogShowing) {
+            Modifier.layout { measurable, constraints ->
+                measurable.measure(constraints).run {
+                    layout(width, height) { /* Do not place/draw. */ }
+                }
+            }
+        }
+}
+
+private data class DrawExpandableInOverlayElement(
+    private val overlayComposeView: ComposeView,
+    private val controller: ExpandableControllerImpl,
+    private val contentGraphicsLayer: GraphicsLayer,
+) : ModifierNodeElement<DrawExpandableInOverlayNode>() {
+    override fun create(): DrawExpandableInOverlayNode {
+        return DrawExpandableInOverlayNode(overlayComposeView, controller, contentGraphicsLayer)
+    }
+
+    override fun update(node: DrawExpandableInOverlayNode) {
+        node.update(overlayComposeView, controller, contentGraphicsLayer)
+    }
+}
+
+private class DrawExpandableInOverlayNode(
+    composeView: ComposeView,
+    controller: ExpandableControllerImpl,
+    private var contentGraphicsLayer: GraphicsLayer,
+) : Modifier.Node(), DrawModifierNode {
+    private var controller = controller
+        set(value) {
+            resetCurrentNodeInOverlay()
+            field = value
+            setCurrentNodeInOverlay()
+        }
+
+    private var composeViewLocationOnScreen = composeView.locationOnScreen
+
+    fun update(
+        composeView: ComposeView,
+        controller: ExpandableControllerImpl,
+        contentGraphicsLayer: GraphicsLayer,
+    ) {
+        this.controller = controller
+        this.composeViewLocationOnScreen = composeView.locationOnScreen
+        this.contentGraphicsLayer = contentGraphicsLayer
+    }
+
+    override fun onAttach() {
+        setCurrentNodeInOverlay()
+    }
+
+    override fun onDetach() {
+        resetCurrentNodeInOverlay()
+    }
+
+    private fun setCurrentNodeInOverlay() {
+        controller.currentNodeInOverlay = this
+    }
+
+    private fun resetCurrentNodeInOverlay() {
+        if (controller.currentNodeInOverlay == this) {
+            controller.currentNodeInOverlay = null
+        }
+    }
+
+    override fun ContentDrawScope.draw() {
+        val state = controller.animatorState ?: return
+        val topOffset = state.top.toFloat() - composeViewLocationOnScreen[1]
+        val leftOffset = state.left.toFloat() - composeViewLocationOnScreen[0]
+
+        translate(top = topOffset, left = leftOffset) {
+            // Background.
+            this@draw.drawBackground(
+                state,
+                controller.color,
+                controller.borderStroke,
+                size = Size(state.width.toFloat(), state.height.toFloat()),
+            )
+
+            // Content, scaled & centered w.r.t. the animated state bounds.
+            val contentSize = controller.boundsInComposeViewRoot.size
+            val contentWidth = contentSize.width
+            val contentHeight = contentSize.height
+            val scale = min(state.width / contentWidth, state.height / contentHeight)
+            scale(scale, pivot = Offset(state.width / 2f, state.height / 2f)) {
+                translate(
+                    left = (state.width - contentWidth) / 2f,
+                    top = (state.height - contentHeight) / 2f,
+                ) {
+                    drawLayer(contentGraphicsLayer)
+                }
+            }
+        }
+    }
+}
+
 private fun clickModifier(
     controller: ExpandableControllerImpl,
     onClick: ((Expandable) -> Unit)?,
@@ -447,6 +597,7 @@
     animatorState: TransitionAnimator.State,
     color: Color,
     border: BorderStroke?,
+    size: Size = this.size,
 ) {
     val topRadius = animatorState.topCornerRadius
     val bottomRadius = animatorState.bottomCornerRadius
@@ -455,7 +606,7 @@
         val cornerRadius = CornerRadius(topRadius)
 
         // Draw the background.
-        drawRoundRect(color, cornerRadius = cornerRadius)
+        drawRoundRect(color, cornerRadius = cornerRadius, size = size)
 
         // Draw the border.
         if (border != null) {
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
index 377ea96c..a03c896 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
@@ -25,6 +25,8 @@
 import androidx.compose.material3.contentColorFor
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.Stable
+import androidx.compose.runtime.State
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -36,6 +38,8 @@
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Outline
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.node.DrawModifierNode
+import androidx.compose.ui.node.invalidateDraw
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.LocalView
@@ -50,6 +54,7 @@
 import kotlin.math.roundToInt
 
 /** A controller that can control animated launches from an [Expandable]. */
+@Stable
 interface ExpandableController {
     /** The [Expandable] controlled by this controller. */
     val expandable: Expandable
@@ -146,6 +151,11 @@
     /** The [ActivityTransitionAnimator.Controller] to be cleaned up [onDispose]. */
     private var activityControllerForDisposal: ActivityTransitionAnimator.Controller? = null
 
+    /**
+     * The current [DrawModifierNode] in the overlay, drawing the expandable during a transition.
+     */
+    internal var currentNodeInOverlay: DrawModifierNode? = null
+
     override val expandable: Expandable =
         object : Expandable {
             override fun activityTransitionController(
@@ -204,6 +214,10 @@
 
             override fun onTransitionAnimationEnd(isExpandingFullyAbove: Boolean) {
                 animatorState = null
+
+                // Force invalidate the drawing done in the overlay whenever the animation state
+                // changes.
+                currentNodeInOverlay?.invalidateDraw()
             }
 
             override fun onTransitionAnimationProgress(
@@ -227,6 +241,10 @@
                 // Force measure and layout the ComposeView in the overlay whenever the animation
                 // state changes.
                 currentComposeViewInOverlay?.let { measureAndLayoutComposeViewInOverlay(it, state) }
+
+                // Force invalidate the drawing done in the overlay whenever the animation state
+                // changes.
+                currentNodeInOverlay?.invalidateDraw()
             }
 
             override fun createAnimatorState(): TransitionAnimator.State {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt
index f0d3f3e..9c85c96 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt
@@ -80,6 +80,7 @@
 import com.android.systemui.common.shared.model.Icon
 import com.android.systemui.common.ui.compose.Icon
 import com.android.systemui.compose.modifiers.sysuiResTag
+import com.android.systemui.qs.flags.QSComposeFragment
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsButtonViewModel
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsForegroundServicesButtonViewModel
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsSecurityButtonViewModel
@@ -218,11 +219,24 @@
                 Spacer(Modifier.weight(1f))
             }
 
-            security?.let { SecurityButton(it, Modifier.weight(1f)) }
-            foregroundServices?.let { ForegroundServicesButton(it) }
-            userSwitcher?.let { IconButton(it, Modifier.sysuiResTag("multi_user_switch")) }
-            IconButton(viewModel.settings, Modifier.sysuiResTag("settings_button_container"))
-            power?.let { IconButton(it, Modifier.sysuiResTag("pm_lite")) }
+            val useModifierBasedExpandable = remember { QSComposeFragment.isEnabled }
+            security?.let { SecurityButton(it, useModifierBasedExpandable, Modifier.weight(1f)) }
+            foregroundServices?.let { ForegroundServicesButton(it, useModifierBasedExpandable) }
+            userSwitcher?.let {
+                IconButton(
+                    it,
+                    useModifierBasedExpandable,
+                    Modifier.sysuiResTag("multi_user_switch"),
+                )
+            }
+            IconButton(
+                viewModel.settings,
+                useModifierBasedExpandable,
+                Modifier.sysuiResTag("settings_button_container"),
+            )
+            power?.let {
+                IconButton(it, useModifierBasedExpandable, Modifier.sysuiResTag("pm_lite"))
+            }
         }
     }
 }
@@ -231,6 +245,7 @@
 @Composable
 private fun SecurityButton(
     model: FooterActionsSecurityButtonViewModel,
+    useModifierBasedExpandable: Boolean,
     modifier: Modifier = Modifier,
 ) {
     val onClick: ((Expandable) -> Unit)? =
@@ -239,13 +254,21 @@
             { expandable -> onClick(context, expandable) }
         }
 
-    TextButton(model.icon, model.text, showNewDot = false, onClick = onClick, modifier)
+    TextButton(
+        model.icon,
+        model.text,
+        showNewDot = false,
+        onClick = onClick,
+        useModifierBasedExpandable,
+        modifier,
+    )
 }
 
 /** The foreground services button. */
 @Composable
 private fun RowScope.ForegroundServicesButton(
-    model: FooterActionsForegroundServicesButtonViewModel
+    model: FooterActionsForegroundServicesButtonViewModel,
+    useModifierBasedExpandable: Boolean,
 ) {
     if (model.displayText) {
         TextButton(
@@ -253,6 +276,7 @@
             model.text,
             showNewDot = model.hasNewChanges,
             onClick = model.onClick,
+            useModifierBasedExpandable,
             Modifier.weight(1f),
         )
     } else {
@@ -261,13 +285,18 @@
             contentDescription = model.text,
             showNewDot = model.hasNewChanges,
             onClick = model.onClick,
+            useModifierBasedExpandable,
         )
     }
 }
 
 /** A button with an icon. */
 @Composable
-fun IconButton(model: FooterActionsButtonViewModel, modifier: Modifier = Modifier) {
+fun IconButton(
+    model: FooterActionsButtonViewModel,
+    useModifierBasedExpandable: Boolean,
+    modifier: Modifier = Modifier,
+) {
     Expandable(
         color = colorAttr(model.backgroundColor),
         shape = CircleShape,
@@ -277,6 +306,7 @@
                 color = MaterialTheme.colorScheme.secondary,
                 CornerSize(percent = 50),
             ),
+        useModifierBasedImplementation = useModifierBasedExpandable,
     ) {
         val tint = model.iconTint?.let { Color(it) } ?: Color.Unspecified
         Icon(model.icon, tint = tint, modifier = Modifier.size(20.dp))
@@ -290,6 +320,7 @@
     contentDescription: String,
     showNewDot: Boolean,
     onClick: (Expandable) -> Unit,
+    useModifierBasedExpandable: Boolean,
     modifier: Modifier = Modifier,
 ) {
     // By default Expandable will show a ripple above its content when clicked, and clip the content
@@ -309,6 +340,7 @@
                 color = MaterialTheme.colorScheme.secondary,
                 CornerSize(percent = 50),
             ),
+        useModifierBasedImplementation = useModifierBasedExpandable,
     ) {
         Box(Modifier.size(40.dp)) {
             Box(
@@ -355,6 +387,7 @@
     text: String,
     showNewDot: Boolean,
     onClick: ((Expandable) -> Unit)?,
+    useModifierBasedExpandable: Boolean,
     modifier: Modifier = Modifier,
 ) {
     Expandable(
@@ -367,12 +400,17 @@
                 .padding(horizontal = 4.dp)
                 .borderOnFocus(color = MaterialTheme.colorScheme.secondary, CornerSize(50)),
         onClick = onClick,
+        useModifierBasedImplementation = useModifierBasedExpandable,
     ) {
         Row(
             Modifier.padding(horizontal = dimensionResource(R.dimen.qs_footer_padding)),
             verticalAlignment = Alignment.CenterVertically,
         ) {
-            Icon(icon, Modifier.padding(end = 12.dp).size(20.dp))
+            Icon(
+                icon,
+                Modifier.padding(end = 12.dp).size(20.dp),
+                colorAttr(R.attr.onShadeInactiveVariant),
+            )
 
             Text(
                 text,
@@ -381,6 +419,7 @@
                 // TODO(b/242040009): Remove this letter spacing. We should only use the M3 text
                 // styles without modifying them.
                 letterSpacing = 0.01.em,
+                color = colorAttr(R.attr.onShadeInactiveVariant),
                 maxLines = 1,
                 overflow = TextOverflow.Ellipsis,
             )
@@ -394,6 +433,7 @@
                     painterResource(com.android.internal.R.drawable.ic_chevron_end),
                     contentDescription = null,
                     Modifier.padding(start = 8.dp).size(20.dp),
+                    colorAttr(R.attr.onShadeInactiveVariant),
                 )
             }
         }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
index da0b8ac..0f1cb40 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
@@ -50,6 +50,8 @@
 import com.android.systemui.compose.modifiers.sysuiResTag
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.lifecycle.rememberViewModel
+import com.android.systemui.media.controls.ui.composable.MediaCarousel
+import com.android.systemui.media.controls.ui.view.MediaHostState.Companion.COLLAPSED
 import com.android.systemui.notifications.ui.composable.SnoozeableHeadsUpNotificationSpace
 import com.android.systemui.qs.composefragment.ui.GridAnchor
 import com.android.systemui.qs.flags.QsDetailedView
@@ -104,7 +106,10 @@
             }
         val quickSettingsContainerViewModel =
             rememberViewModel("QuickSettingsShadeOverlayContainer") {
-                quickSettingsContainerViewModelFactory.create(supportsBrightnessMirroring = true)
+                quickSettingsContainerViewModelFactory.create(
+                    supportsBrightnessMirroring = true,
+                    expansion = COLLAPSED,
+                )
             }
         val hunPlaceholderViewModel =
             rememberViewModel("QuickSettingsShadeOverlayPlaceholder") {
@@ -232,12 +237,20 @@
         Toolbar(
             modifier =
                 Modifier.fillMaxWidth().requiredHeight(QuickSettingsShade.Dimensions.ToolbarHeight),
-            toolbarViewModelFactory = viewModel.toolbarViewModelFactory,
+            viewModel = viewModel.toolbarViewModel,
         )
         Column(
             verticalArrangement = Arrangement.spacedBy(QuickSettingsShade.Dimensions.Padding),
             modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()),
         ) {
+            MediaCarousel(
+                isVisible = viewModel.showMedia,
+                mediaHost = viewModel.mediaHost,
+                carouselController = viewModel.mediaCarouselController,
+                usingCollapsedLandscapeMedia = true,
+                modifier = Modifier.padding(horizontal = QuickSettingsShade.Dimensions.Padding),
+            )
+
             BrightnessSliderContainer(
                 viewModel = viewModel.brightnessSliderViewModel,
                 containerColor = OverlayShade.Colors.PanelBackground,
@@ -245,6 +258,7 @@
                     Modifier.fillMaxWidth()
                         .height(QuickSettingsShade.Dimensions.BrightnessSliderHeight),
             )
+
             Box {
                 GridAnchor()
                 TileGrid(
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt
index 60eaa28..b9aca25 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt
@@ -21,7 +21,6 @@
 import com.android.compose.animation.scene.OverlayKey
 import com.android.compose.animation.scene.SceneKey
 import com.android.compose.animation.scene.TransitionKey
-import com.android.compose.animation.scene.content.state.TransitionState
 import com.android.compose.animation.scene.observableTransitionState
 import com.android.systemui.scene.shared.model.SceneDataSource
 import kotlinx.coroutines.CoroutineScope
@@ -106,6 +105,6 @@
     }
 
     override fun freezeAndAnimateToCurrentState() {
-        (state.transitionState as? TransitionState.Transition)?.freezeAndAnimateToCurrentState()
+        state.currentTransition?.freezeAndAnimateToCurrentState()
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
index 02de78b..5e12ee1 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
@@ -25,8 +25,8 @@
 import androidx.compose.foundation.interaction.collectIsHoveredAsState
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.IntrinsicSize
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.RowScope
 import androidx.compose.foundation.layout.Spacer
@@ -43,10 +43,8 @@
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clip
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.TransformOrigin
 import androidx.compose.ui.graphics.graphicsLayer
@@ -80,18 +78,17 @@
 import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.chipBackground
 import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.chipHighlighted
 import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.onScrimDim
+import com.android.systemui.shade.ui.composable.ShadeHeader.Dimensions.ChipPaddingHorizontal
+import com.android.systemui.shade.ui.composable.ShadeHeader.Dimensions.ChipPaddingVertical
 import com.android.systemui.shade.ui.composable.ShadeHeader.Dimensions.CollapsedHeight
 import com.android.systemui.shade.ui.composable.ShadeHeader.Values.ClockScale
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel.HeaderChipHighlight
-import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
-import com.android.systemui.statusbar.phone.NotificationIconContainer
 import com.android.systemui.statusbar.phone.StatusBarLocation
 import com.android.systemui.statusbar.phone.StatusIconContainer
 import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernShadeCarrierGroupMobileView
 import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.ShadeCarrierGroupMobileIconViewModel
 import com.android.systemui.statusbar.policy.Clock
-import kotlinx.coroutines.launch
 
 object ShadeHeader {
     object Elements {
@@ -110,6 +107,8 @@
     object Dimensions {
         val CollapsedHeight = 48.dp
         val ExpandedHeight = 120.dp
+        val ChipPaddingHorizontal = 8.dp
+        val ChipPaddingVertical = 4.dp
     }
 
     object Colors {
@@ -149,9 +148,6 @@
             }
         }
 
-    val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
-    val shorterDateText by viewModel.shorterDateText.collectAsStateWithLifecycle()
-
     val isShadeLayoutWide = viewModel.isShadeLayoutWide
 
     val isPrivacyChipVisible by viewModel.isPrivacyChipVisible.collectAsStateWithLifecycle()
@@ -167,8 +163,8 @@
             ) {
                 Clock(scale = 1f, onClick = viewModel::onClockClicked)
                 VariableDayDate(
-                    longerDateText = longerDateText,
-                    shorterDateText = shorterDateText,
+                    longerDateText = viewModel.longerDateText,
+                    shorterDateText = viewModel.shorterDateText,
                     chipHighlight = viewModel.notificationsChipHighlight,
                     modifier = Modifier.element(ShadeHeader.Elements.CollapsedContentStart),
                 )
@@ -229,8 +225,6 @@
         derivedStateOf { shouldUseExpandedFormat(layoutState.transitionState) }
     }
 
-    val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
-    val shorterDateText by viewModel.shorterDateText.collectAsStateWithLifecycle()
     val isPrivacyChipVisible by viewModel.isPrivacyChipVisible.collectAsStateWithLifecycle()
 
     Box(modifier = modifier.sysuiResTag(ShadeHeader.TestTags.Root)) {
@@ -269,8 +263,8 @@
                 modifier = Modifier.element(ShadeHeader.Elements.ExpandedContent),
             ) {
                 VariableDayDate(
-                    longerDateText = longerDateText,
-                    shorterDateText = shorterDateText,
+                    longerDateText = viewModel.longerDateText,
+                    shorterDateText = viewModel.shorterDateText,
                     chipHighlight = viewModel.notificationsChipHighlight,
                     modifier = Modifier.widthIn(max = 90.dp),
                 )
@@ -324,28 +318,15 @@
                     )
                     Spacer(modifier = Modifier.width(5.dp))
                 }
-                val chipHighlight = viewModel.notificationsChipHighlight
-                NotificationIconChip(
-                    chipHighlight = chipHighlight,
+                NotificationsChip(
+                    chipHighlight = viewModel.notificationsChipHighlight,
                     onClick = viewModel::onNotificationIconChipClicked,
                 ) {
-                    if (isShadeLayoutWide) {
-                        NotificationIcons(
-                            chipHighlight = chipHighlight,
-                            notificationIconContainerStatusBarViewBinder =
-                                viewModel.notificationIconContainerStatusBarViewBinder,
-                            modifier = Modifier.width(IntrinsicSize.Min).height(20.dp),
-                        )
-                    } else {
-                        val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
-                        val shorterDateText by
-                            viewModel.shorterDateText.collectAsStateWithLifecycle()
-                        VariableDayDate(
-                            longerDateText = longerDateText,
-                            shorterDateText = shorterDateText,
-                            chipHighlight = viewModel.notificationsChipHighlight,
-                        )
-                    }
+                    VariableDayDate(
+                        longerDateText = viewModel.longerDateText,
+                        shorterDateText = viewModel.shorterDateText,
+                        chipHighlight = viewModel.notificationsChipHighlight,
+                    )
                 }
             }
         },
@@ -546,11 +527,8 @@
 
 @Composable
 private fun ShadeCarrierGroup(viewModel: ShadeHeaderViewModel, modifier: Modifier = Modifier) {
-    Row(modifier = modifier) {
-        val subIds by viewModel.mobileSubIds.collectAsStateWithLifecycle()
-
-        for (subId in subIds) {
-            Spacer(modifier = Modifier.width(5.dp))
+    Row(modifier = modifier, horizontalArrangement = Arrangement.spacedBy(5.dp)) {
+        for (subId in viewModel.mobileSubIds) {
             AndroidView(
                 factory = { context ->
                     ModernShadeCarrierGroupMobileView.constructAndBind(
@@ -571,31 +549,6 @@
 }
 
 @Composable
-private fun NotificationIcons(
-    chipHighlight: HeaderChipHighlight,
-    notificationIconContainerStatusBarViewBinder: NotificationIconContainerStatusBarViewBinder,
-    modifier: Modifier = Modifier,
-) {
-    val scope = rememberCoroutineScope()
-
-    AndroidView(
-        factory = { context ->
-            NotificationIconContainer(context, null).also { view ->
-                view.setOverrideIconColor(true)
-                scope.launch {
-                    notificationIconContainerStatusBarViewBinder.bindWhileAttached(
-                        view = view,
-                        displayId = context.displayId,
-                    )
-                }
-            }
-        },
-        update = { it.setUseInverseOverrideIconColor(chipHighlight is HeaderChipHighlight.Strong) },
-        modifier = modifier,
-    )
-}
-
-@Composable
 private fun ContentScope.StatusIcons(
     viewModel: ShadeHeaderViewModel,
     useExpandedFormat: Boolean,
@@ -675,32 +628,29 @@
 }
 
 @Composable
-private fun NotificationIconChip(
+private fun NotificationsChip(
     chipHighlight: HeaderChipHighlight,
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
-    content: @Composable RowScope.() -> Unit,
+    content: @Composable BoxScope.() -> Unit,
 ) {
     val interactionSource = remember { MutableInteractionSource() }
-    Box(modifier = modifier) {
-        Row(
-            modifier =
-                Modifier.align(Alignment.CenterStart)
-                    .clickable(
-                        interactionSource = interactionSource,
-                        indication = null,
-                        onClick = { onClick() },
-                    )
-                    .clip(RoundedCornerShape(25.dp))
-                    .background(
-                        if (chipHighlight is HeaderChipHighlight.Strong)
-                            MaterialTheme.colorScheme.chipHighlighted
-                        else MaterialTheme.colorScheme.chipBackground
-                    )
-                    .padding(horizontal = 8.dp, vertical = 4.dp)
-        ) {
-            content()
+    val chipBackground =
+        with(MaterialTheme.colorScheme) {
+            if (chipHighlight is HeaderChipHighlight.Strong) chipHighlighted else chipBackground
         }
+    Box(
+        modifier =
+            modifier
+                .clickable(
+                    interactionSource = interactionSource,
+                    indication = null,
+                    onClick = onClick,
+                )
+                .background(chipBackground, RoundedCornerShape(25.dp))
+                .padding(horizontal = ChipPaddingHorizontal, vertical = ChipPaddingVertical)
+    ) {
+        content()
     }
 }
 
@@ -714,23 +664,21 @@
     val interactionSource = remember { MutableInteractionSource() }
     val isHovered by interactionSource.collectIsHoveredAsState()
     val hoverModifier =
-        Modifier.clip(RoundedCornerShape(CollapsedHeight / 4))
-            .background(MaterialTheme.colorScheme.onScrimDim)
+        with(MaterialTheme.colorScheme) {
+            Modifier.background(onScrimDim, RoundedCornerShape(CollapsedHeight / 4))
+        }
     val backgroundColor =
-        if (chipHighlight is HeaderChipHighlight.Strong) MaterialTheme.colorScheme.chipHighlighted
-        else MaterialTheme.colorScheme.chipBackground
+        with(MaterialTheme.colorScheme) {
+            if (chipHighlight is HeaderChipHighlight.Strong) chipHighlighted else chipBackground
+        }
 
     Row(
         verticalAlignment = Alignment.CenterVertically,
         modifier =
             modifier
                 .thenIf(chipHighlight !is HeaderChipHighlight.None) {
-                    Modifier.graphicsLayer {
-                            shape = RoundedCornerShape(25.dp)
-                            clip = true
-                        }
-                        .background(backgroundColor)
-                        .padding(horizontal = 8.dp, vertical = 4.dp)
+                    Modifier.background(backgroundColor, RoundedCornerShape(25.dp))
+                        .padding(horizontal = ChipPaddingHorizontal, vertical = ChipPaddingVertical)
                 }
                 .thenIf(onClick != null) {
                     Modifier.clickable(
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
index 8317aa3..54be4d8 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
@@ -215,12 +215,7 @@
             )
         }
 
-        setInterpolatedViewBounds(
-            getInterpolatedTextBounds(),
-            widthMeasureSpec,
-            heightMeasureSpec,
-            force = true,
-        )
+        setInterpolatedViewBounds(getInterpolatedTextBounds(), widthMeasureSpec, heightMeasureSpec)
     }
 
     override fun onDraw(canvas: Canvas) {
@@ -388,7 +383,6 @@
         interpBounds: Rect,
         widthMeasureSpec: Int = measuredWidthAndState,
         heightMeasureSpec: Int = measuredHeightAndState,
-        force: Boolean = false,
     ) {
         val heightMode = MeasureSpec.getMode(heightMeasureSpec)
         val widthMode = MeasureSpec.getMode(widthMeasureSpec)
@@ -415,10 +409,7 @@
                 )
             }
 
-        if (force || widthSpec != measuredWidthAndState || heightSpec != measuredHeightAndState) {
-            setMeasuredDimension(widthSpec, heightSpec)
-            parent?.requestLayout()
-        }
+        setMeasuredDimension(widthSpec, heightSpec)
     }
 
     private fun updateXTranslation(inPoint: Point, interpolatedTextBounds: Rect): Point {
diff --git a/packages/SystemUI/lint-baseline.xml b/packages/SystemUI/lint-baseline.xml
index b0963d3..993932c 100644
--- a/packages/SystemUI/lint-baseline.xml
+++ b/packages/SystemUI/lint-baseline.xml
@@ -32784,4 +32784,15 @@
             column="23"/>
     </issue>
 
+    <issue
+        id="ShadeDisplayAwareContextChecker"
+        message="UI elements of the shade window should use ShadeDisplayAware-annotated Context, as the shade might move between windows, and only @ShadeDisplayAware resources are updated with the new configuration correctly. Failures to do so might result in wrong dimensions for shade window classes (e.g. using the wrong density or theme). If the usage of Context is not related to display specific configuration or UI, then there is technically no need to use the annotation, and you can annotate the class with @SuppressLint(&quot;ShadeDisplayAwareContextChecker&quot;)/@Suppress(&quot;ShadeDisplayAwareContextChecker&quot;)"
+        errorLine1="            @QSThemedContext Context context,"
+        errorLine2="                                     ~~~~~~~">
+        <location
+            file="frameworks/base/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java"
+            line="126"
+            column="38"/>
+    </issue>
+
 </issues>
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
index 052d520..18b68d2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/GhostedViewTransitionAnimatorControllerTest.kt
@@ -153,10 +153,12 @@
     private class FakeViewTransitionRegistry : IViewTransitionRegistry {
 
         val registry = mutableMapOf<ViewTransitionToken, View>()
+        val token = ViewTransitionToken()
 
-        override fun register(token: ViewTransitionToken, view: View) {
+        override fun register(view: View): ViewTransitionToken {
             registry[token] = view
             view.setTag(R.id.tag_view_transition_token, token)
+            return token
         }
 
         override fun unregister(token: ViewTransitionToken) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt
index ef91c79..b18eafd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt
@@ -25,9 +25,9 @@
 import org.junit.Before
 import org.junit.runner.RunWith
 import org.mockito.kotlin.argumentCaptor
-import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 import kotlin.test.Test
 
 @SmallTest
@@ -36,24 +36,22 @@
 
     private lateinit var view: View
     private lateinit var underTest: ViewTransitionRegistry
-    private var token: ViewTransitionToken = ViewTransitionToken()
 
     @Before
     fun setup() {
         view = FrameLayout(mContext)
         underTest = ViewTransitionRegistry()
-        token = ViewTransitionToken()
     }
 
     @Test
     fun testSuccessfulRegisterInViewTransitionRegistry() {
-        underTest.register(token, view)
+        val token = underTest.register(view)
         assertThat(underTest.getView(token)).isNotNull()
     }
 
     @Test
     fun testSuccessfulUnregisterInViewTransitionRegistry() {
-        underTest.register(token, view)
+        val token = underTest.register(view)
         assertThat(underTest.getView(token)).isNotNull()
 
         underTest.unregister(token)
@@ -62,13 +60,14 @@
 
     @Test
     fun testSuccessfulUnregisterOnViewDetachedFromWindow() {
-        val view: View = mock {
-            on { getTag(R.id.tag_view_transition_token) } doReturn token
-        }
+        val view: View = mock()
 
-        underTest.register(token, view)
+        val token = underTest.register(view)
+        assertThat(token).isEqualTo(token)
         assertThat(underTest.getView(token)).isNotNull()
 
+        whenever(view.getTag(R.id.tag_view_transition_token)).thenReturn(token)
+
         argumentCaptor<View.OnAttachStateChangeListener>()
             .apply { verify(view).addOnAttachStateChangeListener(capture()) }
             .firstValue
@@ -76,4 +75,58 @@
 
         assertThat(underTest.getView(token)).isNull()
     }
+
+    @Test
+    fun testMultipleRegisterOnSameView() {
+        val token = underTest.register(view)
+
+        // multiple register on same view should return same token
+        assertThat(underTest.register(view)).isEqualTo(token)
+
+        // 1st unregister doesn't remove the token from registry as refCount = 2
+        underTest.unregister(token)
+        assertThat(underTest.getView(token)).isNotNull()
+
+        // 2nd unregister removes the token from registry
+        underTest.unregister(token)
+        assertThat(underTest.getView(token)).isNull()
+    }
+
+    @Test
+    fun testMultipleRegisterOnSameViewRemovedAfterViewDetached() {
+        val view: View = mock()
+
+        val token = underTest.register(view)
+        whenever(view.getTag(R.id.tag_view_transition_token)).thenReturn(token)
+
+        assertThat(underTest.getViewToken(view)).isEqualTo(token)
+
+        // mock view's detach event
+        val caller = argumentCaptor<View.OnAttachStateChangeListener>()
+            .apply { verify(view).addOnAttachStateChangeListener(capture()) }
+            .firstValue
+
+        // register 3 times
+        underTest.register(view)
+        underTest.register(view)
+        underTest.register(view)
+
+        // unregister 1 time and verify entry should still be present in registry
+        underTest.unregister(token)
+        assertThat(underTest.getView(token)).isNotNull()
+
+        // view's associated entry should be gone from registry, after view detaches
+        caller.onViewDetachedFromWindow(view)
+        assertThat(underTest.getView(token)).isNull()
+    }
+
+    @Test
+    fun testDistinctViewsSameClassRegisterWithDifferentToken() {
+        var prev: ViewTransitionToken? = underTest.register(FrameLayout(mContext))
+        for (i in 0 until 10) {
+            val curr = underTest.register(FrameLayout(mContext))
+            assertThat(curr).isNotEqualTo(prev)
+            prev = curr
+        }
+    }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
index 50762ed..88c9e74 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
@@ -21,6 +21,7 @@
 import android.hardware.biometrics.BiometricAuthenticator
 import android.hardware.biometrics.BiometricConstants
 import android.hardware.biometrics.BiometricManager
+import android.hardware.biometrics.BiometricPrompt
 import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton
 import android.hardware.biometrics.PromptInfo
 import android.hardware.biometrics.PromptVerticalListContentView
@@ -290,7 +291,7 @@
 
         verify(callback)
             .onDismissed(
-                eq(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED),
+                eq(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRM_NOT_REQUIRED),
                 eq<ByteArray?>(null), /* credentialAttestation */
                 eq(authContainer?.requestId ?: 0L),
             )
@@ -310,7 +311,7 @@
             )
         verify(callback)
             .onDismissed(
-                eq(AuthDialogCallback.DISMISSED_USER_CANCELED),
+                eq(BiometricPrompt.DISMISSED_REASON_USER_CANCEL),
                 eq<ByteArray?>(null), /* credentialAttestation */
                 eq(authContainer?.requestId ?: 0L),
             )
@@ -325,7 +326,7 @@
 
         verify(callback)
             .onDismissed(
-                eq(AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE),
+                eq(BiometricPrompt.DISMISSED_REASON_NEGATIVE),
                 eq<ByteArray?>(null), /* credentialAttestation */
                 eq(authContainer?.requestId ?: 0L),
             )
@@ -352,7 +353,7 @@
 
         verify(callback)
             .onDismissed(
-                eq(AuthDialogCallback.DISMISSED_ERROR),
+                eq(BiometricPrompt.DISMISSED_REASON_ERROR),
                 eq<ByteArray?>(null), /* credentialAttestation */
                 eq(authContainer?.requestId ?: 0L),
             )
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
index acc97a9..a1a2aa7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
@@ -138,9 +138,9 @@
     @Mock
     private IBiometricContextListener mContextListener;
     @Mock
-    private AuthDialog mDialog1;
+    private AuthContainerView mDialog1;
     @Mock
-    private AuthDialog mDialog2;
+    private AuthContainerView mDialog2;
     @Mock
     private CommandQueue mCommandQueue;
     @Mock
@@ -382,7 +382,7 @@
     @Test
     public void testSendsReasonUserCanceled_whenDismissedByUserCancel() throws Exception {
         showDialog(new int[]{1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_USER_CANCELED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_USER_CANCEL,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -393,7 +393,7 @@
     @Test
     public void testSendsReasonNegative_whenDismissedByButtonNegative() throws Exception {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_NEGATIVE,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -404,7 +404,7 @@
     @Test
     public void testSendsReasonConfirmed_whenDismissedByButtonPositive() throws Exception {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_BUTTON_POSITIVE,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRMED,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -415,7 +415,7 @@
     @Test
     public void testSendsReasonConfirmNotRequired_whenDismissedByAuthenticated() throws Exception {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRM_NOT_REQUIRED,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -426,7 +426,7 @@
     @Test
     public void testSendsReasonError_whenDismissedByError() throws Exception {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_ERROR,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_ERROR,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -437,7 +437,7 @@
     @Test
     public void testSendsReasonServerRequested_whenDismissedByServer() throws Exception {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_BY_SYSTEM_SERVER,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_SERVER_REQUESTED,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -452,7 +452,7 @@
 
         final byte[] credentialAttestation = generateRandomHAT();
 
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED,
                 credentialAttestation, mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
                 eq(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED),
@@ -462,7 +462,7 @@
     @Test
     public void testSendsReasonContentViewMoreOptions_whenButtonPressed() throws Exception {
         showDialog(new int[]{1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_BUTTON_CONTENT_VIEW_MORE_OPTIONS,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_CONTENT_VIEW_MORE_OPTIONS,
                 null, /* credentialAttestation */
                 mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
@@ -696,7 +696,7 @@
 
         final byte[] credentialAttestation = generateRandomHAT();
 
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED,
                 credentialAttestation, mAuthController.mCurrentDialog.getRequestId());
         verify(mReceiver).onDialogDismissed(
                 eq(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED),
@@ -755,7 +755,7 @@
     public void testDoesNotCrash_whenTryAgainPressedAfterDismissal() {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
         final long requestID = mAuthController.mCurrentDialog.getRequestId();
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_USER_CANCELED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_USER_CANCEL,
                 null, /* credentialAttestation */requestID);
         mAuthController.onTryAgainPressed(requestID);
     }
@@ -764,7 +764,7 @@
     public void testDoesNotCrash_whenDeviceCredentialPressedAfterDismissal() {
         showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */);
         final long requestID = mAuthController.mCurrentDialog.getRequestId();
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_USER_CANCELED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_USER_CANCEL,
                 null /* credentialAttestation */, requestID);
         mAuthController.onDeviceCredentialPressed(requestID);
     }
@@ -818,7 +818,7 @@
 
         // WHEN dialog is shown and then dismissed
         showDialog(new int[]{1} /* sensorIds */, false /* credentialAllowed */);
-        mAuthController.onDismissed(AuthDialogCallback.DISMISSED_USER_CANCELED,
+        mAuthController.onDismissed(BiometricPrompt.DISMISSED_REASON_USER_CANCEL,
                 null /* credentialAttestation */,
                 mAuthController.mCurrentDialog.getRequestId());
 
@@ -1218,14 +1218,14 @@
         }
 
         @Override
-        protected AuthDialog buildDialog(DelayableExecutor bgExecutor, PromptInfo promptInfo,
+        protected AuthContainerView buildDialog(DelayableExecutor bgExecutor, PromptInfo promptInfo,
                 boolean requireConfirmation, int userId, int[] sensorIds,
                 String opPackageName, boolean skipIntro, long operationId, long requestId,
                 WakefulnessLifecycle wakefulnessLifecycle,
                 UserManager userManager,
                 LockPatternUtils lockPatternUtils, PromptViewModel viewModel) {
 
-            AuthDialog dialog;
+            AuthContainerView dialog;
             if (mBuildCount == 0) {
                 dialog = mDialog1;
             } else if (mBuildCount == 1) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
index 197cb84..9c3ef04 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricNotificationDialogFactoryTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -39,6 +40,7 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
 import com.android.systemui.statusbar.phone.SystemUIDialog;
 
 import org.junit.Before;
@@ -65,22 +67,25 @@
     @Mock SystemUIDialog.Factory mSystemUIDialogFactory;
     @Mock SystemUIDialog mDialog;
     @Mock BiometricNotificationDialogFactory.ActivityStarter mActivityStarter;
-
     private final ArgumentCaptor<DialogInterface.OnClickListener> mOnClickListenerArgumentCaptor =
             ArgumentCaptor.forClass(DialogInterface.OnClickListener.class);
     private final ArgumentCaptor<Intent> mIntentArgumentCaptor =
             ArgumentCaptor.forClass(Intent.class);
     private BiometricNotificationDialogFactory mDialogFactory;
+    private FakeShadeDialogContextInteractor mDialogContextInteractor;
 
     @Before
     public void setUp() throws ExecutionException, InterruptedException {
         when(mFingerprintManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
         when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
-        when(mSystemUIDialogFactory.create()).thenReturn(mDialog);
+        when(mSystemUIDialogFactory.create(any(Context.class))).thenReturn(mDialog);
+
+        mDialogContextInteractor = new FakeShadeDialogContextInteractor(mContext);
 
         mDialogFactory = new BiometricNotificationDialogFactory(
                 mResources,
                 mSystemUIDialogFactory,
+                mDialogContextInteractor,
                 mFingerprintManager,
                 mFaceManager
         );
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt
index 98486a2..af6c65e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/source/TestShortcuts.kt
@@ -538,7 +538,6 @@
             simpleShortcutCategory(System, "System apps", "Open settings"),
             simpleShortcutCategory(System, "System controls", "Lock screen"),
             simpleShortcutCategory(System, "System controls", "View notifications"),
-            simpleShortcutCategory(System, "System apps", "Take a note"),
             simpleShortcutCategory(System, "System controls", "Take screenshot"),
             simpleShortcutCategory(System, "System controls", "Go back"),
             simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"),
@@ -570,7 +569,6 @@
             simpleInputGestureData(
                 keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL
             ),
-            simpleInputGestureData(keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES),
             simpleInputGestureData(
                 keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT
             ),
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
index 208abf3..6c4325a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
@@ -35,12 +35,20 @@
 import android.os.PowerManager
 import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
+import android.provider.Settings
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.Flags
+import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
 import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
+import com.android.systemui.common.data.repository.batteryRepository
+import com.android.systemui.common.data.repository.fake
+import com.android.systemui.communal.data.repository.fakeCommunalSceneRepository
+import com.android.systemui.communal.domain.interactor.communalSceneInteractor
+import com.android.systemui.communal.domain.interactor.setCommunalV2Available
+import com.android.systemui.communal.shared.model.CommunalScenes
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -54,6 +62,8 @@
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.shared.model.TransitionStep
 import com.android.systemui.keyguard.util.KeyguardTransitionRepositorySpySubject.Companion.assertThat
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
@@ -62,6 +72,8 @@
 import com.android.systemui.scene.shared.model.Scenes
 import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
 import com.android.systemui.testKosmos
+import com.android.systemui.util.settings.fakeSettings
+import com.google.common.truth.Truth
 import junit.framework.Assert.assertEquals
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.advanceTimeBy
@@ -416,4 +428,25 @@
             assertThat(transitionRepository)
                 .startedTransition(from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN)
         }
+
+    @Test
+    @EnableFlags(FLAG_GLANCEABLE_HUB_V2)
+    fun testTransitionToGlanceableHub_onWakeUpFromAod() =
+        kosmos.runTest {
+            val user = setCommunalV2Available(true)
+            fakeSettings.putIntForUser(Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1, user.id)
+            batteryRepository.fake.setDevicePluggedIn(true)
+
+            val currentScene by collectLastValue(communalSceneInteractor.currentScene)
+            fakeCommunalSceneRepository.changeScene(CommunalScenes.Blank)
+
+            // Communal is not showing
+            Truth.assertThat(currentScene).isEqualTo(CommunalScenes.Blank)
+
+            powerInteractor.setAwakeForTest()
+            testScope.advanceTimeBy(100) // account for debouncing
+
+            Truth.assertThat(currentScene).isEqualTo(CommunalScenes.Communal)
+            assertThat(transitionRepository).noTransitionsStarted()
+        }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelTest.kt
new file mode 100644
index 0000000..052dfd5
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelTest.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.kosmos.collectValues
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DozingToDreamingTransitionViewModelTest : SysuiTestCase() {
+    val kosmos = testKosmos()
+
+    val underTest by lazy { kosmos.dozingToDreamingTransitionViewModel }
+
+    @Test
+    fun notificationShadeAlpha() =
+        kosmos.runTest {
+            val values by collectValues(underTest.notificationAlpha)
+            assertThat(values).isEmpty()
+
+            fakeKeyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.DOZING,
+                to = KeyguardState.DREAMING,
+                testScope,
+            )
+
+            assertThat(values).isNotEmpty()
+            values.forEach { assertThat(it).isEqualTo(0) }
+        }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
index a7a0c24..f293614 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacyTest.java
@@ -369,6 +369,37 @@
     }
 
     @Test
+    public void onBindViewHolder_initSeekbarWithUnmutedVolume_displaysMuteIcon() {
+        when(mMediaSwitchingController.isVolumeControlEnabled(mMediaDevice1)).thenReturn(true);
+        when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME);
+        when(mMediaDevice1.getCurrentVolume()).thenReturn(TEST_CURRENT_VOLUME);
+        mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mViewHolder.mIconAreaLayout.getVisibility()).isEqualTo(View.VISIBLE);
+
+        mViewHolder.mIconAreaLayout.performClick();
+        verify(mMediaSwitchingController).adjustVolume(mMediaDevice1, 0);
+        verify(mMediaSwitchingController).logInteractionMuteDevice(mMediaDevice1);
+    }
+
+    @Test
+    public void onBindViewHolder_initSeekbarWithMutedVolume_displaysUnmuteIcon() {
+        when(mMediaSwitchingController.isVolumeControlEnabled(mMediaDevice1)).thenReturn(true);
+        when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME);
+        when(mMediaDevice1.getCurrentVolume()).thenReturn(0); // muted.
+        mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mViewHolder.mIconAreaLayout.getVisibility()).isEqualTo(View.VISIBLE);
+
+        mViewHolder.mIconAreaLayout.performClick();
+        // Default unmute volume is 2.
+        verify(mMediaSwitchingController).adjustVolume(mMediaDevice1, 2);
+        verify(mMediaSwitchingController).logInteractionUnmuteDevice(mMediaDevice1);
+    }
+
+    @Test
     public void onBindViewHolder_dragSeekbar_setsVolume() {
         mOnSeekBarChangeListenerCaptor = ArgumentCaptor.forClass(
                 SeekBar.OnSeekBarChangeListener.class);
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionStateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionStateTest.kt
index 645efae..ab217a3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionStateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionStateTest.kt
@@ -31,21 +31,18 @@
 
     @Test
     fun selectTile_isCorrectlySelected() {
-        assertThat(underTest.selection?.tileSpec).isNotEqualTo(TEST_SPEC)
+        assertThat(underTest.selection).isNotEqualTo(TEST_SPEC)
 
-        underTest.select(TEST_SPEC, manual = true)
-        assertThat(underTest.selection?.tileSpec).isEqualTo(TEST_SPEC)
-        assertThat(underTest.selection?.manual).isTrue()
+        underTest.select(TEST_SPEC)
+        assertThat(underTest.selection).isEqualTo(TEST_SPEC)
 
         underTest.unSelect()
         assertThat(underTest.selection).isNull()
 
         val newSpec = TileSpec.create("newSpec")
-        underTest.select(TEST_SPEC, manual = true)
-        underTest.select(newSpec, manual = false)
-        assertThat(underTest.selection?.tileSpec).isNotEqualTo(TEST_SPEC)
-        assertThat(underTest.selection?.tileSpec).isEqualTo(newSpec)
-        assertThat(underTest.selection?.manual).isFalse()
+        underTest.select(TEST_SPEC)
+        underTest.select(newSpec)
+        assertThat(underTest.selection).isEqualTo(newSpec)
     }
 
     companion object {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
index fee358a..83860ec 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RotationLockTileTest.java
@@ -63,6 +63,7 @@
 import org.mockito.MockitoAnnotations;
 
 import java.util.List;
+import java.util.Optional;
 
 import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
 import platform.test.runner.parameterized.Parameters;
@@ -100,7 +101,7 @@
     @Mock
     private BatteryController mBatteryController;
     @Mock
-    DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;
+    Optional<DeviceStateRotationLockSettingController> mDeviceStateRotationLockSettingController;
     @Mock
     RotationPolicyWrapper mRotationPolicyWrapper;
     @Mock
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegateTest.kt
index 97a10e6..e5191e9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegateTest.kt
@@ -23,6 +23,7 @@
 import androidx.test.filters.SmallTest
 import com.android.internal.R
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.eq
@@ -46,24 +47,27 @@
     private lateinit var sysuiDialogFactory: SystemUIDialog.Factory
     private lateinit var sysuiDialog: SystemUIDialog
     private lateinit var dataSaverDialogDelegate: DataSaverDialogDelegate
+    private lateinit var contextInteractor: FakeShadeDialogContextInteractor
 
     @Before
     fun setup() {
         sysuiDialog = mock<SystemUIDialog>()
         sysuiDialogFactory = mock<SystemUIDialog.Factory>()
+        contextInteractor = FakeShadeDialogContextInteractor(context)
 
         dataSaverDialogDelegate =
             DataSaverDialogDelegate(
                 sysuiDialogFactory,
-                context,
+                contextInteractor,
                 EmptyCoroutineContext,
                 dataSaverController,
-                mock<SharedPreferences>()
+                mock<SharedPreferences>(),
             )
 
         whenever(sysuiDialogFactory.create(eq(dataSaverDialogDelegate), eq(context)))
             .thenReturn(sysuiDialog)
     }
+
     @Test
     fun delegateSetsDialogTitleCorrectly() {
         val expectedResId = R.string.data_saver_enable_title
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractorTest.kt
index 2e9f24c..87ac034a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractorTest.kt
@@ -29,6 +29,7 @@
 import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
 import com.android.systemui.qs.tiles.impl.saver.domain.model.DataSaverTileModel
 import com.android.systemui.settings.UserFileManager
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.eq
@@ -53,17 +54,19 @@
     private lateinit var sharedPreferences: SharedPreferences
     private lateinit var dialogFactory: SystemUIDialog.Factory
     private lateinit var underTest: DataSaverTileUserActionInteractor
+    private lateinit var contextInteractor: FakeShadeDialogContextInteractor
 
     @Before
     fun setup() {
         userFileManager = mock<UserFileManager>()
         sharedPreferences = mock<SharedPreferences>()
         dialogFactory = mock<SystemUIDialog.Factory>()
+        contextInteractor = FakeShadeDialogContextInteractor(mContext)
         whenever(
                 userFileManager.getSharedPreferences(
                     eq(DataSaverTileUserActionInteractor.PREFS),
                     eq(Context.MODE_PRIVATE),
-                    eq(context.userId)
+                    eq(context.userId),
                 )
             )
             .thenReturn(sharedPreferences)
@@ -71,6 +74,7 @@
         underTest =
             DataSaverTileUserActionInteractor(
                 context,
+                contextInteractor,
                 EmptyCoroutineContext,
                 EmptyCoroutineContext,
                 dataSaverController,
@@ -87,7 +91,7 @@
         whenever(
                 sharedPreferences.getBoolean(
                     eq(DataSaverTileUserActionInteractor.DIALOG_SHOWN),
-                    any()
+                    any(),
                 )
             )
             .thenReturn(true)
@@ -107,7 +111,7 @@
         whenever(
                 sharedPreferences.getBoolean(
                     eq(DataSaverTileUserActionInteractor.DIALOG_SHOWN),
-                    any()
+                    any(),
                 )
             )
             .thenReturn(false)
@@ -128,7 +132,7 @@
         whenever(
                 sharedPreferences.getBoolean(
                     eq(DataSaverTileUserActionInteractor.DIALOG_SHOWN),
-                    any()
+                    any(),
                 )
             )
             .thenReturn(false)
@@ -144,7 +148,7 @@
         whenever(
                 sharedPreferences.getBoolean(
                     eq(DataSaverTileUserActionInteractor.DIALOG_SHOWN),
-                    any()
+                    any(),
                 )
             )
             .thenReturn(true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt
index 6e26fa11..701e55d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt
@@ -24,17 +24,22 @@
 import com.android.systemui.flags.EnableSceneContainer
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.lifecycle.activateIn
+import com.android.systemui.media.controls.data.repository.mediaFilterRepository
+import com.android.systemui.media.controls.shared.model.MediaData
 import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment
 import com.android.systemui.scene.domain.startable.sceneContainerStartable
 import com.android.systemui.shade.domain.interactor.enableDualShade
 import com.android.systemui.shade.domain.interactor.shadeModeInteractor
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 
+@OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 @TestableLooper.RunWithLooper
@@ -79,4 +84,22 @@
 
             assertThat(underTest.showHeader).isFalse()
         }
+
+    @Test
+    fun showMedia_activeMedia_true() =
+        testScope.runTest {
+            kosmos.mediaFilterRepository.addSelectedUserMediaEntry(MediaData(active = true))
+            runCurrent()
+
+            assertThat(underTest.showMedia).isTrue()
+        }
+
+    @Test
+    fun showMedia_noActiveMedia_false() =
+        testScope.runTest {
+            kosmos.mediaFilterRepository.addSelectedUserMediaEntry(MediaData(active = false))
+            runCurrent()
+
+            assertThat(underTest.showMedia).isFalse()
+        }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorTest.kt
index 84fc930..a3dd67f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorTest.kt
@@ -22,6 +22,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.broadcast.broadcastDispatcher
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.coroutines.collectValues
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.plugins.activityStarter
 import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback
@@ -31,22 +34,32 @@
 import com.android.systemui.util.mockito.argThat
 import com.android.systemui.util.mockito.mock
 import com.android.systemui.util.mockito.withArgCaptor
+import com.google.common.truth.Truth.assertThat
+import java.util.Date
+import kotlin.time.Duration
+import kotlin.time.Duration.Companion.milliseconds
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.advanceTimeBy
+import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatcher
-import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
 
+@OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 class ShadeHeaderClockInteractorTest : SysuiTestCase() {
+
     private val kosmos = testKosmos()
     private val testScope = kosmos.testScope
     private val activityStarter = kosmos.activityStarter
     private val nextAlarmController = kosmos.nextAlarmController
 
-    val underTest = kosmos.shadeHeaderClockInteractor
+    private val underTest = kosmos.shadeHeaderClockInteractor
 
     @Test
     fun launchClockActivity_default() =
@@ -55,7 +68,7 @@
             verify(activityStarter)
                 .postStartActivityDismissingKeyguard(
                     argThat(IntentMatcherAction(AlarmClock.ACTION_SHOW_ALARMS)),
-                    any()
+                    any(),
                 )
         }
 
@@ -71,6 +84,75 @@
             underTest.launchClockActivity()
             verify(activityStarter).postStartActivityDismissingKeyguard(any())
         }
+
+    @Test
+    fun onTimezoneOrLocaleChanged_localeAndTimezoneChanged_emitsForEach() =
+        testScope.runTest {
+            val timeZoneOrLocaleChanges by collectValues(underTest.onTimezoneOrLocaleChanged)
+
+            sendIntentActionBroadcast(Intent.ACTION_TIMEZONE_CHANGED)
+            sendIntentActionBroadcast(Intent.ACTION_LOCALE_CHANGED)
+            sendIntentActionBroadcast(Intent.ACTION_LOCALE_CHANGED)
+            sendIntentActionBroadcast(Intent.ACTION_TIMEZONE_CHANGED)
+
+            assertThat(timeZoneOrLocaleChanges).hasSize(4)
+        }
+
+    @Test
+    fun onTimezoneOrLocaleChanged_timeChanged_doesNotEmit() =
+        testScope.runTest {
+            val timeZoneOrLocaleChanges by collectValues(underTest.onTimezoneOrLocaleChanged)
+            assertThat(timeZoneOrLocaleChanges).hasSize(1)
+
+            sendIntentActionBroadcast(Intent.ACTION_TIME_CHANGED)
+            sendIntentActionBroadcast(Intent.ACTION_TIME_TICK)
+
+            // Expect only 1 event to have been emitted onStart, but no more.
+            assertThat(timeZoneOrLocaleChanges).hasSize(1)
+        }
+
+    @Test
+    fun currentTime_timeChanged() =
+        testScope.runTest {
+            val currentTime by collectLastValue(underTest.currentTime)
+
+            sendIntentActionBroadcast(Intent.ACTION_TIME_CHANGED)
+            val earlierTime = checkNotNull(currentTime)
+
+            advanceTimeBy(3.seconds)
+            runCurrent()
+
+            sendIntentActionBroadcast(Intent.ACTION_TIME_CHANGED)
+            val laterTime = checkNotNull(currentTime)
+
+            assertThat(differenceBetween(laterTime, earlierTime)).isEqualTo(3.seconds)
+        }
+
+    @Test
+    fun currentTime_timeTicked() =
+        testScope.runTest {
+            val currentTime by collectLastValue(underTest.currentTime)
+
+            sendIntentActionBroadcast(Intent.ACTION_TIME_TICK)
+            val earlierTime = checkNotNull(currentTime)
+
+            advanceTimeBy(7.seconds)
+            runCurrent()
+
+            sendIntentActionBroadcast(Intent.ACTION_TIME_TICK)
+            val laterTime = checkNotNull(currentTime)
+
+            assertThat(differenceBetween(laterTime, earlierTime)).isEqualTo(7.seconds)
+        }
+
+    private fun differenceBetween(date1: Date, date2: Date): Duration {
+        return (date1.time - date2.time).milliseconds
+    }
+
+    private fun TestScope.sendIntentActionBroadcast(intentAction: String) {
+        kosmos.broadcastDispatcher.sendIntentToMatchingReceiversOnly(context, Intent(intentAction))
+        runCurrent()
+    }
 }
 
 private class IntentMatcherAction(private val action: String) : ArgumentMatcher<Intent> {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
index 061e04e..37b4688 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
@@ -25,12 +25,15 @@
 import com.android.systemui.shade.domain.interactor.enableDualShade
 import com.android.systemui.shade.domain.interactor.enableSingleShade
 import com.android.systemui.shade.domain.interactor.enableSplitShade
+import com.android.systemui.shade.domain.interactor.shadeMode
+import com.android.systemui.shade.shared.model.ShadeMode
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel.HeaderChipHighlight
 import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
 import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.fakeMobileIconsInteractor
 import com.android.systemui.testKosmos
 import com.android.systemui.util.mockito.argThat
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runCurrent
@@ -43,6 +46,7 @@
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
+@OptIn(ExperimentalCoroutinesApi::class)
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 @EnableSceneContainer
@@ -64,14 +68,15 @@
     @Test
     fun mobileSubIds_update() =
         testScope.runTest {
-            val mobileSubIds by collectLastValue(underTest.mobileSubIds)
             mobileIconsInteractor.filteredSubscriptions.value = listOf(SUB_1)
+            runCurrent()
 
-            assertThat(mobileSubIds).isEqualTo(listOf(1))
+            assertThat(underTest.mobileSubIds).isEqualTo(listOf(1))
 
             mobileIconsInteractor.filteredSubscriptions.value = listOf(SUB_1, SUB_2)
+            runCurrent()
 
-            assertThat(mobileSubIds).isEqualTo(listOf(1, 2))
+            assertThat(underTest.mobileSubIds).isEqualTo(listOf(1, 2))
         }
 
     @Test
@@ -116,13 +121,9 @@
     @Test
     fun onSystemIconChipClicked_lockedOnQsShade_collapsesShadeToLockscreen() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.QuickSettingsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(false)
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.QuickSettingsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onSystemIconChipClicked()
             runCurrent()
@@ -134,13 +135,9 @@
     @Test
     fun onSystemIconChipClicked_lockedOnNotifShade_expandsQsShade() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.NotificationsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(false)
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.NotificationsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onSystemIconChipClicked()
             runCurrent()
@@ -166,13 +163,9 @@
     @Test
     fun onSystemIconChipClicked_unlockedOnQsShade_collapsesShadeToGone() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.QuickSettingsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.QuickSettingsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onSystemIconChipClicked()
             runCurrent()
@@ -184,13 +177,9 @@
     @Test
     fun onSystemIconChipClicked_unlockedOnNotifShade_expandsQsShade() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.NotificationsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.NotificationsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onSystemIconChipClicked()
             runCurrent()
@@ -203,13 +192,9 @@
     @Test
     fun onNotificationIconChipClicked_lockedOnNotifShade_collapsesShadeToLockscreen() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.NotificationsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(false)
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.NotificationsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onNotificationIconChipClicked()
             runCurrent()
@@ -221,13 +206,9 @@
     @Test
     fun onNotificationIconChipClicked_lockedOnQsShade_expandsNotifShade() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.QuickSettingsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(false)
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.QuickSettingsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onNotificationIconChipClicked()
             runCurrent()
@@ -240,13 +221,9 @@
     @Test
     fun onNotificationIconChipClicked_unlockedOnNotifShade_collapsesShadeToGone() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.NotificationsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.NotificationsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onNotificationIconChipClicked()
             runCurrent()
@@ -258,13 +235,9 @@
     @Test
     fun onNotificationIconChipClicked_unlockedOnQsShade_expandsNotifShade() =
         testScope.runTest {
-            kosmos.enableDualShade()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.QuickSettingsShade)
             val currentScene by collectLastValue(sceneInteractor.currentScene)
             val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.QuickSettingsShade)
-            assertThat(currentOverlays).isNotEmpty()
 
             underTest.onNotificationIconChipClicked()
             runCurrent()
@@ -319,22 +292,13 @@
     @Test
     fun highlightChips_notifsOpenInDualShade_notifsStrongQuickSettingsWeak() =
         testScope.runTest {
-            kosmos.enableDualShade()
-            val currentScene by collectLastValue(sceneInteractor.currentScene)
-            val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-
             // Test the lockscreen scenario.
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.NotificationsShade)
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.NotificationsShade)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
 
             // Test the unlocked scenario.
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.NotificationsShade)
-            assertThat(currentScene).isEqualTo(Scenes.Gone)
-            assertThat(currentOverlays).isNotEmpty()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.NotificationsShade)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
         }
@@ -342,22 +306,13 @@
     @Test
     fun highlightChips_quickSettingsOpenInDualShade_notifsWeakQuickSettingsStrong() =
         testScope.runTest {
-            kosmos.enableDualShade()
-            val currentScene by collectLastValue(sceneInteractor.currentScene)
-            val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-
             // Test the lockscreen scenario.
-            setScene(Scenes.Lockscreen)
-            setOverlay(Overlays.QuickSettingsShade)
+            setupDualShadeState(scene = Scenes.Lockscreen, overlay = Overlays.QuickSettingsShade)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
 
             // Test the unlocked scenario.
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            setOverlay(Overlays.QuickSettingsShade)
-            assertThat(currentScene).isEqualTo(Scenes.Gone)
-            assertThat(currentOverlays).isNotEmpty()
+            setupDualShadeState(scene = Scenes.Gone, overlay = Overlays.QuickSettingsShade)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
         }
@@ -365,21 +320,13 @@
     @Test
     fun highlightChips_noOverlaysInDualShade_bothNone() =
         testScope.runTest {
-            kosmos.enableDualShade()
-            val currentScene by collectLastValue(sceneInteractor.currentScene)
-            val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
-
             // Test the lockscreen scenario.
-            setScene(Scenes.Lockscreen)
-            assertThat(currentOverlays).isEmpty()
+            setupDualShadeState(scene = Scenes.Lockscreen)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
 
             // Test the unlocked scenario.
-            setDeviceEntered(true)
-            setScene(Scenes.Gone)
-            assertThat(currentScene).isEqualTo(Scenes.Gone)
-            assertThat(currentOverlays).isEmpty()
+            setupDualShadeState(scene = Scenes.Gone)
             assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
             assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
         }
@@ -401,6 +348,39 @@
             )
     }
 
+    private fun TestScope.setupDualShadeState(scene: SceneKey, overlay: OverlayKey? = null) {
+        kosmos.enableDualShade()
+        val shadeMode by collectLastValue(kosmos.shadeMode)
+        val currentScene by collectLastValue(sceneInteractor.currentScene)
+        val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+        if (scene == Scenes.Gone) {
+            // Unlock the device, marking the device has been entered.
+            kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+        }
+        runCurrent()
+        assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
+
+        sceneInteractor.changeScene(scene, "test")
+        checkNotNull(currentOverlays).forEach { sceneInteractor.instantlyHideOverlay(it, "test") }
+        runCurrent()
+        overlay?.let { sceneInteractor.showOverlay(it, "test") }
+        sceneInteractor.setTransitionState(
+            MutableStateFlow<ObservableTransitionState>(
+                ObservableTransitionState.Idle(scene, setOfNotNull(overlay))
+            )
+        )
+        runCurrent()
+
+        assertThat(currentScene).isEqualTo(scene)
+        if (overlay == null) {
+            assertThat(currentOverlays).isEmpty()
+        } else {
+            assertThat(currentOverlays).containsExactly(overlay)
+        }
+    }
+
     private fun setScene(key: SceneKey) {
         sceneInteractor.changeScene(key, "test")
         sceneInteractor.setTransitionState(
@@ -409,17 +389,6 @@
         testScope.runCurrent()
     }
 
-    private fun setOverlay(key: OverlayKey) {
-        val currentOverlays = sceneInteractor.currentOverlays.value + key
-        sceneInteractor.showOverlay(key, "test")
-        sceneInteractor.setTransitionState(
-            MutableStateFlow<ObservableTransitionState>(
-                ObservableTransitionState.Idle(sceneInteractor.currentScene.value, currentOverlays)
-            )
-        )
-        testScope.runCurrent()
-    }
-
     private fun TestScope.setDeviceEntered(isEntered: Boolean) {
         if (isEntered) {
             // Unlock the device marking the device has entered.
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
index c6801f1..3d8da61 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
@@ -23,8 +23,8 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowInsetsController.BEHAVIOR_DEFAULT;
 
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -35,14 +35,12 @@
 import android.hardware.biometrics.PromptInfo;
 import android.hardware.fingerprint.IUdfpsRefreshRateRequestCallback;
 import android.os.Bundle;
-import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.view.KeyEvent;
 import android.view.WindowInsets;
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.WindowInsetsController.Appearance;
 import android.view.WindowInsetsController.Behavior;
-import android.view.accessibility.Flags;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
@@ -385,30 +383,7 @@
     }
 
     @Test
-    @DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
-    public void addQsTile_withA11yQsShortcutFlagOff() {
-        ComponentName c = new ComponentName("testpkg", "testcls");
-
-        mCommandQueue.addQsTile(c);
-        waitForIdleSync();
-
-        verify(mCallbacks).addQsTile(eq(c));
-    }
-
-    @Test
-    @DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
-    public void addQsTileToFrontOrEnd_withA11yQsShortcutFlagOff_doNothing() {
-        ComponentName c = new ComponentName("testpkg", "testcls");
-
-        mCommandQueue.addQsTileToFrontOrEnd(c, true);
-        waitForIdleSync();
-
-        verifyNoMoreInteractions(mCallbacks);
-    }
-
-    @Test
-    @EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
-    public void addQsTile_withA11yQsShortcutFlagOn() {
+    public void addQsTile() {
         ComponentName c = new ComponentName("testpkg", "testcls");
 
         mCommandQueue.addQsTile(c);
@@ -418,8 +393,7 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
-    public void addQsTileAtTheEnd_withA11yQsShortcutFlagOn() {
+    public void addQsTileAtTheEnd() {
         ComponentName c = new ComponentName("testpkg", "testcls");
 
         mCommandQueue.addQsTileToFrontOrEnd(c, true);
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt
index 05d9495..a8aac39 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt
@@ -74,7 +74,7 @@
 
         dragDownHelper.cancelChildExpansion(expandableView, animationDuration = 0)
 
-        verify(expandableView, atLeast(1)).actualHeight = collapsedHeight
+        verify(expandableView, atLeast(1)).setFinalActualHeight(collapsedHeight)
     }
 
     @Test
@@ -83,6 +83,6 @@
 
         dragDownHelper.cancelChildExpansion(expandableView, animationDuration = 0)
 
-        verify(expandableView, never()).actualHeight = anyInt()
+        verify(expandableView, never()).setFinalActualHeight(anyInt())
     }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt
index cd66ef3..242da0b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt
@@ -86,7 +86,7 @@
 
         pulseExpansionHandler.reset(expandableView, animationDuration = 0)
 
-        verify(expandableView, atLeast(1)).actualHeight = collapsedHeight
+        verify(expandableView, atLeast(1)).setFinalActualHeight(collapsedHeight)
     }
 
     @Test
@@ -95,6 +95,6 @@
 
         pulseExpansionHandler.reset(expandableView, animationDuration = 0)
 
-        verify(expandableView, never()).actualHeight = anyInt()
+        verify(expandableView, never()).setFinalActualHeight(anyInt())
     }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
index c7b3175..e044d1d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
@@ -35,14 +35,14 @@
 import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
 import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
 import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
 import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationListRepository
 import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
 import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
 import com.android.systemui.statusbar.notification.shared.CallType
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
@@ -314,7 +314,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_inCall_nullIntent_nullClickListener() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -325,7 +325,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_inCall_positiveStartTime_validIntent_clickListenerLaunchesIntent() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -343,7 +343,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_inCall_zeroStartTime_validIntent_clickListenerLaunchesIntent() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -362,7 +362,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_inCall_nullIntent_noneClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -378,7 +378,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_inCall_positiveStartTime_validIntent_clickBehaviorLaunchesIntent() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -403,7 +403,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_inCall_zeroStartTime_validIntent_clickBehaviorLaunchesIntent() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
index cd3c8cd..ccc844a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
@@ -17,7 +17,6 @@
 package com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel
 
 import android.content.DialogInterface
-import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
 import android.view.View
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -48,10 +47,10 @@
 import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
 import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.statusbar.policy.CastDevice
 import com.android.systemui.util.time.fakeSystemClock
 import com.google.common.truth.Truth.assertThat
@@ -438,7 +437,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_projectionStateEntireScreen_clickListenerShowsScreenCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -454,7 +453,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_projectionStateSingleTask_clickListenerShowsScreenCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -475,7 +474,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_routerStateCasting_clickListenerShowsGenericCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -505,7 +504,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_projectionStateCasting_clickListenerHasCuj() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -525,7 +524,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_routerStateCasting_clickListenerHasCuj() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -554,7 +553,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_routerStateCasting_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -575,7 +574,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_projectionStateCasting_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -588,7 +587,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_projectionStateEntireScreen_clickBehaviorShowsScreenCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -605,7 +604,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_projectionStateSingleTask_clickBehaviorShowsScreenCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -627,7 +626,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_routerStateCasting_clickBehaviorShowsGenericCastDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
index 7cf817a..4993b56 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
@@ -38,16 +38,17 @@
 import com.android.systemui.statusbar.chips.ui.model.ColorsModel
 import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
 import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
 import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
 import com.android.systemui.statusbar.notification.data.repository.UnconfinedFakeHeadsUpRowRepository
 import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
 import com.android.systemui.statusbar.notification.headsup.PinnedStatus
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
+import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.When
 import com.android.systemui.statusbar.notification.shared.ActiveNotificationModel
 import com.android.systemui.statusbar.notification.stack.data.repository.headsUpNotificationRepository
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.testKosmos
 import com.android.systemui.util.time.fakeSystemClock
 import com.google.common.truth.Truth.assertThat
@@ -295,11 +296,7 @@
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
                     this.shortCriticalText = "Arrived"
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 30.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 30.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -351,11 +348,7 @@
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
                     this.wasPromotedAutomatically = true
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 30.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 30.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -383,11 +376,7 @@
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
                     this.wasPromotedAutomatically = false
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 30.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 30.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -414,11 +403,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 13.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 13.minutes.inWholeMilliseconds)
                 }
 
             setNotifs(
@@ -446,11 +431,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 500,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 500)
                 }
 
             setNotifs(
@@ -478,11 +459,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime)
                 }
 
             setNotifs(
@@ -510,11 +487,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime - 2.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime - 2.minutes.inWholeMilliseconds)
                 }
 
             setNotifs(
@@ -543,11 +516,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 3.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 3.minutes.inWholeMilliseconds)
                 }
 
             setNotifs(
@@ -579,13 +548,16 @@
             val currentTime = 30.minutes.inWholeMilliseconds
             fakeSystemClock.setCurrentTimeMillis(currentTime)
 
+            val currentElapsed =
+                currentTime + fakeSystemClock.elapsedRealtime() -
+                    fakeSystemClock.currentTimeMillis()
+
+            val whenElapsed = currentElapsed - 1.minutes.inWholeMilliseconds
+
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
                     this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.CountUp,
-                        )
+                        When.Chronometer(elapsedRealtimeMillis = whenElapsed, isCountDown = false)
                 }
             setNotifs(
                 listOf(
@@ -599,6 +571,8 @@
 
             assertThat(latest).hasSize(1)
             assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+            assertThat((latest!![0] as OngoingActivityChipModel.Active.Timer).startTimeMs)
+                .isEqualTo(whenElapsed)
         }
 
     @Test
@@ -609,13 +583,16 @@
             val currentTime = 30.minutes.inWholeMilliseconds
             fakeSystemClock.setCurrentTimeMillis(currentTime)
 
+            val currentElapsed =
+                currentTime + fakeSystemClock.elapsedRealtime() -
+                    fakeSystemClock.currentTimeMillis()
+
+            val whenElapsed = currentElapsed + 10.minutes.inWholeMilliseconds
+
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
                     this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.CountDown,
-                        )
+                        When.Chronometer(elapsedRealtimeMillis = whenElapsed, isCountDown = true)
                 }
             setNotifs(
                 listOf(
@@ -629,6 +606,8 @@
 
             assertThat(latest).hasSize(1)
             assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+            assertThat((latest!![0] as OngoingActivityChipModel.Active.Timer).startTimeMs)
+                .isEqualTo(whenElapsed)
         }
 
     @Test
@@ -641,11 +620,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 10.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -675,11 +650,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 10.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -716,19 +687,11 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 10.minutes.inWholeMilliseconds)
                 }
             val otherPromotedContentBuilder =
                 PromotedNotificationContentModel.Builder("other notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 10.minutes.inWholeMilliseconds)
                 }
             val icon = createStatusBarIconViewOrNull()
             val otherIcon = createStatusBarIconViewOrNull()
@@ -772,11 +735,7 @@
 
             val promotedContentBuilder =
                 PromotedNotificationContentModel.Builder("notif").apply {
-                    this.time =
-                        PromotedNotificationContentModel.When(
-                            time = currentTime + 10.minutes.inWholeMilliseconds,
-                            mode = PromotedNotificationContentModel.When.Mode.BasicTime,
-                        )
+                    this.time = When.Time(currentTime + 10.minutes.inWholeMilliseconds)
                 }
             setNotifs(
                 listOf(
@@ -802,11 +761,8 @@
         }
 
     @Test
-    @DisableFlags(
-        FLAG_PROMOTE_NOTIFICATIONS_AUTOMATICALLY,
-        StatusBarRootModernization.FLAG_NAME,
-        StatusBarChipsModernization.FLAG_NAME,
-    )
+    @DisableFlags(FLAG_PROMOTE_NOTIFICATIONS_AUTOMATICALLY)
+    @DisableChipsModernization
     fun chips_chipsModernizationDisabled_clickingChipNotifiesInteractor() =
         kosmos.runTest {
             val latest by collectLastValue(underTest.chips)
@@ -834,7 +790,7 @@
 
     @Test
     @DisableFlags(FLAG_PROMOTE_NOTIFICATIONS_AUTOMATICALLY)
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chips_chipsModernizationEnabled_clickingChipNotifiesInteractor() =
         kosmos.runTest {
             val latest by collectLastValue(underTest.chips)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
index 6cfad85..005af36 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
@@ -17,8 +17,6 @@
 package com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel
 
 import android.content.DialogInterface
-import android.platform.test.annotations.DisableFlags
-import android.platform.test.annotations.EnableFlags
 import android.view.View
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
@@ -44,10 +42,10 @@
 import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
 import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.testKosmos
 import com.android.systemui.util.time.fakeSystemClock
 import com.google.common.truth.Truth.assertThat
@@ -282,7 +280,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_notProjecting_clickListenerShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -299,7 +297,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_projectingEntireScreen_clickListenerShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -317,7 +315,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_projectingSingleTask_clickListenerShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -339,7 +337,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_clickListenerHasCujLegacy() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -359,7 +357,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_recordingState_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -370,7 +368,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_notProjecting_expandActionBehaviorShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -386,7 +384,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_projectingEntireScreen_expandActionBehaviorShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -401,7 +399,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_projectingSingleTask_expandActionBehaviorShowsDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
index e708382..d6b10a8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
@@ -49,10 +49,10 @@
 import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
 import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.testKosmos
 import com.android.systemui.util.time.fakeSystemClock
 import com.google.common.truth.Truth.assertThat
@@ -506,7 +506,7 @@
 
     @Test
     @EnableFlags(FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHIP)
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_noScreen_clickListenerShowsGenericShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -527,7 +527,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_entireScreen_clickListenerShowsScreenShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -548,7 +548,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_singleTask_clickListenerShowsScreenShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -573,7 +573,7 @@
         }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun chip_clickListenerHasCuj() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -597,7 +597,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_noScreen_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -609,7 +609,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_entireScreen_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -621,7 +621,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_singleTask_hasClickBehavior() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -637,11 +637,8 @@
         }
 
     @Test
-    @EnableFlags(
-        FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHIP,
-        StatusBarRootModernization.FLAG_NAME,
-        StatusBarChipsModernization.FLAG_NAME,
-    )
+    @EnableFlags(FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHIP)
+    @EnableChipsModernization
     fun chip_noScreen_clickBehaviorShowsGenericShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -657,7 +654,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_entireScreen_clickBehaviorShowsScreenShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
@@ -673,7 +670,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun chip_singleTask_clickBehaviorShowsScreenShareDialog() =
         testScope.runTest {
             val latest by collectLastValue(underTest.chip)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
index fc3af11..39b19d3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
@@ -16,8 +16,6 @@
 
 package com.android.systemui.statusbar.chips.ui.viewmodel
 
-import android.platform.test.annotations.DisableFlags
-import android.platform.test.annotations.EnableFlags
 import android.view.View
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
@@ -31,9 +29,9 @@
 import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickCallback
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.phone.SystemUIDialog
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import kotlin.test.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers.anyBoolean
@@ -64,7 +62,7 @@
         mock<Expandable>().apply { whenever(dialogTransitionController(any())).thenReturn(mock()) }
 
     @Test
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     fun createDialogLaunchOnClickListener_showsDialogOnClick() {
         val cuj = DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Test")
         val clickListener =
@@ -82,7 +80,7 @@
     }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun createDialogLaunchOnClickCallback_showsDialogOnClick() {
         val cuj = DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Test")
         val clickCallback =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
index 20637cd..2887de3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
@@ -22,7 +22,6 @@
 import android.content.res.mainResources
 import android.graphics.Bitmap
 import android.graphics.drawable.BitmapDrawable
-import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
 import android.view.View
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -57,7 +56,6 @@
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip
 import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
-import com.android.systemui.statusbar.core.StatusBarRootModernization
 import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
 import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
 import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
@@ -66,7 +64,8 @@
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
 import com.android.systemui.statusbar.notification.shared.ActiveNotificationModel
 import com.android.systemui.statusbar.phone.SystemUIDialog
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.DisableChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.addOngoingCallState
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.removeOngoingCallState
 import com.android.systemui.testKosmos
@@ -138,7 +137,7 @@
             assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_allHidden_bothPrimaryAndSecondaryHidden() =
         kosmos.runTest {
@@ -155,7 +154,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_allInactive() =
         kosmos.runTest {
@@ -184,7 +183,7 @@
             assertIsScreenRecordChip(latest)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_screenRecordShow_restHidden_primaryIsScreenRecordSecondaryIsHidden() =
         kosmos.runTest {
@@ -201,7 +200,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_screenRecordActive_restInactive() =
         kosmos.runTest {
@@ -230,7 +229,7 @@
             assertIsScreenRecordChip(latest)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_screenRecordShowAndCallShow_primaryIsScreenRecordSecondaryIsCall() =
         kosmos.runTest {
@@ -246,7 +245,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_screenRecordAndCallActive_inThatOrder() =
         kosmos.runTest {
@@ -265,7 +264,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_oneChip_notSquished() =
         kosmos.runTest {
@@ -278,7 +277,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_oneChip_notSquished() =
         kosmos.runTest {
@@ -291,7 +290,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_twoTimerChips_isSmallPortrait_bothSquished() =
         kosmos.runTest {
@@ -307,7 +306,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
         }
 
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_twoTimerChips_isSmallPortrait_bothSquished() =
         kosmos.runTest {
@@ -323,7 +322,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
         }
 
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_countdownChipAndTimerChip_countdownNotSquished_butTimerSquished() =
         kosmos.runTest {
@@ -340,7 +339,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
         }
 
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_countdownChipAndTimerChip_countdownNotSquished_butTimerSquished() =
         kosmos.runTest {
@@ -357,7 +356,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
         }
 
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_numberOfChipsChanges_chipsGetSquishedAndUnsquished() =
         kosmos.runTest {
@@ -393,7 +392,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
         }
 
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_numberOfChipsChanges_chipsGetSquishedAndUnsquished() =
         kosmos.runTest {
@@ -425,7 +424,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_twoChips_isLandscape_notSquished() =
         kosmos.runTest {
@@ -448,7 +447,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_twoChips_isLandscape_notSquished() =
         kosmos.runTest {
@@ -471,7 +470,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_twoChips_isLargeScreen_notSquished() =
         kosmos.runTest {
@@ -490,7 +489,7 @@
                 .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
         }
 
-    @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_twoChips_isLargeScreen_notSquished() =
         kosmos.runTest {
@@ -522,7 +521,7 @@
             assertIsScreenRecordChip(latest)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_screenRecordShowAndShareToAppShow_primaryIsScreenRecordSecondaryIsHidden() =
         kosmos.runTest {
@@ -542,7 +541,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_screenRecordAndShareToApp_screenRecordIsActiveShareToAppIsInOverflow() =
         kosmos.runTest {
@@ -577,7 +576,7 @@
             assertIsShareToAppChip(latest)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_shareToAppShowAndCallShow_primaryIsShareToAppSecondaryIsCall() =
         kosmos.runTest {
@@ -595,7 +594,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_shareToAppAndCallActive() =
         kosmos.runTest {
@@ -631,7 +630,7 @@
             assertIsCallChip(latest, callNotificationKey)
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_onlyCallShown_primaryIsCallSecondaryIsHidden() =
         kosmos.runTest {
@@ -651,7 +650,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_callActive_restInactive() =
         kosmos.runTest {
@@ -671,7 +670,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_singlePromotedNotif_primaryIsNotifSecondaryIsHidden() =
         kosmos.runTest {
@@ -695,7 +694,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_singlePromotedNotif() =
         kosmos.runTest {
@@ -720,7 +719,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_twoPromotedNotifs_primaryAndSecondaryAreNotifsInOrder() =
         kosmos.runTest {
@@ -751,7 +750,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_twoPromotedNotifs_bothActiveInOrder() =
         kosmos.runTest {
@@ -785,7 +784,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_threePromotedNotifs_topTwoShown() =
         kosmos.runTest {
@@ -823,7 +822,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_threePromotedNotifs_topTwoActiveThirdInOverflow() =
         kosmos.runTest {
@@ -865,7 +864,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_callAndPromotedNotifs_primaryIsCallSecondaryIsNotif() =
         kosmos.runTest {
@@ -898,7 +897,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_callAndPromotedNotifs_callAndFirstNotifActiveSecondNotifInOverflow() =
         kosmos.runTest {
@@ -935,7 +934,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModelLegacy())
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_screenRecordAndCallAndPromotedNotifs_notifsNotShown() =
         kosmos.runTest {
@@ -958,7 +957,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_screenRecordAndCallAndPromotedNotif_notifInOverflow() =
         kosmos.runTest {
@@ -1076,7 +1075,7 @@
             assertIsNotifChip(latest, context, notifIcon, "notif")
         }
 
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_movesChipsAroundAccordingToPriority() =
         kosmos.runTest {
@@ -1152,7 +1151,7 @@
             assertThat(unused).isEqualTo(MultipleOngoingActivityChipsModel())
         }
 
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_movesChipsAroundAccordingToPriority() =
         kosmos.runTest {
@@ -1291,7 +1290,7 @@
         }
 
     /** Regression test for b/347726238. */
-    @DisableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @DisableChipsModernization
     @Test
     fun chipsLegacy_timerDoesNotResetAfterSubscribersRestart() =
         kosmos.runTest {
@@ -1327,7 +1326,7 @@
         }
 
     /** Regression test for b/347726238. */
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     @Test
     fun chips_timerDoesNotResetAfterSubscribersRestart() =
         kosmos.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimatorTest.kt
new file mode 100644
index 0000000..56cd72e
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimatorTest.kt
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.systemui.statusbar.notification
+
+import android.util.FloatProperty
+import android.util.Property
+import android.view.View
+import androidx.dynamicanimation.animation.DynamicAnimation
+import androidx.test.annotation.UiThreadTest
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.notification.stack.AnimationProperties
+import com.android.systemui.statusbar.notification.stack.ViewState
+import org.junit.Assert
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito
+import org.mockito.kotlin.any
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@UiThreadTest
+class PhysicsPropertyAnimatorTest : SysuiTestCase() {
+    private var view: View = View(context)
+    private val effectiveProperty =
+        object : FloatProperty<View>("TEST") {
+            private var _value: Float = 100f
+
+            override fun setValue(view: View, value: Float) {
+                this._value = value
+            }
+
+            override fun get(`object`: View): Float {
+                return _value
+            }
+        }
+    private val property: PhysicsProperty =
+        PhysicsProperty(R.id.scale_x_animator_tag, effectiveProperty)
+    private var finishListener: DynamicAnimation.OnAnimationEndListener? = null
+    private val animationProperties: AnimationProperties = AnimationProperties()
+
+    @Before
+    fun setUp() {
+        finishListener = Mockito.mock(DynamicAnimation.OnAnimationEndListener::class.java)
+    }
+
+    @Test
+    fun testAnimationStarted() {
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        Assert.assertTrue(PhysicsPropertyAnimator.isAnimating(view, property))
+    }
+
+    @Test
+    fun testNoAnimationStarted() {
+        PhysicsPropertyAnimator.setProperty(view, property, 200f, animationProperties, false)
+        Assert.assertFalse(PhysicsPropertyAnimator.isAnimating(view, property))
+    }
+
+    @Test
+    fun testEndValueUpdated() {
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        Assert.assertEquals(
+            (ViewState.getChildTag(view, property.tag) as PropertyData).finalValue,
+            200f,
+        )
+    }
+
+    @Test
+    fun testOffset() {
+        effectiveProperty.setValue(view, 100f)
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        val propertyData = ViewState.getChildTag(view, property.tag) as PropertyData
+        Assert.assertEquals(propertyData.finalValue, 200f)
+        Assert.assertEquals(propertyData.offset, -100f)
+    }
+
+    @Test
+    fun testValueIsSetUnAnimated() {
+        effectiveProperty.setValue(view, 100f)
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            false, /* animate */
+        )
+        Assert.assertEquals(200f, effectiveProperty[view])
+    }
+
+    @Test
+    fun testAnimationToRightValueUpdated() {
+        effectiveProperty.setValue(view, 100f)
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            220f,
+            animationProperties,
+            false, /* animate */
+        )
+        Assert.assertTrue(PhysicsPropertyAnimator.isAnimating(view, property))
+        Assert.assertEquals(120f, effectiveProperty[view])
+        Assert.assertEquals(
+            (ViewState.getChildTag(view, property.tag) as PropertyData).finalValue,
+            220f,
+        )
+    }
+
+    @Test
+    fun testAnimationToRightValueUpdateAnimated() {
+        effectiveProperty.setValue(view, 100f)
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            220f,
+            animationProperties,
+            true, /* animate */
+        )
+        Assert.assertTrue(PhysicsPropertyAnimator.isAnimating(view, property))
+        Assert.assertEquals(100f, effectiveProperty[view])
+        val propertyData = ViewState.getChildTag(view, property.tag) as PropertyData
+        Assert.assertEquals(propertyData.finalValue, 220f)
+        Assert.assertEquals(propertyData.offset, -120f)
+    }
+
+    @Test
+    fun testUsingDelay() {
+        effectiveProperty.setValue(view, 100f)
+        animationProperties.setDelay(200)
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true, /* animate */
+        )
+        val propertyData = ViewState.getChildTag(view, property.tag) as PropertyData
+        Assert.assertNotNull(propertyData.delayRunnable)
+        Assert.assertFalse(propertyData.animator?.isRunning ?: true)
+    }
+
+    @Test
+    fun testUsingListener() {
+        PhysicsPropertyAnimator.setProperty(
+            view,
+            property,
+            200f,
+            animationProperties,
+            true,
+            finishListener,
+        )
+        val propertyData = ViewState.getChildTag(view, property.tag) as PropertyData
+        propertyData.animator?.cancel()
+        Mockito.verify(finishListener!!).onAnimationEnd(any(), any(), any(), any())
+    }
+
+    @Test
+    fun testUsingListenerProperties() {
+        val finishListener2 = Mockito.mock(DynamicAnimation.OnAnimationEndListener::class.java)
+        val animationProperties: AnimationProperties =
+            object : AnimationProperties() {
+                override fun getAnimationEndListener(
+                    property: Property<*, *>?
+                ): DynamicAnimation.OnAnimationEndListener {
+                    return finishListener2
+                }
+            }
+        PhysicsPropertyAnimator.setProperty(view, property, 200f, animationProperties, true)
+        val propertyData = ViewState.getChildTag(view, property.tag) as PropertyData
+        propertyData.animator?.cancel()
+        Mockito.verify(finishListener2).onAnimationEnd(any(), any(), any(), any())
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
index a3fde5a..216fd2d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
@@ -39,18 +39,24 @@
 import com.android.systemui.statusbar.notification.promoted.AutomaticPromotionCoordinator.Companion.EXTRA_WAS_AUTOMATICALLY_PROMOTED
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Style
+import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.When
 import com.android.systemui.statusbar.notification.row.RowImageInflater
 import com.android.systemui.testKosmos
+import com.android.systemui.util.time.fakeSystemClock
+import com.android.systemui.util.time.systemClock
 import com.google.common.truth.Truth.assertThat
+import kotlin.time.Duration
+import kotlin.time.Duration.Companion.minutes
 import org.junit.Test
 import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 class PromotedNotificationContentExtractorImplTest : SysuiTestCase() {
-    private val kosmos = testKosmos()
+    private val kosmos = testKosmos().apply { systemClock = fakeSystemClock }
 
     private val underTest = kosmos.promotedNotificationContentExtractor
+    private val systemClock = kosmos.fakeSystemClock
     private val rowImageInflater = RowImageInflater.newInstance(previousIndex = null)
     private val imageModelProvider by lazy { rowImageInflater.useForContentModel() }
 
@@ -177,7 +183,176 @@
 
     @Test
     @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
-    fun extractsContent_fromBaseStyle() {
+    fun extractTime_none() {
+        assertExtractedTime(hasTime = false, hasChronometer = false, expected = ExpectedTime.Null)
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_basicTimeNow() {
+        assertExtractedTime(
+            hasTime = true,
+            hasChronometer = false,
+            whenOffset = Duration.ZERO,
+            expected = ExpectedTime.Time,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_basicTimePast() {
+        assertExtractedTime(
+            hasTime = true,
+            hasChronometer = false,
+            whenOffset = (-5).minutes,
+            expected = ExpectedTime.Time,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_basicTimeFuture() {
+        assertExtractedTime(
+            hasTime = true,
+            hasChronometer = false,
+            whenOffset = 5.minutes,
+            expected = ExpectedTime.Time,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countUpNow() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = false,
+            whenOffset = Duration.ZERO,
+            expected = ExpectedTime.CountUp,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countUpPast() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = false,
+            whenOffset = (-5).minutes,
+            expected = ExpectedTime.CountUp,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countUpFuture() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = false,
+            whenOffset = 5.minutes,
+            expected = ExpectedTime.CountUp,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countDownNow() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = true,
+            whenOffset = Duration.ZERO,
+            expected = ExpectedTime.CountDown,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countDownPast() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = true,
+            whenOffset = (-5).minutes,
+            expected = ExpectedTime.CountDown,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_countDownFuture() {
+        assertExtractedTime(
+            hasTime = false,
+            hasChronometer = true,
+            isCountDown = true,
+            whenOffset = 5.minutes,
+            expected = ExpectedTime.CountDown,
+        )
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractTime_prefersChronometerToWhen() {
+        assertExtractedTime(hasTime = true, hasChronometer = true, expected = ExpectedTime.CountUp)
+    }
+
+    private enum class ExpectedTime {
+        Null,
+        Time,
+        CountUp,
+        CountDown,
+    }
+
+    private fun assertExtractedTime(
+        hasTime: Boolean = false,
+        hasChronometer: Boolean = false,
+        isCountDown: Boolean = false,
+        whenOffset: Duration = Duration.ZERO,
+        expected: ExpectedTime,
+    ) {
+        // Set the two timebases to different (arbitrary) numbers, so we can verify whether the
+        // extractor is doing the timebase adjustment correctly.
+        systemClock.setCurrentTimeMillis(1_739_570_992_579L)
+        systemClock.setElapsedRealtime(1_380_967_080L)
+
+        val whenCurrentTime = systemClock.currentTimeMillis() + whenOffset.inWholeMilliseconds
+        val whenElapsedRealtime = systemClock.elapsedRealtime() + whenOffset.inWholeMilliseconds
+
+        val entry = createEntry {
+            setShowWhen(hasTime)
+            setUsesChronometer(hasChronometer)
+            setChronometerCountDown(isCountDown)
+            setWhen(whenCurrentTime)
+        }
+
+        val content = extractContent(entry)
+
+        assertThat(content).isNotNull()
+
+        when (expected) {
+            ExpectedTime.Null -> assertThat(content?.time).isNull()
+
+            ExpectedTime.Time -> {
+                val actual = content?.time as? When.Time
+                assertThat(actual).isNotNull()
+                assertThat(actual?.currentTimeMillis).isEqualTo(whenCurrentTime)
+            }
+
+            ExpectedTime.CountDown,
+            ExpectedTime.CountUp -> {
+                val actual = content?.time as? When.Chronometer
+                assertThat(actual).isNotNull()
+                assertThat(actual?.elapsedRealtimeMillis).isEqualTo(whenElapsedRealtime)
+                assertThat(actual?.isCountDown).isEqualTo(expected == ExpectedTime.CountDown)
+            }
+        }
+    }
+
+    @Test
+    @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+    fun extractContent_fromBaseStyle() {
         val entry = createEntry { setStyle(null) }
 
         val content = extractContent(entry)
@@ -188,7 +363,7 @@
 
     @Test
     @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
-    fun extractsContent_fromBigPictureStyle() {
+    fun extractContent_fromBigPictureStyle() {
         val entry = createEntry { setStyle(BigPictureStyle()) }
 
         val content = extractContent(entry)
@@ -261,7 +436,7 @@
 
     @Test
     @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
-    fun extractsContent_fromOldProgressDeterminate() {
+    fun extractContent_fromOldProgressDeterminate() {
         val entry = createEntry {
             setProgress(TEST_PROGRESS_MAX, TEST_PROGRESS, /* indeterminate= */ false)
         }
@@ -282,7 +457,7 @@
 
     @Test
     @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
-    fun extractsContent_fromOldProgressIndeterminate() {
+    fun extractContent_fromOldProgressIndeterminate() {
         val entry = createEntry {
             setProgress(TEST_PROGRESS_MAX, TEST_PROGRESS, /* indeterminate= */ true)
         }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt
index 3a77d82..52f903e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt
@@ -31,7 +31,7 @@
     fun testUpdateClipping_updatesClipHeight() {
         assertTrue(mediaContainerView.clipHeight == 0)
 
-        mediaContainerView.actualHeight = 10
+        mediaContainerView.setFinalActualHeight(10)
         mediaContainerView.updateClipping()
         assertTrue(mediaContainerView.clipHeight == 10)
     }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelperTest.kt
index 51de9d5..87cd728 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelperTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelperTest.kt
@@ -14,6 +14,7 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.whenever
 
 /** Tests for {@link NotificationTargetsHelper}. */
 @SmallTest
@@ -21,7 +22,7 @@
 @RunWithLooper
 class NotificationTargetsHelperTest : SysuiTestCase() {
     private val featureFlags = FakeFeatureFlagsClassic()
-    lateinit var notificationTestHelper: NotificationTestHelper
+    private lateinit var notificationTestHelper: NotificationTestHelper
     private val sectionsManager: NotificationSectionsManager = mock()
     private val stackScrollLayout: NotificationStackScrollLayout = mock()
 
@@ -107,7 +108,12 @@
         // THEN all the views that surround it become targets with the swiped view at the middle
         val actual =
             notificationTargetsHelper()
-                .findMagneticTargets(viewSwiped = swiped, stackScrollLayout = stackScrollLayout, 5)
+                .findMagneticTargets(
+                    viewSwiped = swiped,
+                    stackScrollLayout = stackScrollLayout,
+                    sectionsManager,
+                    totalMagneticTargets = 5,
+                )
         assertMagneticTargetsForChildren(actual, children.attachedChildren)
     }
 
@@ -123,7 +129,12 @@
         // to the left
         val actual =
             notificationTargetsHelper()
-                .findMagneticTargets(viewSwiped = swiped, stackScrollLayout = stackScrollLayout, 5)
+                .findMagneticTargets(
+                    viewSwiped = swiped,
+                    stackScrollLayout = stackScrollLayout,
+                    sectionsManager,
+                    totalMagneticTargets = 5,
+                )
         val expectedRows =
             listOf(null, null, swiped, children.attachedChildren[1], children.attachedChildren[2])
         assertMagneticTargetsForChildren(actual, expectedRows)
@@ -141,7 +152,12 @@
         // to the right
         val actual =
             notificationTargetsHelper()
-                .findMagneticTargets(viewSwiped = swiped, stackScrollLayout = stackScrollLayout, 5)
+                .findMagneticTargets(
+                    viewSwiped = swiped,
+                    stackScrollLayout = stackScrollLayout,
+                    sectionsManager,
+                    totalMagneticTargets = 5,
+                )
         val expectedRows =
             listOf(
                 children.attachedChildren[childrenNumber - 3],
@@ -153,6 +169,54 @@
         assertMagneticTargetsForChildren(actual, expectedRows)
     }
 
+    @Test
+    fun findMagneticTargets_doesNotCrossSectionAtTop() {
+        val childrenNumber = 5
+        val children = notificationTestHelper.createGroup(childrenNumber).childrenContainer
+
+        // WHEN the second child is swiped and the first one begins a new section
+        val swiped = children.attachedChildren[1]
+        whenever(sectionsManager.beginsSection(swiped, children.attachedChildren[0])).then { true }
+
+        // THEN the neighboring views become targets, with the swiped view at the middle and nulls
+        // to the left since the top view relative to swiped begins a new section
+        val actual =
+            notificationTargetsHelper()
+                .findMagneticTargets(
+                    viewSwiped = swiped,
+                    stackScrollLayout = stackScrollLayout,
+                    sectionsManager,
+                    totalMagneticTargets = 5,
+                )
+        val expectedRows =
+            listOf(null, null, swiped, children.attachedChildren[2], children.attachedChildren[3])
+        assertMagneticTargetsForChildren(actual, expectedRows)
+    }
+
+    @Test
+    fun findMagneticTargets_doesNotCrossSectionAtBottom() {
+        val childrenNumber = 5
+        val children = notificationTestHelper.createGroup(childrenNumber).childrenContainer
+
+        // WHEN the fourth child is swiped and the last one begins a new section
+        val swiped = children.attachedChildren[3]
+        whenever(sectionsManager.beginsSection(children.attachedChildren[4], swiped)).then { true }
+
+        // THEN the neighboring views become targets, with the swiped view at the middle and nulls
+        // to the right since the bottom view relative to swiped begins a new section
+        val actual =
+            notificationTargetsHelper()
+                .findMagneticTargets(
+                    viewSwiped = swiped,
+                    stackScrollLayout = stackScrollLayout,
+                    sectionsManager,
+                    totalMagneticTargets = 5,
+                )
+        val expectedRows =
+            listOf(children.attachedChildren[1], children.attachedChildren[2], swiped, null, null)
+        assertMagneticTargetsForChildren(actual, expectedRows)
+    }
+
     private fun assertMagneticTargetsForChildren(
         targets: List<MagneticRowListener?>,
         children: List<ExpandableNotificationRow?>,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
index e4dd29a..67415de 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
@@ -81,7 +81,7 @@
 
         stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0)
 
-        verify(view).setActualHeight(VIEW_HEIGHT, false)
+        verify(view).setFinalActualHeight(VIEW_HEIGHT)
         verify(view, description("should animate from the top")).translationY = expectedStartY
         verify(view)
             .performAddAnimation(
@@ -104,7 +104,7 @@
 
         stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0)
 
-        verify(view).setActualHeight(VIEW_HEIGHT, false)
+        verify(view).setFinalActualHeight(VIEW_HEIGHT)
         verify(view, description("should animate from the bottom")).translationY = expectedStartY
         verify(view)
             .performAddAnimation(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt
index e493420..ef415c9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt
@@ -16,21 +16,28 @@
 
 package com.android.systemui.statusbar.notification.stack
 
+import android.animation.ValueAnimator
+import android.view.View
+import androidx.test.annotation.UiThreadTest
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.log.assertDoesNotLogWtf
 import com.android.systemui.log.assertLogsWtf
-import kotlin.math.log2
-import kotlin.math.sqrt
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.TAG_ANIMATOR_TRANSLATION_Y
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.Y_TRANSLATION
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
+import kotlin.math.log2
+import kotlin.math.sqrt
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
+@UiThreadTest
 class ViewStateTest : SysuiTestCase() {
-    private val viewState = ViewState()
+    private val viewState = ViewState(true /* usePhysicsForMovement */)
 
     @Suppress("DIVISION_BY_ZERO")
     @Test
@@ -64,4 +71,37 @@
         assertLogsWtf { viewState.scaleY = Float.POSITIVE_INFINITY * 0 }
         Assert.assertEquals(viewState.scaleY, 0.25f)
     }
+
+    @Test
+    fun testUsingPhysics() {
+        val animatedView = View(context)
+        viewState.setUsePhysicsForMovement(true)
+        viewState.applyToView(animatedView)
+        viewState.yTranslation = 100f
+        val animationFilter = AnimationFilter().animateY()
+        val animationProperties = object : AnimationProperties() {
+            override fun getAnimationFilter(): AnimationFilter {
+                return animationFilter
+            }
+        }
+        viewState.animateTo(animatedView, animationProperties)
+        Assert.assertTrue(PhysicsPropertyAnimator.isAnimating(animatedView, Y_TRANSLATION))
+    }
+
+    @Test
+    fun testNotUsingPhysics() {
+        val animatedView = View(context)
+        viewState.setUsePhysicsForMovement(false)
+        viewState.applyToView(animatedView)
+        viewState.yTranslation = 100f
+        val animationFilter = AnimationFilter().animateY()
+        val animationProperties = object : AnimationProperties() {
+            override fun getAnimationFilter(): AnimationFilter {
+                return animationFilter
+            }
+        }
+        viewState.animateTo(animatedView, animationProperties)
+        val tag = animatedView.getTag(TAG_ANIMATOR_TRANSLATION_Y)
+        Assert.assertTrue(tag is ValueAnimator)
+    }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
index c48287c..bab349a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
@@ -17,7 +17,6 @@
 package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor
 
 import android.app.PendingIntent
-import android.platform.test.annotations.EnableFlags
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
@@ -31,9 +30,8 @@
 import com.android.systemui.statusbar.StatusBarIconView
 import com.android.systemui.statusbar.data.repository.fakeStatusBarModeRepository
 import com.android.systemui.statusbar.gesture.swipeStatusBarAwayGestureHandler
-import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
 import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
-import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.addOngoingCallState
 import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallTestHelper.removeOngoingCallState
@@ -51,10 +49,9 @@
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
-@EnableFlags(StatusBarChipsModernization.FLAG_NAME)
+@EnableChipsModernization
 class OngoingCallInteractorTest : SysuiTestCase() {
     private val kosmos = Kosmos().useUnconfinedTestDispatcher()
-    private val repository = kosmos.activeNotificationListRepository
     private val underTest = kosmos.ongoingCallInteractor
 
     @Before
@@ -69,18 +66,19 @@
     }
 
     @Test
-    fun ongoingCallNotification_setsAllFields() =
+    fun ongoingCallNotification_setsAllFields_withAppHidden() =
         kosmos.runTest {
             val latest by collectLastValue(underTest.ongoingCallState)
 
             // Set up notification with icon view and intent
+            val key = "promotedCall"
+            val startTimeMs = 1000L
             val testIconView: StatusBarIconView = mock()
             val testIntent: PendingIntent = mock()
-            val testPromotedContent =
-                PromotedNotificationContentModel.Builder("promotedCall").build()
+            val testPromotedContent = PromotedNotificationContentModel.Builder(key).build()
             addOngoingCallState(
-                key = "promotedCall",
-                startTimeMs = 1000L,
+                key = key,
+                startTimeMs = startTimeMs,
                 statusBarChipIconView = testIconView,
                 contentIntent = testIntent,
                 promotedContent = testPromotedContent,
@@ -89,8 +87,41 @@
             // Verify model is InCall and has the correct icon, intent, and promoted content.
             assertThat(latest).isInstanceOf(OngoingCallModel.InCall::class.java)
             val model = latest as OngoingCallModel.InCall
+            assertThat(model.startTimeMs).isEqualTo(startTimeMs)
             assertThat(model.notificationIconView).isSameInstanceAs(testIconView)
             assertThat(model.intent).isSameInstanceAs(testIntent)
+            assertThat(model.notificationKey).isEqualTo(key)
+            assertThat(model.promotedContent).isSameInstanceAs(testPromotedContent)
+        }
+
+    @Test
+    fun ongoingCallNotification_setsAllFields_withAppVisible() =
+        kosmos.runTest {
+            kosmos.activityManagerRepository.fake.startingIsAppVisibleValue = true
+            val latest by collectLastValue(underTest.ongoingCallState)
+
+            // Set up notification with icon view and intent
+            val key = "promotedCall"
+            val startTimeMs = 1000L
+            val testIconView: StatusBarIconView = mock()
+            val testIntent: PendingIntent = mock()
+            val testPromotedContent = PromotedNotificationContentModel.Builder(key).build()
+            addOngoingCallState(
+                key = key,
+                startTimeMs = startTimeMs,
+                statusBarChipIconView = testIconView,
+                contentIntent = testIntent,
+                promotedContent = testPromotedContent,
+            )
+
+            // Verify model is InCallWithVisibleApp and has the correct icon, intent, and promoted
+            // content.
+            assertThat(latest).isInstanceOf(OngoingCallModel.InCallWithVisibleApp::class.java)
+            val model = latest as OngoingCallModel.InCallWithVisibleApp
+            assertThat(model.startTimeMs).isEqualTo(startTimeMs)
+            assertThat(model.notificationIconView).isSameInstanceAs(testIconView)
+            assertThat(model.intent).isSameInstanceAs(testIntent)
+            assertThat(model.notificationKey).isEqualTo(key)
             assertThat(model.promotedContent).isSameInstanceAs(testPromotedContent)
         }
 
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
index 4009144..8c70da7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
@@ -719,7 +719,6 @@
             job.cancel()
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @Test
     fun satBasedIcon_isUsedWhenNonTerrestrial() =
         testScope.runTest {
@@ -733,7 +732,6 @@
             assertThat(latest).isInstanceOf(SignalIconModel.Satellite::class.java)
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @DisableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     // See b/346904529 for more context
@@ -756,10 +754,7 @@
             assertThat(latest!!.level).isEqualTo(4)
         }
 
-    @EnableFlags(
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN,
-    )
+    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     // See b/346904529 for more context
     fun satBasedIcon_doesNotInflateSignalStrength_flagOn() =
@@ -781,7 +776,6 @@
             assertThat(latest!!.level).isEqualTo(4)
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @DisableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun satBasedIcon_usesPrimaryLevel_flagOff() =
@@ -799,10 +793,7 @@
             assertThat(latest!!.level).isEqualTo(4)
         }
 
-    @EnableFlags(
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN,
-    )
+    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun satBasedIcon_usesSatelliteLevel_flagOn() =
         testScope.runTest {
@@ -823,7 +814,6 @@
      * Context (b/377518113), this test will not be needed after FLAG_CARRIER_ROAMING_NB_IOT_NTN is
      * rolled out. The new API should report 0 automatically if not in service.
      */
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @DisableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun satBasedIcon_reportsLevelZeroWhenOutOfService() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
index 61ed04c..8ea888e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
@@ -856,7 +856,6 @@
                 .isEqualTo(Icon.Resource(R.drawable.mobile_network_type_background, null))
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @Test
     fun nonTerrestrial_defaultProperties() =
         testScope.runTest {
@@ -877,7 +876,6 @@
             assertThat(activityContainerVisible).isFalse()
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @Test
     fun nonTerrestrial_ignoresDefaultProperties() =
         testScope.runTest {
@@ -905,7 +903,6 @@
             assertThat(activityContainerVisible).isFalse()
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @DisableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun nonTerrestrial_usesSatelliteIcon_flagOff() =
@@ -940,10 +937,7 @@
             assertThat(latest!!.icon.res).isEqualTo(R.drawable.ic_satellite_connected_2)
         }
 
-    @EnableFlags(
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN,
-    )
+    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun nonTerrestrial_usesSatelliteIcon_flagOn() =
         testScope.runTest {
@@ -972,7 +966,6 @@
             assertThat(latest!!.icon.res).isEqualTo(R.drawable.ic_satellite_connected_2)
         }
 
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @DisableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun satelliteIcon_ignoresInflateSignalStrength_flagOff() =
@@ -1010,10 +1003,7 @@
             assertThat(latest!!.icon.res).isEqualTo(R.drawable.ic_satellite_connected_2)
         }
 
-    @EnableFlags(
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
-        com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN,
-    )
+    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ROAMING_NB_IOT_NTN)
     @Test
     fun satelliteIcon_ignoresInflateSignalStrength_flagOn() =
         testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
index cd8ca23..51484ba 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
@@ -86,6 +86,7 @@
 import com.android.systemui.statusbar.notification.stack.data.repository.headsUpNotificationRepository
 import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher
 import com.android.systemui.statusbar.phone.data.repository.fakeDarkIconRepository
+import com.android.systemui.statusbar.phone.ongoingcall.EnableChipsModernization
 import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
 import com.android.systemui.statusbar.pipeline.shared.domain.interactor.setHomeStatusBarIconBlockList
 import com.android.systemui.statusbar.pipeline.shared.domain.interactor.setHomeStatusBarInteractorShowOperatorName
@@ -835,7 +836,7 @@
         }
 
     @Test
-    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarChipsModernization.FLAG_NAME)
+    @EnableChipsModernization
     fun isNotificationIconContainerVisible_anyChipShowing_ChipsModernizationOn() =
         kosmos.runTest {
             val latest by collectLastValue(underTest.isNotificationIconContainerVisible)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RotationLockControllerImplTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RotationLockControllerImplTest.java
index 8593f6a..605e4a4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RotationLockControllerImplTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RotationLockControllerImplTest.java
@@ -37,15 +37,19 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.Optional;
+
 @RunWith(AndroidJUnit4.class)
 @TestableLooper.RunWithLooper
 @SmallTest
 public class RotationLockControllerImplTest extends SysuiTestCase {
 
-    private static final String[] DEFAULT_SETTINGS = new String[] {"0:0", "1:2"};
+    private static final String[] DEFAULT_SETTINGS = new String[]{"0:0", "1:2"};
 
-    @Mock RotationPolicyWrapper mRotationPolicyWrapper;
-    @Mock DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;
+    @Mock
+    RotationPolicyWrapper mRotationPolicyWrapper;
+    @Mock
+    DeviceStateRotationLockSettingController mDeviceStateRotationLockSettingController;
 
     private ArgumentCaptor<RotationPolicy.RotationPolicyListener> mRotationPolicyListenerCaptor;
 
@@ -93,7 +97,7 @@
     private void createRotationLockController(String[] deviceStateRotationLockDefaults) {
         new RotationLockControllerImpl(
                 mRotationPolicyWrapper,
-                mDeviceStateRotationLockSettingController,
+                Optional.of(mDeviceStateRotationLockSettingController),
                 deviceStateRotationLockDefaults);
     }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerFlagDisabledTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerFlagDisabledTest.kt
index 799e957..bab5a2d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerFlagDisabledTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerFlagDisabledTest.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.policy
 
 import android.app.IActivityManager
+import android.app.role.RoleManager
 import android.content.pm.PackageManager
 import android.media.projection.MediaProjectionManager
 import android.os.Handler
@@ -48,6 +49,7 @@
     @Mock private lateinit var mediaProjectionManager: MediaProjectionManager
     @Mock private lateinit var packageManager: PackageManager
     @Mock private lateinit var telephonyManager: TelephonyManager
+    @Mock private lateinit var roleManager: RoleManager
     private lateinit var controller: SensitiveNotificationProtectionControllerImpl
 
     @Before
@@ -62,9 +64,10 @@
                 activityManager,
                 packageManager,
                 telephonyManager,
+                roleManager,
                 handler,
                 FakeExecutor(FakeSystemClock()),
-                logger
+                logger,
             )
     }
 
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
index 36e18e6..92bec70 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
@@ -173,15 +173,13 @@
             runCurrent()
             setDeviceState(UNFOLDED)
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 250,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -225,15 +223,13 @@
             runCurrent()
             setDeviceState(UNFOLDED)
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 50,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -258,15 +254,13 @@
             runCurrent()
             setDeviceState(UNFOLDED)
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 50,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -287,15 +281,13 @@
             powerInteractor.setScreenPowerState(SCREEN_ON)
             runCurrent()
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 200,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -317,16 +309,14 @@
             powerInteractor.setScreenPowerState(SCREEN_ON)
             runCurrent()
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 200,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                     toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__AOD,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -369,16 +359,14 @@
             powerInteractor.setScreenPowerState(SCREEN_OFF)
             runCurrent()
 
-            verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
-            val loggedEvent = loggerArgumentCaptor.value
             val expectedLoggedEvent =
-                DisplaySwitchLatencyEvent(
+                successfulEvent(
                     latencyMs = 0,
                     fromFoldableDeviceState = FOLDABLE_DEVICE_STATE_HALF_OPEN,
                     toFoldableDeviceState = FOLDABLE_DEVICE_STATE_CLOSED,
                     toState = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TO_STATE__SCREEN_OFF,
                 )
-            assertThat(loggedEvent).isEqualTo(expectedLoggedEvent)
+            assertThat(capturedLogEvent()).isEqualTo(expectedLoggedEvent)
         }
     }
 
@@ -555,6 +543,23 @@
     }
 
     @Test
+    fun interruptedDisplaySwitchFinished_coolDownPassed_eventWithCorruptedResultSent() {
+        testScope.runTest {
+            startInFoldedState(displaySwitchLatencyTracker)
+
+            startUnfolding()
+            startFolding()
+            systemClock.advanceTime(5000) // clock for measuring latency
+            advanceTimeBy(COOL_DOWN_DURATION.plus(10.milliseconds)) // clock for triggering timeout
+
+            val event = capturedLogEvent()
+            assertThat(event.trackingResult)
+                .isEqualTo(SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__CORRUPTED)
+            assertThat(event.latencyMs).isEqualTo(5000)
+        }
+    }
+
+    @Test
     fun displaySwitchInterrupted_coolDownExtendedByStartEvents() {
         testScope.runTest {
             startInFoldedState(displaySwitchLatencyTracker)
@@ -605,6 +610,27 @@
     }
 
     @Test
+    fun displaySwitchTimedOut_eventLoggedWithTimeOut() {
+        testScope.runTest {
+            startInFoldedState(displaySwitchLatencyTracker)
+
+            startUnfolding()
+            advanceTimeBy(SCREEN_EVENT_TIMEOUT + 10.milliseconds)
+            finishUnfolding()
+
+            val event = capturedLogEvent()
+            assertThat(event.trackingResult)
+                .isEqualTo(SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__TIMED_OUT)
+            assertThat(event.latencyMs).isEqualTo(SCREEN_EVENT_TIMEOUT.inWholeMilliseconds)
+        }
+    }
+
+    private fun capturedLogEvent(): DisplaySwitchLatencyEvent {
+        verify(displaySwitchLatencyLogger).log(capture(loggerArgumentCaptor))
+        return loggerArgumentCaptor.value
+    }
+
+    @Test
     fun foldingStarted_screenStillOn_eventSentOnlyAfterScreenSwitches() {
         // can happen for both folding and unfolding (with animations off) but it's more likely to
         // happen when folding as waiting for screen on is the default case then
@@ -625,6 +651,21 @@
         }
     }
 
+    private fun successfulEvent(
+        latencyMs: Int,
+        fromFoldableDeviceState: Int,
+        toFoldableDeviceState: Int,
+        toState: Int = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__FROM_STATE__UNKNOWN,
+    ): DisplaySwitchLatencyEvent {
+        return DisplaySwitchLatencyEvent(
+            latencyMs = latencyMs,
+            fromFoldableDeviceState = fromFoldableDeviceState,
+            toFoldableDeviceState = toFoldableDeviceState,
+            toState = toState,
+            trackingResult = SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__SUCCESS,
+        )
+    }
+
     private suspend fun TestScope.startInFoldedState(tracker: DisplaySwitchLatencyTracker) {
         setDeviceState(FOLDED)
         tracker.start()
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index ea3cbcf..739e868 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -27,7 +27,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Въведете паролата си"</string>
     <string name="keyguard_enter_password" msgid="6483623792371009758">"Въведете паролата"</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Картата е невалидна."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Заредена"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Заредено"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се безжично"</string>
     <string name="keyguard_plugged_in_dock" msgid="2122073051904360987">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index 226d193..0da0636 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -27,7 +27,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introdueix la contrasenya"</string>
     <string name="keyguard_enter_password" msgid="6483623792371009758">"Introdueix la contrasenya"</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"La targeta no és vàlida."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Bateria carregada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Carregat"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant sense fil"</string>
     <string name="keyguard_plugged_in_dock" msgid="2122073051904360987">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant"</string>
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index 0b8ad02..0913f72 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -62,9 +62,9 @@
     <string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Proovige uuesti või sisestage PIN-kood"</string>
     <string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Proovige uuesti või sisestage parool"</string>
     <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Proovige uuesti või joonistage muster"</string>
-    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"PIN-koodi nõutakse pärast liiga paljusid katseid"</string>
+    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"PIN-koodi nõutakse pärast liiga paljusid katseid."</string>
     <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Parool on nõutav pärast liiga paljusid katseid"</string>
-    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Muster on nõutav pärast liiga paljusid katseid"</string>
+    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Muster on nõutav pärast liiga paljusid katseid."</string>
     <string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Avage PIN-koodi või sõrmejäljega"</string>
     <string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Avage parooli või sõrmejäljega"</string>
     <string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Avage mustri või sõrmejäljega"</string>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 103f8ad..c3fccf2 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -36,7 +36,7 @@
     <string name="keyguard_plugged_in_charging_limited" msgid="5369697538556777542">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареяны қорғау мақсатында зарядтау кідіртілді."</string>
     <string name="keyguard_plugged_in_incompatible_charger" msgid="6384203333154532125">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядтау құрылғысын тексеріңіз."</string>
     <string name="keyguard_network_locked_message" msgid="407096292844868608">"Желі құлыптаулы"</string>
-    <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM картасы жоқ."</string>
+    <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM картасы жоқ"</string>
     <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM картасын пайдалану мүмкін емес."</string>
     <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM картасы құлыпталған."</string>
     <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM картасы PUK кодымен құлыпталды."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index 9a26f7d..1bdfd42 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -27,7 +27,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduza a palavra-passe"</string>
     <string name="keyguard_enter_password" msgid="6483623792371009758">"Introduza a palavra-passe"</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cartão inválido."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Carregada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Bateria carregada"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar sem fios"</string>
     <string name="keyguard_plugged_in_dock" msgid="2122073051904360987">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar…"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index cf2057c..cab9cb9 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -36,7 +36,7 @@
     <string name="keyguard_plugged_in_charging_limited" msgid="5369697538556777542">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядка приостановлена для защиты батареи."</string>
     <string name="keyguard_plugged_in_incompatible_charger" msgid="6384203333154532125">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Проверьте зарядное устройство."</string>
     <string name="keyguard_network_locked_message" msgid="407096292844868608">"Сеть заблокирована"</string>
-    <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM-карта отсутствует"</string>
+    <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Нет SIM-карты"</string>
     <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-карту невозможно использовать."</string>
     <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-карта заблокирована."</string>
     <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-карта заблокирована с помощью PUK-кода."</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index bc047be..6dcc65e 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -46,9 +46,9 @@
     <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM 卡 PIN 區"</string>
     <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"SIM 卡 PUK 區"</string>
     <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"刪除"</string>
-    <string name="disable_carrier_button_text" msgid="7153361131709275746">"停用 eSIM 卡"</string>
-    <string name="error_disable_esim_title" msgid="3802652622784813119">"無法停用 eSIM 卡"</string>
-    <string name="error_disable_esim_msg" msgid="2441188596467999327">"發生錯誤,因此無法停用 eSIM 卡。"</string>
+    <string name="disable_carrier_button_text" msgid="7153361131709275746">"停用 eSIM"</string>
+    <string name="error_disable_esim_title" msgid="3802652622784813119">"無法停用 eSIM"</string>
+    <string name="error_disable_esim_msg" msgid="2441188596467999327">"發生錯誤,因此無法停用 eSIM。"</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Enter 鍵"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"圖案錯誤"</string>
     <string name="kg_wrong_pattern_try_again" msgid="3603524940234151881">"解鎖圖案錯誤,請再試一次。"</string>
@@ -86,7 +86,7 @@
     <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{請於 # 秒後再試一次。}other{請於 # 秒後再試一次。}}"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"輸入 SIM 卡的 PIN 碼。"</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"輸入「<xliff:g id="CARRIER">%1$s</xliff:g>」SIM 卡的 PIN 碼。"</string>
-    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g>停用 eSIM 卡即可在沒有行動服務的情況下使用裝置。"</string>
+    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g>停用 eSIM 即可在沒有行動服務的情況下使用裝置。"</string>
     <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM 卡已遭停用,輸入 PUK 碼即可繼續使用。如需瞭解詳情,請與電信業者聯絡。"</string>
     <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM 卡「<xliff:g id="CARRIER">%1$s</xliff:g>」現已遭停用,輸入 PUK 碼即可繼續使用。如需瞭解詳情,請與電信業者聯絡。"</string>
     <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"輸入所需的 PIN 碼"</string>
diff --git a/packages/SystemUI/res/color/media_player_outline_button_bg.xml b/packages/SystemUI/res/color/media_player_outline_button_bg.xml
deleted file mode 100644
index ba7848a..0000000
--- a/packages/SystemUI/res/color/media_player_outline_button_bg.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
- <item android:color="?androidprv:attr/colorAccentPrimaryVariant"/>
-</selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/color/media_player_solid_button_bg.xml b/packages/SystemUI/res/color/media_player_solid_button_bg.xml
index 69c9711..cc54fa3 100644
--- a/packages/SystemUI/res/color/media_player_solid_button_bg.xml
+++ b/packages/SystemUI/res/color/media_player_solid_button_bg.xml
@@ -15,7 +15,6 @@
   ~ limitations under the License.
   -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-          xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
-    <item android:color="?androidprv:attr/colorAccentPrimary"/>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@android:color/system_primary_dark"/>
 </selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/qs_media_art_background.xml b/packages/SystemUI/res/drawable/qs_media_art_background.xml
index 95a1870..e59f82b 100644
--- a/packages/SystemUI/res/drawable/qs_media_art_background.xml
+++ b/packages/SystemUI/res/drawable/qs_media_art_background.xml
@@ -15,6 +15,7 @@
   ~ limitations under the License
   -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="rectangle">
-    <corners android:radius="@dimen/qs_media_album_radius"/>
+    android:shape="rectangle">
+    <solid android:color="#FF000000" />
+    <corners android:radius="@dimen/notification_corner_radius"/>
 </shape>
diff --git a/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml b/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
index 1f93717..795b7b4 100644
--- a/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
+++ b/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
@@ -121,8 +121,8 @@
                 android:contentDescription="@string/turn_on_bluetooth"
                 android:switchMinWidth="@dimen/settingslib_switch_track_width"
                 android:theme="@style/MainSwitch.Settingslib"
-                android:thumb="@drawable/settingslib_thumb_selector"
-                android:track="@drawable/settingslib_track_selector"
+                android:thumb="@drawable/settingslib_switch_thumb"
+                android:track="@drawable/settingslib_switch_track"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/bluetooth_toggle_title"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -163,8 +163,8 @@
                 android:contentDescription="@string/turn_on_bluetooth_auto_tomorrow"
                 android:switchMinWidth="@dimen/settingslib_switch_track_width"
                 android:theme="@style/MainSwitch.Settingslib"
-                android:thumb="@drawable/settingslib_thumb_selector"
-                android:track="@drawable/settingslib_track_selector"
+                android:thumb="@drawable/settingslib_switch_thumb"
+                android:track="@drawable/settingslib_switch_track"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/bluetooth_auto_on_toggle_title"
                 app:layout_constraintTop_toBottomOf="@+id/bluetooth_toggle" />
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 889aefe..f41eaec 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -13,14 +13,13 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/volume_dialog"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:alpha="0"
-    android:clipChildren="false"
-    app:layoutDescription="@xml/volume_dialog_scene">
+    android:clipChildren="false">
 
     <View
         android:id="@+id/volume_dialog_background"
@@ -52,7 +51,17 @@
 
     <include
         android:id="@+id/volume_dialog_main_slider_container"
-        layout="@layout/volume_dialog_slider" />
+        layout="@layout/volume_dialog_slider"
+        android:layout_width="@dimen/volume_dialog_slider_width"
+        android:layout_height="0dp"
+        android:layout_marginTop="@dimen/volume_dialog_slider_vertical_margin"
+        android:layout_marginEnd="@dimen/volume_dialog_window_margin"
+        android:layout_marginBottom="@dimen/volume_dialog_slider_vertical_margin"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHeight_max="@dimen/volume_dialog_slider_height"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.5" />
 
     <FrameLayout
         android:id="@+id/volume_dialog_bottom_section_container"
@@ -88,4 +97,4 @@
         app:layout_constraintEnd_toStartOf="@id/volume_dialog_background"
         app:layout_constraintTop_toTopOf="@id/volume_dialog_main_slider_container" />
 
-</androidx.constraintlayout.motion.widget.MotionLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index b8b69b6..538d9e2 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ontkies legstuk"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Verminder hoogte"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Vermeerder hoogte"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Wys volgende"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Wys vorige"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Sluitskermlegstukke"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Om ’n app met ’n legstuk oop te maak, sal jy moet verifieer dat dit jy is. Hou ook in gedagte dat enigeen dit kan bekyk, selfs wanneer jou tablet gesluit is. Sommige legstukke is moontlik nie vir jou sluitskerm bedoel nie en dit kan onveilig wees om dit hier by te voeg."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Het dit"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> steun nie gesprekskenmerke nie"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Terugvoer"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Maak toe"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Moenie weer wys nie"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Hierdie kennisgewings kan nie gewysig word nie."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Oproepkennisgewings kan nie gewysig word nie."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Voubare toestel word ontvou"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Voubare toestel word omgekeer"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Voorste skerm is aangeskakel"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Gly om binneskerm te gebruik"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"gevou"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"oopgevou"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-af/tiles_states_strings.xml b/packages/SystemUI/res/values-af/tiles_states_strings.xml
index fbeefc8..3d0dbb5 100644
--- a/packages/SystemUI/res/values-af/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-af/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Af"</item>
     <item msgid="5908720590832378783">"Aan"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index c89ea75..f1b9fca 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ምግብር አትምረጥ"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ቁመት ቀንስ"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ቁመት ጨምር"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"ቀጣይ አሳይ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ቀዳሚ አሳይ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"የማያ ገፅ ቁልፍ ምግብሮች"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ምግብር በመጠቀም መተግበሪያ ለመክፈት እርስዎ መሆንዎን ማረጋገጥ አለብዎት። እንዲሁም የእርስዎ ጡባዊ በተቆለፈበት ጊዜ እንኳን ማንኛውም ሰው እነሱን ማየት እንደሚችል ከግምት ውስጥ ያስገቡ። አንዳንድ ምግብሮች ለማያ ገፅ ቁልፍዎ የታሰቡ ላይሆኑ ይችላሉ እና እዚህ ለማከል አስተማማኝ ላይሆኑ ይችላሉ።"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ገባኝ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> የውይይት ባህሪያትን አይደግፍም"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ግብረመልስ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"አሰናብት"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ዳግም አታሳይ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"የጥሪ ማሳወቂያዎች ሊቀየሩ አይችሉም።"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"መታጠፍ የሚችል መሣሪያ እየተዘረጋ ነው"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"መታጠፍ የሚችል መሣሪያ እየተገለበጠ ነው"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"የፊት ለፊት ማያ ገፅ በርቷል"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"ውስጣዊ ማያ ገፅን ለመጠቀም ያንሸራትቱ"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"የታጠፈ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"የተዘረጋ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-am/tiles_states_strings.xml b/packages/SystemUI/res/values-am/tiles_states_strings.xml
index b98fe57..31a7d96 100644
--- a/packages/SystemUI/res/values-am/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-am/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ጠፍቷል"</item>
     <item msgid="5908720590832378783">"በርቷል"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 962f1c9..7d55b85 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"إلغاء اختيار التطبيق المصغّر"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"تقليل الارتفاع"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"زيادة الارتفاع"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"عرض التالي"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"عرض السابق"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"التطبيقات المصغّرة المصمَّمة لشاشة القفل"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"لفتح تطبيق باستخدام تطبيق مصغَّر، عليك إثبات هويتك. يُرجى ملاحظة أنّ أي شخص يمكنه الاطّلاع محتوى التطبيقات المصغَّرة، حتى وإن كان جهازك اللوحي مُقفلاً. بعض التطبيقات المصغّرة قد لا تكون مُصمَّمة لإضافتها إلى شاشة القفل، وقد يكون هذا الإجراء غير آمن."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"حسنًا"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"لا يدعم تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> ميزات المحادثات."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"الملاحظات"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"إغلاق"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"عدم الإظهار مرة أخرى"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"يتعذّر تعديل هذه الإشعارات."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"لا يمكن تعديل إشعارات المكالمات."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"جهاز قابل للطي يجري فتحه"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"جهاز قابل للطي يجري قلبه"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"تم تفعيل الشاشة الأمامية"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"يُرجى التمرير لاستخدام الشاشة الداخلية"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"مطوي"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"غير مطوي"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"‫%1$s / %2$s"</string>
@@ -1525,7 +1531,7 @@
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"الإضاءة الخلفية للوحة المفاتيح"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"‏مستوى الإضاءة: %1$d من %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"إدارة المنزل آليًّا"</string>
-    <string name="home_controls_dream_description" msgid="4644150952104035789">"يمكنك إدارة المنزل آليًّا بشكل سريع من شاشة الاستراحة"</string>
+    <string name="home_controls_dream_description" msgid="4644150952104035789">"يمكنك إدارة المنزل آليًّا بسرعة من شاشة الاستراحة."</string>
     <string name="volume_undo_action" msgid="5815519725211877114">"تراجع"</string>
     <string name="back_edu_toast_content" msgid="4530314597378982956">"للرجوع، مرِّر سريعًا لليمين أو لليسار على لوحة اللمس باستخدام 3 أصابع"</string>
     <string name="home_edu_toast_content" msgid="3381071147871955415">"للانتقال إلى الشاشة الرئيسية، مرِّر سريعًا للأعلى على لوحة اللمس باستخدام 3 أصابع"</string>
diff --git a/packages/SystemUI/res/values-ar/tiles_states_strings.xml b/packages/SystemUI/res/values-ar/tiles_states_strings.xml
index 0be4367..abb0d85 100644
--- a/packages/SystemUI/res/values-ar/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ar/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"متوقّفة"</item>
     <item msgid="5908720590832378783">"مفعّلة"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index b88e9e9..74c4e3e 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ৱিজেট বাছনিৰ পৰা আঁতৰাওক"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"উচ্চতা হ্ৰাস কৰক"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"উচ্চতা বৃদ্ধি কৰক"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"পিছৰটো দেখুৱাওক"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"পূৰ্বৰটো দেখুৱাওক"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"লক স্ক্ৰীন ৱিজেট"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"এটা ৱিজেট ব্যৱহাৰ কৰি কোনো এপ্ খুলিবলৈ, এয়া আপুনিয়েই বুলি সত্যাপন পৰীক্ষা কৰিব লাগিব। লগতে, মনত ৰাখিব যে যিকোনো লোকেই সেইবোৰ চাব পাৰে, আনকি আপোনাৰ টেবলেটটো লক হৈ থাকিলেও। কিছুমান ৱিজেট হয়তো আপোনাৰ লক স্ক্ৰীনৰ বাবে কৰা হোৱা নাই আৰু ইয়াত যোগ কৰাটো অসুৰক্ষিত হ’ব পাৰে।"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুজি পালোঁ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বাৰ্তালাপৰ সুবিধাসমূহ সমৰ্থন নকৰে"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"মতামত"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"অগ্ৰাহ্য কৰক"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"পুনৰাই নেদেখুৱাব"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কলৰ জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"জপাব পৰা ডিভাইচৰ জাপ খুলি থকা হৈছে"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"জপাব পৰা ডিভাইচৰ ওলোটাই থকা হৈছে"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"সন্মুখৰ স্ক্ৰীনখন অন কৰা হৈছে"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"ভিতৰৰ স্ক্ৰীন ব্যৱহাৰ কৰিবলৈ স্লাইড কৰক"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফ’ল্ড কৰা"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"আনফ’ল্ড কৰা"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-as/tiles_states_strings.xml b/packages/SystemUI/res/values-as/tiles_states_strings.xml
index da237e5..68212e0 100644
--- a/packages/SystemUI/res/values-as/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-as/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"অফ আছে"</item>
     <item msgid="5908720590832378783">"অন আছে"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index e629969..4b316b6 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"vidcet seçimini silin"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Hündürlüyü azaldın"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Hündürlüyü artırın"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Növbətini göstərin"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Əvvəlkini göstərin"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Kilid ekranı vidcetləri"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Vidcetdən istifadə edərək tətbiqi açmaq üçün kimliyi doğrulamalısınız. Planşet kilidli olsa da, hər kəs vidcetlərə baxa bilər. Bəzi vidcetlər kilid ekranı üçün nəzərdə tutulmayıb və bura əlavə etmək təhlükəli ola bilər."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> söhbət funksiyalarını dəstəkləmir"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Rəy"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Rədd edin"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Yenidən göstərməyin"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirişlər dəyişdirilə bilməz."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Zəng bildirişləri dəyişdirilə bilməz."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Qatlana bilən cihaz açılır"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Qatlana bilən cihaz fırladılır"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Ön ekran aktiv edildi"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Daxili ekrandan istifadə etmək üçün sürüşdürün"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"qatlanmış"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"açıq"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-az/tiles_states_strings.xml b/packages/SystemUI/res/values-az/tiles_states_strings.xml
index 0203fb0..696fad2 100644
--- a/packages/SystemUI/res/values-az/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-az/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Deaktiv"</item>
     <item msgid="5908720590832378783">"Aktiv"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 1970144..9a5bc49 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"poništi izbor vidžeta"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Smanji visinu"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Povećaj visinu"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Prikažite sledeće"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Prikažite prethodno"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Vidžeti za zaključani ekran"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da biste otvorili aplikaciju koja koristi vidžet, treba da potvrdite da ste to vi. Imajte u vidu da svako može da ga vidi, čak i kada je tablet zaključan. Neki vidžeti možda nisu namenjeni za zaključani ekran i možda nije bezbedno da ih tamo dodate."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Važi"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije konverzacije"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ova obaveštenja ne mogu da se menjaju."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obaveštenja o pozivima ne mogu da se menjaju."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
@@ -1370,7 +1377,7 @@
     <string name="bt_le_audio_broadcast_dialog_different_output" msgid="7885102097302562674">"Promenite izlaz"</string>
     <string name="bt_le_audio_broadcast_dialog_unknown_name" msgid="3791472237793443044">"Nepoznato"</string>
     <string name="dream_time_complication_12_hr_time_format" msgid="4691197486690291529">"s:min"</string>
-    <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"č:min"</string>
+    <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:mm"</string>
     <string name="log_access_confirmation_title" msgid="4843557604739943395">"Želite da dozvolite da <xliff:g id="LOG_ACCESS_APP_NAME">%s</xliff:g> pristupa svim evidencijama uređaja?"</string>
     <string name="log_access_confirmation_allow" msgid="752147861593202968">"Dozvoli jednokratan pristup"</string>
     <string name="log_access_confirmation_deny" msgid="2389461495803585795">"Ne dozvoli"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
index 2401e4a..3b99019 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Isključeno"</item>
     <item msgid="5908720590832378783">"Uključeno"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index afbac9f..5fc56bc 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"скасаваць выбар віджэта"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Паменшыць вышыню"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Павялічыць вышыню"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Паказаць наступны"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Паказаць папярэдні"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Віджэты на экране блакіроўкі"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Каб адкрыць праграму з дапамогай віджэта, вам неабходна будзе пацвердзіць сваю асобу. Таксама памятайце, што такія віджэты могуць пабачыць іншыя людзі, нават калі экран планшэта заблакіраваны. Некаторыя віджэты могуць не падыходзіць для выкарыстання на экране блакіроўкі, і дадаваць іх сюды можа быць небяспечна."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Зразумела"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Водгук"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыць"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Больш не паказваць"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Гэтыя апавяшчэнні нельга змяніць."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Апавяшчэнні пра выклікі нельга змяніць."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
diff --git a/packages/SystemUI/res/values-be/tiles_states_strings.xml b/packages/SystemUI/res/values-be/tiles_states_strings.xml
index 2dc7057..9f520da9 100644
--- a/packages/SystemUI/res/values-be/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-be/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Выключана"</item>
     <item msgid="5908720590832378783">"Уключана"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 77542de..339d751 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"премахване на избора от приспособлението"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Намаляване на височината"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Увеличаване на височината"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Показване на следващия"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Показване на предишния"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Приспособления за заключения екран"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите дадено приложение посредством приспособление, ще трябва да потвърдите, че това сте вие. Също така имайте предвид, че всеки ще вижда приспособленията дори когато таблетът ви е заключен. Възможно е някои от тях да не са предназначени за заключения екран и добавянето им на него може да е опасно."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Разбрах"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Отзиви"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Отхвърляне"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Да не се показва отново"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Тези известия не могат да бъдат променяни."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известията за обаждания не могат да бъдат променяни."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Тази група от известия не може да бъде конфигурирана тук"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Разгъване на сгъваемо устройство"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Обръщане на сгъваемо устройство"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Предният екран е включен"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Плъзнете, за да използвате вътрешния екран"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворено"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворено"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-bg/tiles_states_strings.xml b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
index cc632db7..e598f928 100644
--- a/packages/SystemUI/res/values-bg/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Изкл."</item>
     <item msgid="5908720590832378783">"Вкл."</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 6bd1e0c..ef1253b 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"উইজেট বাদ দিন"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"উচ্চতা কমান"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"উচ্চতা বাড়ান"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"পরেরটি দেখুন"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"আগেরটি দেখুন"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"লক স্ক্রিন উইজেট"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"উইজেট ব্যবহার করে কোনও অ্যাপ খুলতে, আপনাকে নিজের পরিচয় যাচাই করতে হবে। এছাড়াও, মনে রাখবেন, আপনার ট্যাবলেট লক থাকলেও যেকেউ তা দেখতে পারবেন। কিছু উইজেট আপনার লক স্ক্রিনের উদ্দেশ্যে তৈরি করা হয়নি এবং এখানে যোগ করা নিরাপদ নাও হতে পারে।"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুঝেছি"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এ কথোপকথন ফিচার কাজ করে না"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"মতামত"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"বাতিল করুন"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"আর দেখতে চাই না"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কল বিজ্ঞপ্তি পরিবর্তন করা যাবে না।"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ফোল্ড করা যায় এমন ডিভাইস খোলা হচ্ছে"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ফোল্ড করা যায় এমন ডিভাইস উল্টানো হচ্ছে"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"ফ্রন্ট স্ক্রিন চালু আছে"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"ভেতরের স্ক্রিন ব্যবহার করতে স্লাইড করুন"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফোল্ড করা রয়েছে"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ফোল্ড করা নেই"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-bn/tiles_states_strings.xml b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
index e213928..38d9ee7 100644
--- a/packages/SystemUI/res/values-bn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"বন্ধ আছে"</item>
     <item msgid="5908720590832378783">"চালু আছে"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 4ccc38a..aa036d4 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"poništavanje odabira vidžeta"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Smanjenje visine"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Povećanje visine"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Prikaz sljedećeg"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Prikaz prethodnog"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Vidžeti na zaključanom ekranu"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da otvorite aplikaciju pomoću vidžeta, morat ćete potvrditi identitet. Također imajte na umu da ih svako može pregledati, čak i ako je tablet zaključan. Neki vidžeti možda nisu namijenjeni za vaš zaključani ekran i njihovo dodavanje ovdje možda nije sigurno."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Razumijem"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije razgovora"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Nije moguće izmijeniti obavještenja o pozivima."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string>
@@ -1394,7 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Sklopivi uređaj se rasklapa"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Sklopivi uređaj se obrće"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Prednji ekran je uključen"</string>
-    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Kliznite za upotrebu unutarnjeg zaslona"</string>
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Kliznite da koristite unutrašnji ekran"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"sklopljeno"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otklopljeno"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-bs/tiles_states_strings.xml b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
index 2401e4a..3b99019 100644
--- a/packages/SystemUI/res/values-bs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Isključeno"</item>
     <item msgid="5908720590832378783">"Uključeno"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 80558a9..15d9283 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"desselecciona el widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Redueix l\'alçada"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Augmenta l\'alçada"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostra el següent"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostra l\'anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets de la pantalla de bloqueig"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per obrir una aplicació utilitzant un widget, necessitaràs verificar la teva identitat. També has de tenir en compte que qualsevol persona pot veure els widgets, fins i tot quan la tauleta està bloquejada. És possible que alguns widgets no estiguin pensats per a la pantalla de bloqueig i que no sigui segur afegir-los-hi."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entesos"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admet les funcions de converses"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Suggeriments"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No ho tornis a mostrar"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Aquestes notificacions no es poden modificar."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notificacions de trucades no es poden modificar."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquest grup de notificacions no es pot configurar aquí"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositiu plegable desplegant-se"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositiu plegable girant"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"La pantalla frontal està activada"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Llisca per utilitzar la pantalla interior"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegat"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegat"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
@@ -1474,7 +1480,7 @@
     <string name="shortcut_helper_key_combinations_forward_slash" msgid="1238652537199346970">"barra inclinada"</string>
     <string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"Ansa per arrossegar"</string>
     <string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Configuració del teclat"</string>
-    <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Configura la drecera"</string>
+    <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Configura"</string>
     <string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Suprimeix"</string>
     <string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Sí, restableix"</string>
     <string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Cancel·la"</string>
diff --git a/packages/SystemUI/res/values-ca/tiles_states_strings.xml b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
index 94d5545..e0c3fb9 100644
--- a/packages/SystemUI/res/values-ca/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desactivat"</item>
     <item msgid="5908720590832378783">"Activat"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index ee32107..031e59d 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"zrušit výběr widgetu"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Snížit výšku"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Zvýšit výšku"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Zobrazit další"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Zobrazit předchozí"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgety na obrazovce uzamčení"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"K otevření aplikace pomocí widgetu budete muset ověřit svou totožnost. Také mějte na paměti, že widgety uvidí kdokoli, i když tablet bude uzamčen. Některé widgety nemusí být pro obrazovku uzamčení určeny a nemusí být bezpečné je na ni přidat."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Rozumím"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Zpětná vazba"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Zavřít"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Už nezobrazovat"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tato oznámení nelze upravit."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornění na hovor nelze upravit."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rozkládání rozkládacího zařízení"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Otáčení rozkládacího zařízení"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Přední obrazovka je zapnutá"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Pokud chcete použít vnitřní obrazovku, přejeďte prstem"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"složené"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"rozložené"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-cs/tiles_states_strings.xml b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
index a02ed76..ea62773 100644
--- a/packages/SystemUI/res/values-cs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Vypnuto"</item>
     <item msgid="5908720590832378783">"Zapnuto"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 323b9d8..1ddaf8c 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"fjern markering af widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Reducer højden"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Forøg højden"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Vis næste"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Vis forrige"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets på låseskærmen"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Hvis du vil åbne en app ved hjælp af en widget, skal du verificere din identitet. Husk også, at alle kan se dem, også når din tablet er låst. Nogle widgets er muligvis ikke beregnet til låseskærmen, og det kan være usikkert at tilføje dem her."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Luk"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Vis ikke igen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse notifikationer kan ikke redigeres."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Opkaldsnotifikationer kan ikke redigeres."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldbar enhed foldes ud"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldbar enhed vendes om"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Frontskærmen er aktiveret"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Skub for at bruge den indre skærm"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"foldet"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"foldet ud"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-da/tiles_states_strings.xml b/packages/SystemUI/res/values-da/tiles_states_strings.xml
index 8b536a2..2b1dbcf 100644
--- a/packages/SystemUI/res/values-da/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-da/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Fra"</item>
     <item msgid="5908720590832378783">"Til"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 3c8be75..16bbea1 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -463,7 +463,7 @@
     <string name="zen_mode_off" msgid="1736604456618147306">"Aus"</string>
     <string name="zen_mode_set_up" msgid="8231201163894922821">"Nicht festgelegt"</string>
     <string name="zen_mode_no_manual_invocation" msgid="1769975741344633672">"In den Einstellungen verwalten"</string>
-    <string name="zen_mode_active_modes" msgid="1625850411578488856">"{count,plural, =0{Keine aktiven Modi}=1{{mode} aktiv}other{# aktiv}}"</string>
+    <string name="zen_mode_active_modes" msgid="1625850411578488856">"{count,plural, =0{Kein Modus aktiv}=1{{mode} aktiv}other{# aktiv}}"</string>
     <string name="zen_priority_introduction" msgid="3159291973383796646">"Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von dir festgelegten Personen. Du hörst jedoch weiterhin Sound, wenn du dir Musik anhörst, Videos ansiehst oder Spiele spielst."</string>
     <string name="zen_alarms_introduction" msgid="3987266042682300470">"Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe. Du hörst jedoch weiterhin Sound, wenn du dir Musik anhörst, Videos ansiehst oder Spiele spielst."</string>
     <string name="zen_priority_customize_button" msgid="4119213187257195047">"Anpassen"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"Auswahl für Widget aufheben"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Höhe verringern"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Höhe vergrößern"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Nächstes Element anzeigen"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Vorheriges Element anzeigen"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Sperrbildschirm-Widgets"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Wenn du eine App mit einem Widget öffnen möchtest, musst du deine Identität bestätigen. Beachte auch, dass jeder die Widgets sehen kann, auch wenn dein Tablet gesperrt ist. Einige Widgets sind möglicherweise nicht für den Sperrbildschirm vorgesehen, sodass es unsicher sein kann, sie hier hinzuzufügen."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
@@ -541,7 +543,7 @@
     <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub-Modus entdecken"</string>
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Du kannst während des Ladevorgangs auf deine bevorzugten Widgets und Bildschirmschoner zugreifen."</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Los gehts"</string>
-    <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Beim Laden deine bevorzugten Bildschirmschoner anzeigen"</string>
+    <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Beim Laden werden deine Lieblings-Bildschirmschoner angezeigt"</string>
     <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Pull-down-Menü"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> unterstützt keine Funktionen für Unterhaltungen"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Schließen"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nicht mehr anzeigen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Diese Benachrichtigungen können nicht geändert werden."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anrufbenachrichtigungen können nicht geändert werden."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Faltbares Gerät wird geöffnet"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Faltbares Gerät wird umgeklappt"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Frontdisplay aktiviert"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Ziehen, um das innere Display zu verwenden"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zugeklappt"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aufgeklappt"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-de/tiles_states_strings.xml b/packages/SystemUI/res/values-de/tiles_states_strings.xml
index bb39b4e..ded7efd 100644
--- a/packages/SystemUI/res/values-de/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-de/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Aus"</item>
     <item msgid="5908720590832378783">"An"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 470dd2c..89c2cd2 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"αποεπιλογή γραφικού στοιχείου"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Μείωση του ύψους"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Αύξηση του ύψους"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Εμφάνιση επόμενου"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Εμφάνιση προηγούμενου"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Γραφικά στοιχεία οθόνης κλειδώματος"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Για να ανοίξετε μια εφαρμογή χρησιμοποιώντας ένα γραφικό στοιχείο, θα πρέπει να επαληθεύσετε την ταυτότητά σας. Επίσης, λάβετε υπόψη ότι η προβολή τους είναι δυνατή από οποιονδήποτε, ακόμα και όταν το tablet σας είναι κλειδωμένο. Ορισμένα γραφικά στοιχεία μπορεί να μην προορίζονται για την οθόνη κλειδώματος και η προσθήκη τους εδώ ενδέχεται να μην είναι ασφαλής."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Το κατάλαβα"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Σχόλια"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Παράβλεψη"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Να μην εμφανιστεί ξανά"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Δεν είναι δυνατή η τροποποίηση των ειδοποιήσεων κλήσεων."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Αναδιπλούμενη συσκευή που ξεδιπλώνει"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Αναδιπλούμενη συσκευή που διπλώνει"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Η μπροστινή οθόνη ενεργοποιήθηκε"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Σύρετε για χρήση της εσωτερικής οθόνης"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"διπλωμένη"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ξεδιπλωμένη"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-el/tiles_states_strings.xml b/packages/SystemUI/res/values-el/tiles_states_strings.xml
index 5ce4b8c..398bf13 100644
--- a/packages/SystemUI/res/values-el/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-el/tiles_states_strings.xml
@@ -64,7 +64,7 @@
   <string-array name="tile_states_rotation">
     <item msgid="4578491772376121579">"Μη διαθέσιμο"</item>
     <item msgid="5776427577477729185">"Ανενεργό"</item>
-    <item msgid="7105052717007227415">"Ενεργό"</item>
+    <item msgid="7105052717007227415">"Ενεργή"</item>
   </string-array>
   <string-array name="tile_states_bt">
     <item msgid="5330252067413512277">"Μη διαθέσιμο"</item>
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Ανενεργό"</item>
     <item msgid="5908720590832378783">"Ενεργό"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 0c161a7..af0703c 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"unselect widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Decrease height"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Increase height"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Show next"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Show previous"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Front screen turned on"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Slide to use inner screen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
index 1b60921..d62f2e5 100644
--- a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Off"</item>
     <item msgid="5908720590832378783">"On"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 3a7440b..f171a78 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"unselect widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Decrease height"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Increase height"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Show next"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Show previous"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you’ll need to verify it’s you. Also, keep in mind that anyone can view them, even when your tablet’s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -806,7 +808,9 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
+    <string name="notification_inline_disable_promotion" msgid="3551682588314376921">"Don\'t show as pinned"</string>
+    <string name="live_notifications_title" msgid="1586553354601345379">"Showing Live Updates"</string>
+    <string name="live_notifications_desc" msgid="7470787001768372152">"Pinned notifications display live info from apps, and always appear on the status bar and lock screen"</string>
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
index 1b60921..d62f2e5 100644
--- a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Off"</item>
     <item msgid="5908720590832378783">"On"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 0c161a7..af0703c 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"unselect widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Decrease height"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Increase height"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Show next"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Show previous"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Front screen turned on"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Slide to use inner screen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
index 1b60921..d62f2e5 100644
--- a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Off"</item>
     <item msgid="5908720590832378783">"On"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 0c161a7..af0703c 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"unselect widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Decrease height"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Increase height"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Show next"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Show previous"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Front screen turned on"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Slide to use inner screen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"folded"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"unfolded"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
index 1b60921..d62f2e5 100644
--- a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Off"</item>
     <item msgid="5908720590832378783">"On"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index dd8f735..0e15e45 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"anular la selección del widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Reducir la altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar la altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar siguiente"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets en la pantalla de bloqueo"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una app usando un widget, debes verificar tu identidad. Además, ten en cuenta que cualquier persona podrá verlo, incluso cuando la tablet esté bloqueada. Es posible que algunos widgets no se hayan diseñados para la pantalla de bloqueo y podría ser peligroso agregarlos allí."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Descartar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No volver a mostrar"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"No se pueden modificar estas notificaciones."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"No se pueden modificar las notificaciones de llamada."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"No se puede configurar aquí este grupo de notificaciones"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
index 1c587d6..d835483 100644
--- a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desactivado"</item>
     <item msgid="5908720590832378783">"Activado"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index a2fcc5c..1670ce6 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"deseleccionar widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Reducir altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar siguiente"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets para la pantalla de bloqueo"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una aplicación usando un widget, deberás verificar que eres tú. Además, ten en cuenta que cualquier persona podrá verlos, incluso aunque tu tablet esté bloqueada. Es posible que algunos widgets no estén pensados para la pantalla de bloqueo y no sea seguro añadirlos aquí."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Cerrar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No volver a mostrar"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificaciones no se pueden modificar."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Las notificaciones de llamada no se pueden modificar."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Este grupo de notificaciones no se puede configurar aquí"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo plegable desplegándose"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo plegable mostrado desde varios ángulos"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Pantalla frontal encendida"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Desliza para usar la pantalla interior"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegado"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-es/tiles_states_strings.xml b/packages/SystemUI/res/values-es/tiles_states_strings.xml
index 5c4f36a..ea75e52 100644
--- a/packages/SystemUI/res/values-es/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desactivado"</item>
     <item msgid="5908720590832378783">"Activado"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index bca7491..445b540 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -504,8 +504,8 @@
     <string name="accessibility_action_open_communal_hub" msgid="3081702792413787849">"Lukustuskuva vidinad"</string>
     <string name="accessibility_announcement_communal_widget_added" msgid="6911593106099328271">"Vidin <xliff:g id="WIDGET_NAME">%1$s</xliff:g> lisati lukustuskuvale"</string>
     <string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Ühise õpetuse käivitamiseks pühkige vasakule"</string>
-    <string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Kohandage"</string>
-    <string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Loobuge"</string>
+    <string name="cta_tile_button_to_open_widget_editor" msgid="3871562362382963878">"Kohanda"</string>
+    <string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Loobu"</string>
     <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Lisage ja eemaldage vidinaid ning muutke nende järjestust"</string>
     <string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Lisage rohkem vidinaid"</string>
     <string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Vajutage pikalt vidinate kohandamiseks"</string>
@@ -530,10 +530,12 @@
     <string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"eemaldage vidin"</string>
     <string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"asetage valitud vidin"</string>
     <string name="communal_widget_picker_title" msgid="1953369090475731663">"Lukustuskuva vidinad"</string>
-    <string name="communal_widget_picker_description" msgid="490515450110487871">"Igaüks saab vaadata luk.kuval olevaid vidinaid, isegi kui tahvelarvuti on lukus."</string>
+    <string name="communal_widget_picker_description" msgid="490515450110487871">"Igaüks saab vaadata lukustuskuval olevaid vidinaid, isegi kui tahvelarvuti on lukus."</string>
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"tühistage vidina valimine"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Vähenda kõrgust"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Suurenda kõrgust"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Kuva järgmine"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Kuva eelmine"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lukustuskuva vidinad"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Rakenduse avamiseks vidina abil peate kinnitama, et see olete teie. Samuti pidage meeles, et kõik saavad vidinaid vaadata, isegi kui teie tahvelarvuti on lukus. Mõni vidin ei pruugi olla ette nähtud teie lukustuskuva jaoks ja seda pole turvaline siia lisada."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selge"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei toeta vestlusfunktsioone"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Tagasiside"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Loobu"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ära enam näita"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Neid märguandeid ei saa muuta."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Kõnemärguandeid ei saa muuta."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Seda märguannete rühma ei saa siin seadistada"</string>
diff --git a/packages/SystemUI/res/values-et/tiles_states_strings.xml b/packages/SystemUI/res/values-et/tiles_states_strings.xml
index f995128..a9f0880 100644
--- a/packages/SystemUI/res/values-et/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-et/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Väljas"</item>
     <item msgid="5908720590832378783">"Sees"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index f447dc6..1f7d697 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"desautatu widgeta"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Txikitu altuera"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Handitu altuera"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Erakutsi hurrengoa"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Erakutsi aurrekoa"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Pantaila blokeatuko widgetak"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aplikazio bat widget baten bidez irekitzeko, zeu zarela egiaztatu beharko duzu. Gainera, kontuan izan edonork ikusi ahalko dituela halako widgetak, tableta blokeatuta badago ere. Baliteke widget batzuk pantaila blokeaturako egokiak ez izatea, eta agian ez da segurua haiek bertan gehitzea."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ados"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez ditu onartzen elkarrizketetarako eginbideak"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Iritzia"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Baztertu"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ez erakutsi berriro"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Jakinarazpen horiek ezin dira aldatu."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Deien jakinarazpenak ezin dira aldatu."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Gailu tolesgarria zabaltzen"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Gailu tolesgarria biratzen"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Aurreko pantaila piztuta dago"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Lerratu hau barneko pantaila erabiltzeko"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"tolestuta"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"tolestu gabe"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-eu/tiles_states_strings.xml b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
index 5d4672f..62bbc27 100644
--- a/packages/SystemUI/res/values-eu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desaktibatuta"</item>
     <item msgid="5908720590832378783">"Aktibatuta"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 800bf78..c9392e3 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -125,7 +125,7 @@
     <string name="screenrecord_continue" msgid="4055347133700593164">"شروع"</string>
     <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"درحال ضبط صفحه‌نمایش"</string>
     <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"درحال ضبط صفحه‌نمایش و صدا"</string>
-    <string name="screenrecord_taps_label" msgid="1595690528298857649">"نمایش قسمت‌های لمس‌شده روی صفحه‌نمایش"</string>
+    <string name="screenrecord_taps_label" msgid="1595690528298857649">"نمایش نقاط لمس روی صفحه‌نمایش"</string>
     <string name="screenrecord_stop_label" msgid="72699670052087989">"متوقف کردن"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"هم‌رسانی"</string>
     <string name="screenrecord_save_title" msgid="1886652605520893850">"قطعه ضبط‌شده از صفحه‌نمایش ذخیره شد"</string>
@@ -133,7 +133,7 @@
     <string name="screenrecord_save_error" msgid="5862648532560118815">"خطا در ذخیره‌سازی ضبط صفحه‌نمایش"</string>
     <string name="screenrecord_start_error" msgid="2200660692479682368">"خطا هنگام شروع ضبط صفحه‌نمایش"</string>
     <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ضبط متوقف شود؟"</string>
-    <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"اکنون درحال ضبط کل صفحه‌نمایشتان هستید"</string>
+    <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"اکنون درحال ضبط کل صفحه‌نمایش هستید"</string>
     <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"اکنون درحال ضبط <xliff:g id="APP_NAME">%1$s</xliff:g> هستید"</string>
     <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"توقف ضبط"</string>
     <string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"درحال هم‌رسانی صفحه"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"لغو انتخاب ابزاره"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"کاهش ارتفاع"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"افزایش ارتفاع"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"نمایش بعدی"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"نمایش قبلی"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ابزاره‌های صفحه قفل"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"برای باز کردن برنامه بااستفاده از ابزاره، باید هویت خودتان را به‌تأیید برسانید. همچنین، به‌خاطر داشته باشید که همه می‌توانند آن‌ها را مشاهده کنند، حتی وقتی رایانه لوحی‌تان قفل است. برخی‌از ابزاره‌ها ممکن است برای صفحه قفل درنظر گرفته نشده باشند و ممکن است اضافه کردن آن‌ها در اینجا ناامن باشد."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"متوجهم"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"در حین شارژ، به ابزاره‌ها و محافظ‌های صفحه‌نمایش دلخواهتان دسترسی داشته باشید."</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"بیایید شروع کنیم"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"نمایش محافظ‌های صفحه‌نمایش دلخواه درحین شارژ"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تعویض کاربر"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"منوی پایین‌پر"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"همه برنامه‌ها و داده‌های این جلسه حذف خواهد شد."</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"مهمان گرامی، بازگشتتان را خوش آمد می‌گوییم!"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> از ویژگی‌های مکالمه پشتیبانی نمی‌کند"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"بازخورد"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"بستن"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"دیگر نشان داده نشود"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"این اعلان‌ها قابل اصلاح نیستند."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"این اعلان‌ها قابل‌اصلاح نیستند."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"نمی‌توانید این گروه اعلان‌ها را در اینجا پیکربندی کنید"</string>
diff --git a/packages/SystemUI/res/values-fa/tiles_states_strings.xml b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
index 1f9d6c6..edc2d41 100644
--- a/packages/SystemUI/res/values-fa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"خاموش"</item>
     <item msgid="5908720590832378783">"روشن"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index fdf18a3..96162b2 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -536,6 +536,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"poista widgetin valinta"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Vähennä korkeutta"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Lisää korkeutta"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Näytä seuraava"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Näytä edellinen"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lukitusnäytön widgetit"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Jos haluat avata sovelluksen käyttämällä widgetiä, sinun täytyy vahvistaa henkilöllisyytesi. Muista myös, että widgetit näkyvät kaikille, vaikka tabletti olisi lukittuna. Jotkin widgetit on ehkä tarkoitettu lukitusnäytölle, ja niiden lisääminen tänne ei välttämättä ole turvallista."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selvä"</string>
@@ -808,7 +810,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei tue keskusteluominaisuuksia"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Palaute"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Hylkää"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Älä näytä uudelleen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Näitä ilmoituksia ei voi muokata"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Puheluilmoituksia ei voi muokata."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
@@ -1396,8 +1403,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Taitettava laite taitetaan"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Taitettava laite käännetään ympäri"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Etunäyttö päällä"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Liu\'uta käyttääksesi sisäistä näyttöä"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"taitettu"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"taittamaton"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-fi/tiles_states_strings.xml b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
index 96750ef..6b1a8ed 100644
--- a/packages/SystemUI/res/values-fi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Pois päältä"</item>
     <item msgid="5908720590832378783">"Päällä"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index dde9b64..8fd2ed2 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"désélectionner le widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Diminuer la hauteur"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Augmenter la hauteur"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Afficher le suivant"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Afficher le précédent"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets de l\'écran de verrouillage"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pour ouvrir une appli à l\'aide d\'un widget, vous devrez confirmer votre identité. En outre, gardez à l\'esprit que tout le monde peut voir les widgets, même lorsque votre tablette est verrouillée. Certains widgets n\'ont peut-être pas été conçus pour votre écran de verrouillage, et il pourrait être dangereux de les ajouter ici."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne prend pas en charge les fonctionnalités de conversation"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Commentaires"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Fermer"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne plus afficher"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ces notifications ne peuvent pas être modifiées"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notifications d\'appel ne peuvent pas être modifiées."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ce groupe de notifications ne peut pas être configuré ici"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Appareil pliable en cours de dépliage"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Appareil pliable en train d\'être retourné"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Écran avant activé"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Faites glisser pour utiliser l\'écran intérieur"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plié"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"déplié"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
index ffacde2..4734d86 100644
--- a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Désactivée"</item>
     <item msgid="5908720590832378783">"Activée"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 53dbfea..89002d4 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"désélectionner le widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Diminuer la hauteur"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Augmenter la hauteur"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Afficher le suivant"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Afficher le précédent"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets pour l\'écran de verrouillage"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pour ouvrir une appli à l\'aide d\'un widget, vous devez confirmer qu\'il s\'agit bien de vous. N\'oubliez pas non plus que tout le monde peut voir vos widgets, même lorsque votre tablette est verrouillée. Certains d\'entre eux n\'ont pas été conçus pour l\'écran de verrouillage et les ajouter à cet endroit peut s\'avérer dangereux."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas compatible avec les fonctionnalités de conversation"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Commentaires"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorer"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne plus afficher"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossible de modifier ces notifications."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Impossible de modifier les notifications d\'appel."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Appareil pliable qui est déplié"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Appareil pliable qui est retourné"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Écran avant activé"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Faites glisser pour utiliser l\'écran intérieur"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plié"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"déplié"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-fr/tiles_states_strings.xml b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
index ffceb0d..cefc9a2 100644
--- a/packages/SystemUI/res/values-fr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Désactivé"</item>
     <item msgid="5908720590832378783">"Activé"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 03ec2b0..4e801ee 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -125,7 +125,7 @@
     <string name="screenrecord_continue" msgid="4055347133700593164">"Iniciar"</string>
     <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Gravando pantalla"</string>
     <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Gravando pantalla e audio"</string>
-    <string name="screenrecord_taps_label" msgid="1595690528298857649">"Mostrar a localización dos toques na pantalla"</string>
+    <string name="screenrecord_taps_label" msgid="1595690528298857649">"Mostrar localización dos toques na pantalla"</string>
     <string name="screenrecord_stop_label" msgid="72699670052087989">"Deter"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"Compartir"</string>
     <string name="screenrecord_save_title" msgid="1886652605520893850">"Gravación da pantalla gardada"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"anular a selección do widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Reducir a altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar a altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar seguinte"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets da pantalla de bloqueo"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir unha aplicación mediante un widget, tes que verificar a túa identidade. Ten en conta que pode velos calquera persoa, mesmo coa tableta bloqueada. Pode ser que algúns widgets non estean pensados para a túa pantalla de bloqueo, polo que talvez non sexa seguro engadilos aquí."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Comentarios"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Pechar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Non volver mostrar"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificacións non se poden modificar."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"As notificacións de chamadas non se poden modificar."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquí non se pode configurar este grupo de notificacións"</string>
@@ -1349,7 +1356,7 @@
     <string name="clipboard_image_preview" msgid="2156475174343538128">"Vista previa da imaxe"</string>
     <string name="clipboard_edit" msgid="4500155216174011640">"editar"</string>
     <string name="add" msgid="81036585205287996">"Engadir"</string>
-    <string name="manage_users" msgid="1823875311934643849">"Usuarios"</string>
+    <string name="manage_users" msgid="1823875311934643849">"Xestionar usuarios"</string>
     <string name="drag_split_not_supported" msgid="7173481676120546121">"Esta notificación non pode arrastrarse á pantalla dividida"</string>
     <string name="dream_overlay_location_active" msgid="6484763493158166618">"Localización activa"</string>
     <string name="dream_overlay_status_bar_wifi_off" msgid="4497069245055003582">"A wifi non está dispoñible"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo pregable abríndose"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo pregable xirando"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Activouse a pantalla dianteira"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Pasa o dedo para usar a pantalla interior"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"dispositivo pregado"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"dispositivo despregado"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-gl/tiles_states_strings.xml b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
index 7889983..bfd6a12 100644
--- a/packages/SystemUI/res/values-gl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Opción desactivada"</item>
     <item msgid="5908720590832378783">"Opción activada"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 0c27927..08e1398 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"વિજેટ નાપસંદ કરો"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ઊંચાઈ ઘટાડો"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ઊંચાઈ વધારો"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"આગલું બતાવો"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"પાછલું બતાવો"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"લૉક સ્ક્રીન વિજેટ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"વિજેટનો ઉપયોગ કરીને ઍપ ખોલવા માટે, તમારે એ ચકાસણી કરવાની જરૂર રહેશે કે આ તમે જ છો. તે ઉપરાંત, ધ્યાનમાં રાખો કે તમારું ટૅબ્લેટ લૉક કરેલું હોય તો પણ કોઈપણ વ્યક્તિ તેમને જોઈ શકે છે. અમુક વિજેટ કદાચ તમારી લૉક સ્ક્રીન માટે બનાવવામાં આવ્યા ન હોઈ શકે છે અને તેમને અહીં ઉમેરવાનું અસલામત હોઈ શકે છે."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"સમજાઈ ગયું"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> વાતચીતની સુવિધાઓને સપોર્ટ આપતી નથી"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"પ્રતિસાદ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"છોડી દો"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ફરી બતાવશો નહીં"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"કૉલના નોટિફિકેશનમાં કોઈ ફેરફાર કરી શકાતો નથી."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string>
diff --git a/packages/SystemUI/res/values-gu/tiles_states_strings.xml b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
index 17b47cc..c6e204d 100644
--- a/packages/SystemUI/res/values-gu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"બંધ છે"</item>
     <item msgid="5908720590832378783">"ચાલુ"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index f2daffe..d781585 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"विजेट से चुने हुए का निशान हटाएं"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ऊंचाई घटाएं"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ऊंचाई बढ़ाएं"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"अगला दिखाएं"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"पिछला दिखाएं"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्क्रीन विजेट"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"किसी विजेट से कोई ऐप्लिकेशन खोलने के लिए, आपको अपनी पहचान की पुष्टि करनी होगी. ध्यान रखें कि आपके टैबलेट के लॉक होने पर भी, कोई व्यक्ति विजेट देख सकता है. ऐसा हो सकता है कि कुछ विजेट, लॉक स्क्रीन पर दिखाने के लिए न बने हों. इन्हें लॉक स्क्रीन पर जोड़ना असुरक्षित हो सकता है."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ठीक है"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"चार्जिंग के दौरान, अपने पसंदीदा विजेट और स्क्रीन सेवर को ऐक्सेस करें."</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"आइए शुरू करें"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"चार्ज करते समय अपने पसंदीदा स्क्रीन सेवर दिखाएं"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"दूसरे खाते पर स्विच करें"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेन्यू"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"इस सेशन के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"मेहमान, आपका फिर से स्वागत है!"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"सुझाव/राय दें या शिकायत करें"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"खारिज करें"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"फिर से न दिखाएं"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ये सूचनाएं नहीं बदली जा सकती हैं."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉल से जुड़ी सूचनाओं को ब्लॉक नहीं किया जा सकता."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string>
diff --git a/packages/SystemUI/res/values-hi/tiles_states_strings.xml b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
index 69a4e4d..65046cc 100644
--- a/packages/SystemUI/res/values-hi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"बंद है"</item>
     <item msgid="5908720590832378783">"चालू है"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 5222e80..3a985a9 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"poništavanje odabira widgeta"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Smanjenje visine"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Povećanje visine"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Prikazivanje sljedećeg"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Prikazivanje prethodnog"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgeti na zaključanom zaslonu"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da biste otvorili aplikaciju pomoću widgeta, trebate potvrditi da ste to vi. Također napominjemo da ih svatko može vidjeti, čak i ako je vaš tablet zaključan. Neki widgeti možda nisu namijenjeni za zaključani zaslon, pa ih možda nije sigurno dodati ovdje."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Shvaćam"</string>
@@ -731,7 +733,7 @@
     <string name="volume_panel_hint_muted" msgid="1124844870181285320">"isključen zvuk"</string>
     <string name="volume_panel_hint_vibrate" msgid="4136223145435914132">"vibriranje"</string>
     <string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> se reproducira na"</string>
-    <string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk će se reproducirati na"</string>
+    <string name="media_output_title_without_playing" msgid="3825663683169305013">"Za reprodukciju zvuka koristi se"</string>
     <string name="media_output_title_ongoing_call" msgid="208426888064112006">"Pozivanje na uređaju"</string>
     <string name="system_ui_tuner" msgid="1471348823289954729">"Ugađanje korisničkog sučelja sustava"</string>
     <string name="status_bar" msgid="4357390266055077437">"Traka statusa"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava značajke razgovora"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Te se obavijesti ne mogu izmijeniti."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obavijesti o pozivima ne mogu se izmijeniti."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
diff --git a/packages/SystemUI/res/values-hr/tiles_states_strings.xml b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
index 2401e4a..3b99019 100644
--- a/packages/SystemUI/res/values-hr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Isključeno"</item>
     <item msgid="5908720590832378783">"Uključeno"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 109c52f..9b17567 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"modul kijelölésének megszüntetése"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Magasság csökkentése"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Magasság növelése"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Következő mutatása"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Előző mutatása"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"A lezárási képernyő moduljai"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ha modul használatával szeretne megnyitni egy alkalmazást, igazolnia kell a személyazonosságát. Ne felejtse továbbá, hogy bárki megtekintheti a modulokat, még akkor is, amikor zárolva van a táblagép. Előfordulhat, hogy bizonyos modulokat nem a lezárási képernyőn való használatra terveztek, ezért nem biztonságos a hozzáadásuk."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Értem"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem támogatja a beszélgetési funkciókat"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Visszajelzés"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Elvetés"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne jelenjen meg újra"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ezeket az értesítéseket nem lehet módosítani."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"A hívásértesítéseket nem lehet módosítani."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Összehajtható eszköz kihajtása"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Összehajtható eszköz körbeforgatása"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Előlapi képernyő bekapcsolva"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Csúsztatás a belső képernyő használatához"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"összehajtva"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kihajtva"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-hu/tiles_states_strings.xml b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
index 8911fe9..06bf4f2 100644
--- a/packages/SystemUI/res/values-hu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Ki"</item>
     <item msgid="5908720590832378783">"Be"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 914d2cd..2aa72cc 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"չեղարկել վիջեթի ընտրությունը"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Նվազեցնել բարձրությունը"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Ավելացնել բարձրությունը"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Ցույց տալ հաջորդը"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Ցույց տալ նախորդը"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Կողպէկրանի վիջեթներ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Վիջեթի միջոցով հավելված բացելու համար դուք պետք է հաստատեք ձեր ինքնությունը։ Նաև նկատի ունեցեք, որ ցանկացած ոք կարող է դիտել վիջեթները, նույնիսկ երբ ձեր պլանշետը կողպված է։ Որոշ վիջեթներ կարող են նախատեսված չլինել ձեր կողպէկրանի համար, և այստեղ դրանց ավելացնելը կարող է վտանգավոր լինել։"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Եղավ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը զրույցի գործառույթներ չի աջակցում"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Կարծիք հայտնել"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Փակել"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Այլևս ցույց չտալ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Այս ծանուցումները չեն կարող փոփոխվել:"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Զանգերի մասին ծանուցումները հնարավոր չէ փոփոխել։"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ծալովի սարք՝ բացված վիճակում"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Ծալովի սարք՝ շրջված վիճակում"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Առջևի էկրանը միացված է"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Սահեցրեք՝ ներքին էկրանն օգտագործելու համար"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ծալված"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"բացված"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-hy/tiles_states_strings.xml b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
index f2b09e0..dc8bbb1 100644
--- a/packages/SystemUI/res/values-hy/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Անջատված է"</item>
     <item msgid="5908720590832378783">"Միացված է"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 62e3476..c57f40f 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -250,8 +250,8 @@
     <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Persentase baterai tidak diketahui."</string>
     <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Terhubung ke <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
     <string name="accessibility_cast_name" msgid="7344437925388773685">"Terhubung ke <xliff:g id="CAST">%s</xliff:g>."</string>
-    <string name="accessibility_expand_group" msgid="521237935987978624">"Meluaskan grup."</string>
-    <string name="accessibility_open_application" msgid="1749126077501259712">"Membuka aplikasi."</string>
+    <string name="accessibility_expand_group" msgid="521237935987978624">"Luaskan grup."</string>
+    <string name="accessibility_open_application" msgid="1749126077501259712">"Buka aplikasi."</string>
     <string name="accessibility_not_connected" msgid="4061305616351042142">"Tidak terhubung."</string>
     <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
     <string name="cell_data_off" msgid="4886198950247099526">"Nonaktif"</string>
@@ -345,7 +345,7 @@
     <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"Jaringan tidak tersedia"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Tidak ada jaringan Wi-Fi yang tersedia"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"Mengaktifkan…"</string>
-    <string name="quick_settings_cast_title" msgid="3033553249449938182">"Cast"</string>
+    <string name="quick_settings_cast_title" msgid="3033553249449938182">"Transmisikan"</string>
     <string name="quick_settings_casting" msgid="1435880708719268055">"Melakukan transmisi"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Perangkat tanpa nama"</string>
     <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"Perangkat tak tersedia"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"batalkan pilihan widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Kurangi tinggi"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Tambah tinggi"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Tampilkan berikutnya"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Tampilkan sebelumnya"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget layar kunci"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Untuk membuka aplikasi menggunakan widget, Anda perlu memverifikasi diri Anda. Selain itu, harap ingat bahwa siapa saja dapat melihatnya, bahkan saat tablet Anda terkunci. Beberapa widget mungkin tidak dirancang untuk layar kunci Anda dan mungkin tidak aman untuk ditambahkan di sini."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Oke"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Akses widget dan screensaver favorit Anda saat mengisi daya."</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Mulai"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Tampilkan screensaver favorit saat mengisi daya"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ganti pengguna"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pulldown"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua aplikasi dan data dalam sesi ini akan dihapus."</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"Selamat datang kembali, tamu!"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak mendukung fitur percakapan"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Masukan"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Tutup"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Jangan tampilkan lagi"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Notifikasi ini tidak dapat diubah."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notifikasi panggilan tidak dapat diubah."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Perangkat foldable sedang dibentangkan"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Perangkat foldable sedang dibalik"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Layar depan diaktifkan"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Geser untuk menggunakan layar dalam"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ditutup"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"dibuka"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-in/tiles_states_strings.xml b/packages/SystemUI/res/values-in/tiles_states_strings.xml
index 7462ff6..b48a587 100644
--- a/packages/SystemUI/res/values-in/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-in/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Nonaktif"</item>
     <item msgid="5908720590832378783">"Aktif"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 4e486d0..ec284c2 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"afturkalla val á græju"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Lækka"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Hækka"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Sýna næsta"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Sýna fyrra"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Græjur fyrir lásskjá"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Þú þarft að staðfesta að þetta sért þú til að geta opnað forrit með græju. Hafðu einnig í huga að hver sem er getur skoðað þær, jafnvel þótt spjaldtölvan sé læst. Sumar græjur eru hugsanlega ekki ætlaðar fyrir lásskjá og því gæti verið óöruggt að bæta þeim við hér."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ég skil"</string>
@@ -731,7 +733,7 @@
     <string name="volume_panel_hint_muted" msgid="1124844870181285320">"þaggað"</string>
     <string name="volume_panel_hint_vibrate" msgid="4136223145435914132">"titringur"</string>
     <string name="media_output_label_title" msgid="872824698593182505">"Í spilun í <xliff:g id="LABEL">%s</xliff:g>"</string>
-    <string name="media_output_title_without_playing" msgid="3825663683169305013">"Hljóð heldur áfram að spilast"</string>
+    <string name="media_output_title_without_playing" msgid="3825663683169305013">"Hljóð heldur áfram að spilast í"</string>
     <string name="media_output_title_ongoing_call" msgid="208426888064112006">"Símtal í gangi"</string>
     <string name="system_ui_tuner" msgid="1471348823289954729">"Fínstillingar kerfisviðmóts"</string>
     <string name="status_bar" msgid="4357390266055077437">"Stöðustika"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> styður ekki samtalseiginleika"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Ábendingar"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Loka"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ekki sýna aftur"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ekki er hægt að breyta þessum tilkynningum."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Ekki er hægt að breyta tilkynningum um símtöl."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Samanbrjótanlegt tæki opnað"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Samanbrjótanlegu tæki snúið við"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Kveikt á fremri skjá"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Renndu til að opna innri skjá"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"samanbrotið"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"opið"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-is/tiles_states_strings.xml b/packages/SystemUI/res/values-is/tiles_states_strings.xml
index df3bcf9..92f07b6 100644
--- a/packages/SystemUI/res/values-is/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-is/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Slökkt"</item>
     <item msgid="5908720590832378783">"Kveikt"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 786254b..2391fe2 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"deseleziona widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Riduci altezza"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumenta altezza"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostra successivo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostra precedente"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget della schermata di blocco"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per aprire un\'app utilizzando un widget, dovrai verificare la tua identità. Inoltre tieni presente che chiunque può vederlo, anche quando il tablet è bloccato. Alcuni widget potrebbero non essere stati progettati per la schermata di blocco e potrebbe non essere sicuro aggiungerli qui."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Non mostrare più"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossibile modificare queste notifiche."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Impossibile modificare gli avvisi di chiamata."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Qui non è possibile configurare questo gruppo di notifiche"</string>
@@ -1396,7 +1403,7 @@
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Schermo frontale attivato"</string>
     <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Scorri per usare lo schermo interno"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"Piegato"</string>
-    <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"Non piegato"</string>
+    <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"Aperto"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
     <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Batteria dello stilo: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connetti lo stilo a un caricabatterie"</string>
diff --git a/packages/SystemUI/res/values-it/tiles_states_strings.xml b/packages/SystemUI/res/values-it/tiles_states_strings.xml
index 9d26859..7e11d0b 100644
--- a/packages/SystemUI/res/values-it/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-it/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Off"</item>
     <item msgid="5908720590832378783">"On"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 5000885..0d7a620 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ביטול הבחירה בווידג\'ט"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"הקטנת הגובה"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"הגדלת הגובה"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"לפריט הבא"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"לפריט הקודם"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ווידג\'טים במסך הנעילה"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"כדי לפתוח אפליקציה באמצעות ווידג\'ט, עליך לאמת את זהותך. בנוסף, כדאי לזכור שכל אחד יכול לראות את הווידג\'טים גם כשהטאבלט שלך נעול. יכול להיות שחלק מהווידג\'טים לא נועדו למסך הנעילה ושלא בטוח להוסיף אותם לכאן."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"הבנתי"</string>
@@ -804,10 +806,14 @@
     <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה צפה ומפריעה במצב \'נא לא להפריע\'"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"בעדיפות גבוהה"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא תומכת בתכונות השיחה"</string>
-    <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
-    <skip />
+    <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"משוב"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"סגירה"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"לא להציג את זה שוב"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"לא ניתן לשנות את ההתראות האלה."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"לא ניתן לשנות את התראות השיחה."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
@@ -1395,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"מכשיר מתקפל עובר למצב לא מקופל"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"מכשיר מתקפל עובר למצב מהופך"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"המסך הקדמי מופעל"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"כדי להשתמש במסך הפנימי, צריך להסיט"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"מצב מקופל"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"מצב לא מקופל"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"‏%1$s‏ / %2$s"</string>
diff --git a/packages/SystemUI/res/values-iw/tiles_states_strings.xml b/packages/SystemUI/res/values-iw/tiles_states_strings.xml
index 1a5b8fb..2f8ec0a 100644
--- a/packages/SystemUI/res/values-iw/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-iw/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"מושבת"</item>
     <item msgid="5908720590832378783">"מצב פעיל"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index fd98fe8..7867633 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ウィジェットの選択を解除する"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"高さを低くする"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"高さを高くする"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"次を表示"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"前を表示"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ロック画面ウィジェット"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ウィジェットを使用してアプリを起動するには、本人確認が必要です。タブレットがロックされた状態でも他のユーザーにウィジェットが表示されますので、注意してください。一部のウィジェットについてはロック画面での使用を想定していないため、ロック画面への追加は危険な場合があります。"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>は会話機能に対応していません"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"フィードバック"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"閉じる"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"次回から表示しない"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"これらの通知は変更できません。"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"着信通知は変更できません。"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"このグループの通知はここでは設定できません"</string>
diff --git a/packages/SystemUI/res/values-ja/tiles_states_strings.xml b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
index 81c10e7..1282f57 100644
--- a/packages/SystemUI/res/values-ja/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"OFF"</item>
     <item msgid="5908720590832378783">"ON"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 18522da..b599220 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ვიჯეტის არჩევის გაუქმება"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"სიმაღლის შემცირება"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"სიმაღლის გაზრდა"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"შემდეგის ჩვენება"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"წინას ჩვენება"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"დაბლოკილი ეკრანის ვიჯეტები"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"უნდა დაადასტუროთ თქვენი ვინაობა, რათა გახსნათ აპი ვიჯეტის გამოყენებით. გაითვალისწინეთ, რომ ნებისმიერს შეუძლია მათი ნახვა, მაშინაც კი, როცა ტაბლეტი დაბლოკილია. ზოგი ვიჯეტი შეიძლება არ იყოს გათვლილი თქვენი დაბლოკილი ეკრანისთვის და მათი აქ დამატება შეიძლება სახიფათო იყოს."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"გასაგებია"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"გამოხმაურება"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"დახურვა"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"აღარ მაჩვენო"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ზარის შეტყობინებების შეცვლა შეუძლებელია."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
diff --git a/packages/SystemUI/res/values-ka/tiles_states_strings.xml b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
index 6e62ed4e..81fc54d 100644
--- a/packages/SystemUI/res/values-ka/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"გამორთული"</item>
     <item msgid="5908720590832378783">"ჩართული"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 83af7c8..bf12aca 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -114,7 +114,7 @@
     <string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="4882406311415082016">"Осы экранды жазу"</string>
     <string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="4169494703993148253">"%s экранын жазу"</string>
     <string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Бүкіл экранды жазған кезде, онда көрінетін барлық нәрсе жазылады. Сондықтан құпия сөздерді, төлем туралы мәліметті, хабарларды немесе басқа құпия ақпаратты енгізген кезде сақ болыңыз."</string>
-    <string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Қолданбаны жазған кезде, онда көрінетін не ойнатылатын барлық нәрсе жазылады. Сондықтан құпия сөздерді, төлем туралы мәліметті, хабарларды немесе басқа құпия ақпаратты енгізген кезде сақ болыңыз."</string>
+    <string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Қолданбаны жазған кезде, онда көрінетін не ойнатылатын барлық нәрсе жазылады. Сондықтан құпия сөздерге, төлем туралы мәліметке, хабарларға, фотосуреттерге, дыбыстар мен бейнелерге сақ болыңыз."</string>
     <string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Экранды жазу"</string>
     <string name="screenrecord_app_selector_title" msgid="3854492366333954736">"Жазатын қолданба экранын таңдау"</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Аудио жазу"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"виджетті таңдаудан алу"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Биіктігін төмендету"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Биіктігін арттыру"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Келесіні көрсету"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Алдыңғыны көрсету"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Құлып экранының виджеттері"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Қолданбаны виджет көмегімен ашу үшін жеке басыңызды растауыңыз керек. Сондай-ақ басқалар оларды планшетіңіз құлыптаулы кезде де көре алатынын ескеріңіз. Кейбір виджеттер құлып экранына арналмаған болады, сондықтан оларды мұнда қосу қауіпсіз болмауы мүмкін."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түсінікті"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгіме функцияларын қолдамайды."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Пікір"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Жабу"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Қайта көрсетілмесін"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Бұл хабарландыруларды өзгерту мүмкін емес."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Қоңырау туралы хабарландыруларды өзгерту мүмкін емес."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Бүктемелі құрылғы ашылып жатыр."</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Бүктемелі құрылғы аударылып жатыр."</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Алдыңғы экран қосылды."</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Ішкі экранды пайдалану үшін жылжытыңыз."</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"жабық"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ашық"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-kk/tiles_states_strings.xml b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
index 66deff6..32562c6 100644
--- a/packages/SystemUI/res/values-kk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Өшірулі"</item>
     <item msgid="5908720590832378783">"Қосулы"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 569ecd3..e12fd13 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ដក​ការ​ជ្រើសរើសធាតុ​ក្រាហ្វិក"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"បន្ថយកម្ពស់"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"បង្កើនកម្ពស់"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"បង្ហាញ​កម្មវិធីចាក់មេឌៀបន្ទាប់"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"បង្ហាញ​កម្មវិធីចាក់មេឌៀមុន"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ធាតុ​ក្រាហ្វិកលើអេក្រង់ចាក់សោ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ដើម្បីបើកកម្មវិធីដោយប្រើធាតុ​ក្រាហ្វិក អ្នកនឹងត្រូវផ្ទៀងផ្ទាត់ថាជាអ្នក។ ទន្ទឹមនឹងនេះ សូមចងចាំថា នរណាក៏អាចមើលធាតុក្រាហ្វិកបាន សូម្បីពេលថេប្លេតរបស់អ្នកជាប់សោក៏ដោយ។ ធាតុ​ក្រាហ្វិកមួយចំនួនប្រហែលមិនត្រូវបានរចនាឡើងសម្រាប់អេក្រង់ចាក់សោរបស់អ្នកទេ និងមិនមានសុវត្ថិភាពឡើយ បើបញ្ចូលទៅទីនេះ។"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"យល់ហើយ"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ចូលប្រើប្រាស់ធាតុ​ក្រាហ្វិក និងធាតុរក្សាអេក្រង់ដែលអ្នកពេញចិត្តពេលសាកថ្ម។"</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ចាប់ផ្ដើម"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"បង្ហាញធាតុ​រក្សា​អេក្រង់សំណព្វរបស់អ្នក ពេលកំពុងសាកថ្ម"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរ​អ្នក​ប្រើ"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរ​អ្នក​ប្រើប្រាស់"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ម៉ឺនុយ​ទាញចុះ"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"កម្មវិធី និងទិន្នន័យ​ទាំងអស់​ក្នុង​វគ្គ​នេះ​នឹង​ត្រូវ​លុប។"</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"សូម​ស្វាគមន៍​ការ​ត្រឡប់​មកវិញ, ភ្ញៀវ!"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនអាចប្រើ​មុខងារ​សន្ទនា​បានទេ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"មតិកែលម្អ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ច្រានចោល"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"កុំបង្ហាញម្ដងទៀត"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"មិនអាច​កែប្រែ​ការជូនដំណឹង​ទាំងនេះ​បានទេ។"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"មិនអាច​កែប្រែ​ការជូនដំណឹងអំពីការហៅទូរសព្ទបានទេ។"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​ក្រុមការជូនដំណឹងនេះ​នៅទីនេះ​បានទេ"</string>
diff --git a/packages/SystemUI/res/values-km/tiles_states_strings.xml b/packages/SystemUI/res/values-km/tiles_states_strings.xml
index 71b12ca..0e47250 100644
--- a/packages/SystemUI/res/values-km/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-km/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"បិទ"</item>
     <item msgid="5908720590832378783">"បើក"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 5bcd986..3bb4e4d 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ವಿಜೆಟ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಡಿ"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ಎತ್ತರವನ್ನು ಕಡಿಮೆ ಮಾಡಿ"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ಎತ್ತರವನ್ನು ಹೆಚ್ಚಿಸಿ"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"ಮುಂದಿನದನ್ನು ತೋರಿಸಿ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ಹಿಂದಿನದನ್ನು ತೋರಿಸಿ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ಲಾಕ್ ಸ್ಕ್ರೀನ್ ವಿಜೆಟ್‌ಗಳು"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ವಿಜೆಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಆ್ಯಪ್ ತೆರೆಯಲು, ಇದು ನೀವೇ ಎಂದು ನೀವು ದೃಢೀಕರಿಸಬೇಕಾಗುತ್ತದೆ. ಅಲ್ಲದೆ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಲಾಕ್ ಆಗಿದ್ದರೂ ಸಹ ಯಾರಾದರೂ ಅವುಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. ಕೆಲವು ವಿಜೆಟ್‌ಗಳು ನಿಮ್ಮ ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ಗಾಗಿ ಉದ್ದೇಶಿಸದೇ ಇರಬಹುದು ಮತ್ತು ಇಲ್ಲಿ ಸೇರಿಸುವುದು ಸುರಕ್ಷಿತವಲ್ಲದಿರಬಹುದು."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ಅರ್ಥವಾಯಿತು"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"ಸಂವಾದ ಫೀಚರ್‌ಗಳನ್ನು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ಫೀಡ್‌ಬ್ಯಾಕ್"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ವಜಾಗೊಳಿಸಿ"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ಕರೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್‌ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string>
diff --git a/packages/SystemUI/res/values-kn/tiles_states_strings.xml b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
index 49c688a..b3543f9 100644
--- a/packages/SystemUI/res/values-kn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ಆಫ್ ಆಗಿದೆ"</item>
     <item msgid="5908720590832378783">"ಆನ್ ಆಗಿದೆ"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index fd2c62e..33f54b6 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"위젯 선택 해제"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"높이 줄이기"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"높이 늘리기"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"다음 표시"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"이전 표시"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"잠금 화면 위젯"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"위젯을 사용하여 앱을 열려면 본인 인증을 해야 합니다. 또한 태블릿이 잠겨 있더라도 누구나 볼 수 있다는 점을 유의해야 합니다. 일부 위젯은 잠금 화면에 적합하지 않고 여기에 추가하기에 안전하지 않을 수 있습니다."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"확인"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"의견"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"닫기"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"다시 표시하지 않음"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"이 알림은 수정할 수 없습니다."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"전화 알림은 수정할 수 없습니다."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"폴더블 기기를 펼치는 모습"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"폴더블 기기를 뒤집는 모습"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"전면 화면 켜짐"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"슬라이드하여 내부 화면 사용"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"접은 상태"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"펼친 상태"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-ko/tiles_states_strings.xml b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
index 002d38e..c512435 100644
--- a/packages/SystemUI/res/values-ko/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"사용 안함"</item>
     <item msgid="5908720590832378783">"사용"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 1916cbc..e764bad 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"виджетти тандоодон чыгаруу"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Бийиктигин азайтуу"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Бийиктигин көбөйтүү"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Кийинкини көрсөтүү"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Мурункуну көрсөтүү"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Кулпуланган экрандагы виджеттер"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Колдонмону виджет аркылуу ачуу үчүн өзүңүздү ырасташыңыз керек. Алар кулпуланган планшетиңизде да көрүнүп турат. Кээ бир виджеттерди кулпуланган экранда колдоно албайсыз, андыктан аларды ал жерге кошпой эле койгонуңуз оң."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түшүндүм"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунда оозеки сүйлөшкөнгө болбойт"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Пикир билдирүү"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Жабуу"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Экинчи көрсөтүлбөсүн"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Бул билдирмелерди өзгөртүүгө болбойт."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Чалуу билдирмелерин өзгөртүүгө болбойт."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ачылып турган бүктөлмө түзмөк"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Оодарылып жаткан бүктөлмө түзмөк"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Маңдайкы экран күйгүзүлдү"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Ички экранды колдонуу үчүн экранды сүрүп коюңуз"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"бүктөлгөн"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ачылган"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-ky/tiles_states_strings.xml b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
index 4834dbc..47e36da 100644
--- a/packages/SystemUI/res/values-ky/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Өчүк"</item>
     <item msgid="5908720590832378783">"Күйүк"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index f61186d..3236b2e2 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ຍົກເລີກການເລືອກວິດເຈັດ"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ຫຼຸດຄວາມສູງ"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ເພີ່ມຄວາມສູງ"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"ສະແດງເພງຖັດໄປ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ສະແດງເພງກ່ອນໜ້າ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ວິດເຈັດໃນໜ້າຈໍລັອກ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ເພື່ອເປີດແອັບໂດຍໃຊ້ວິດເຈັດ, ທ່ານຈະຕ້ອງຢັ້ງຢືນວ່າແມ່ນທ່ານ. ນອກຈາກນັ້ນ, ກະລຸນາຮັບຊາບວ່າທຸກຄົນສາມາດເບິ່ງຂໍ້ມູນດັ່ງກ່າວໄດ້, ເຖິງແມ່ນວ່າແທັບເລັດຂອງທ່ານຈະລັອກຢູ່ກໍຕາມ. ວິດເຈັດບາງຢ່າງອາດບໍ່ໄດ້ມີໄວ້ສຳລັບໜ້າຈໍລັອກຂອງທ່ານ ແລະ ອາດບໍ່ປອດໄພທີ່ຈະເພີ່ມໃສ່ບ່ອນນີ້."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ເຂົ້າໃຈແລ້ວ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບຄຸນສົມບັດການສົນທະນາ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ຄຳຕິຊົມ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ປິດໄວ້"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ບໍ່ຕ້ອງສະແດງອີກ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນການໂທໄດ້."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
diff --git a/packages/SystemUI/res/values-lo/tiles_states_strings.xml b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
index bc63895..71e084a 100644
--- a/packages/SystemUI/res/values-lo/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ປິດ"</item>
     <item msgid="5908720590832378783">"ເປີດ"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 88f9399..25208b0 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"atšaukti valdiklio pasirinkimą"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Sumažinti aukštį"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Padidinti aukštį"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Rodyti kitą mediją"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Rodyti ankstesnę mediją"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Užrakinimo ekrano valdikliai"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Kad galėtumėte atidaryti programą naudodami valdiklį, turėsite patvirtinti savo tapatybę. Be to, atminkite, kad bet kas gali peržiūrėti valdiklius net tada, kai planšetinis kompiuteris užrakintas. Kai kurie valdikliai gali būti neskirti jūsų užrakinimo ekranui ir gali būti nesaugu juos čia pridėti."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Supratau"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ nepalaiko pokalbių funkcijų"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Atsiliepimai"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Uždaryti"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Neberodyti"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Šių pranešimų keisti negalima."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Skambučių pranešimų keisti negalima."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Šios grupės pranešimai čia nekonfigūruojami"</string>
diff --git a/packages/SystemUI/res/values-lt/tiles_states_strings.xml b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
index 12f8b6c..893d6ae 100644
--- a/packages/SystemUI/res/values-lt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Išjungta"</item>
     <item msgid="5908720590832378783">"Įjungta"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index e0e38a1..bf1ef96 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -125,7 +125,7 @@
     <string name="screenrecord_continue" msgid="4055347133700593164">"Sākt"</string>
     <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Notiek ekrāna satura ierakstīšana."</string>
     <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Notiek ekrāna satura un audio ierakstīšana."</string>
-    <string name="screenrecord_taps_label" msgid="1595690528298857649">"Rādīt pieskārienus pie ekrāna"</string>
+    <string name="screenrecord_taps_label" msgid="1595690528298857649">"Rādīt pieskārienus ekrānam"</string>
     <string name="screenrecord_stop_label" msgid="72699670052087989">"Pārtraukt"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"Kopīgot"</string>
     <string name="screenrecord_save_title" msgid="1886652605520893850">"Ekrāna ieraksts ir saglabāts"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"noņemt logrīka atlasi"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Samazināt augstumu"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Palielināt augstumu"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Rādīt nākamo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Rādīt iepriekšējo"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Bloķēšanas ekrāna logrīki"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Lai atvērtu lietotni, izmantojot logrīku, jums būs jāapstiprina sava identitāte. Turklāt ņemiet vērā, ka ikviens var skatīt logrīkus, pat ja planšetdators ir bloķēts. Iespējams, daži logrīki nav paredzēti izmantošanai bloķēšanas ekrānā, un var nebūt droši tos šeit pievienot."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Labi"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g> netiek atbalstītas sarunu funkcijas."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Atsauksmes"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Nerādīt"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Vairs nerādīt"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Šos paziņojumus nevar modificēt."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Paziņojumus par zvaniem nevar modificēt."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Salokāma ierīce tiek atlocīta"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Salokāma ierīce tiek apgriezta"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Priekšējais ekrāns ir ieslēgts"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Velciet, lai izmantotu iekšējo ekrānu."</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"aizvērta"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"atvērta"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-lv/tiles_states_strings.xml b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
index 1494836..7329751 100644
--- a/packages/SystemUI/res/values-lv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Izslēgts"</item>
     <item msgid="5908720590832378783">"Ieslēgts"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 0a9ca89..e34d9d8 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"поништи го изборот на виџетот"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Намали ја висината"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Зголеми ја висината"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Прикажи следно"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Прикажи претходно"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виџети на заклучен екран"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите апликација со помош на виџет, ќе треба да потврдите дека сте вие. Покрај тоа, имајте предвид дека секој може да ги гледа виџетите, дури и кога вашиот таблет е заклучен. Некои виџети можеби не се наменети за вашиот заклучен екран, па можеби не е безбедно да се додадат овде."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Сфатив"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Повратни информации"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Отфрли"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Не прикажувај повторно"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Овие известувања не може да се изменат"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известувањата за повици не може да се изменат."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Оваа група известувања не може да се конфигурира тука"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Преклопувачки уред се отклопува"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Преклопувачки уред се врти"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Предниот екран е вклучен"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Лизгајте за да го користите внатрешниот екран"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворен"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворен"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-mk/tiles_states_strings.xml b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
index 17545c3..67baf7c 100644
--- a/packages/SystemUI/res/values-mk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Исклучено"</item>
     <item msgid="5908720590832378783">"Вклучено"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 8ef9b79..226822a 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"വിജറ്റ് തിരഞ്ഞെടുത്തത് മാറ്റുക"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ഉയരം കുറയ്‌ക്കുക"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ഉയരം കൂട്ടുക"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"അടുത്തത് കാണിക്കുക"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"മുമ്പത്തേത് കാണിക്കുക"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ലോക്ക് സ്‌ക്രീൻ വിജറ്റുകൾ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"വിജറ്റ് ഉപയോഗിച്ച് ഒരു ആപ്പ് തുറക്കാൻ, ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കേണ്ടതുണ്ട്. നിങ്ങളുടെ ടാബ്‌ലെറ്റ് ലോക്കായിരിക്കുമ്പോഴും എല്ലാവർക്കും അത് കാണാനാകുമെന്നതും ഓർക്കുക. ചില വിജറ്റുകൾ നിങ്ങളുടെ ലോക്ക് സ്‌ക്രീനിന് ഉള്ളതായിരിക്കില്ല, അവ ഇവിടെ ചേർക്കുന്നത് സുരക്ഷിതവുമായിരിക്കില്ല."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"മനസ്സിലായി"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"സംഭാഷണ ഫീച്ചറുകളെ <xliff:g id="APP_NAME">%1$s</xliff:g> പിന്തുണയ്‌ക്കുന്നില്ല"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ഫീഡ്ബാക്ക്"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"വീണ്ടും കാണിക്കരുത്"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"കോൾ അറിയിപ്പുകൾ പരിഷ്‌കരിക്കാനാകുന്നില്ല."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്‍ഫിഗര്‍ ചെയ്യാൻ കഴിയില്ല"</string>
diff --git a/packages/SystemUI/res/values-ml/tiles_states_strings.xml b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
index 689fe85..8639c10 100644
--- a/packages/SystemUI/res/values-ml/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ഓഫാണ്"</item>
     <item msgid="5908720590832378783">"ഓണാണ്"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index feca241..06b62e9 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"виджетийн сонголтыг болиулах"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Намсгах"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Өндөрсгөх"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Дараагийнхыг харуулах"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Өмнөхийг харуулах"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Түгжээтэй дэлгэцийн виджет"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Виджет ашиглан аппыг нээхийн тулд та өөрийгөө мөн болохыг баталгаажуулах шаардлагатай болно. Мөн таны таблет түгжээтэй байсан ч тэдгээрийг дурын хүн үзэж болохыг санаарай. Зарим виджет таны түгжээтэй дэлгэцэд зориулагдаагүй байж магадгүй ба энд нэмэхэд аюултай байж болзошгүй."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ойлголоо"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь харилцан ярианы онцлогуудыг дэмждэггүй"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Санал хүсэлт"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Хаах"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Дахиж бүү харуул"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Дуудлагын мэдэгдлийг өөрчлөх боломжгүй."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Эвхэгддэг төхөөрөмжийг дэлгэж байна"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Эвхэгддэг төхөөрөмжийг хөнтөрч байна"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Нүүрэн талын дэлгэцийг асаасан"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Дотоод дэлгэцийг ашиглахын тулд гулсуулна уу"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"эвхсэн"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"дэлгэсэн"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-mn/tiles_states_strings.xml b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
index 94e3939..678033c 100644
--- a/packages/SystemUI/res/values-mn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Унтраалттай"</item>
     <item msgid="5908720590832378783">"Асаалттай"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index a3c45f3..4c2fd29 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"विजेटची निवड रद्द करा"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"उंची कमी करा"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"उंची वाढवा"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"पुढील दाखवा"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"मागील दाखवा"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्‍क्रीन विजेट"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"विजेट वापरून अ‍ॅप उघडण्यासाठी, तुम्हाला हे तुम्हीच असल्याची पडताळणी करावी लागेल. तसेच, लक्षात ठेवा, तुमचा टॅबलेट लॉक असतानादेखील कोणीही ती पाहू शकते. काही विजेट कदाचित तुमच्या लॉक स्‍क्रीनसाठी नाहीत आणि ती इथे जोडणे असुरक्षित असू शकते."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"समजले"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे संभाषण वैशिष्ट्यांना सपोर्ट करत नाही"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"फीडबॅक"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"डिसमिस करा"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"पुन्हा दाखवू नका"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉलशी संबंधित सूचनांमध्ये फेरबदल केला जाऊ शकत नाही."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"या सूचनांचा संच येथे कॉन्फिगर केला जाऊ शकत नाही"</string>
@@ -1523,8 +1530,8 @@
     <string name="tutorial_animation_content_description" msgid="2698816574982370184">"ट्यूटोरियल अ‍ॅनिमेशन थांबवण्यासाठी किंवा पुन्हा सुरू करण्यासाठी प्ले करा वर क्लिक करा."</string>
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"कीबोर्ड बॅकलाइट"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d पैकी %1$d पातळी"</string>
-    <string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल"</string>
-    <string name="home_controls_dream_description" msgid="4644150952104035789">"स्क्रीनसेव्हर म्हणून होम कंट्रोल झटपट ॲक्सेस करा"</string>
+    <string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल्स"</string>
+    <string name="home_controls_dream_description" msgid="4644150952104035789">"स्क्रीनसेव्हर म्हणून होम कंट्रोल्स झटपट ॲक्सेस करा"</string>
     <string name="volume_undo_action" msgid="5815519725211877114">"पहिल्यासारखे करा"</string>
     <string name="back_edu_toast_content" msgid="4530314597378982956">"मागे जाण्यासाठी, टचपॅडवर तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा"</string>
     <string name="home_edu_toast_content" msgid="3381071147871955415">"होमवर जाण्यासाठी, टचपॅडवर तीन बोटांनी वरती स्वाइप करा"</string>
diff --git a/packages/SystemUI/res/values-mr/tiles_states_strings.xml b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
index cbaefb9..ec87659 100644
--- a/packages/SystemUI/res/values-mr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"बंद आहे"</item>
     <item msgid="5908720590832378783">"सुरू आहे"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index bb7dcb8..93f25ff 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"nyahpilih widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Kurangkan ketinggian"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Tambahkan ketinggian"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Tunjukkan seterusnya"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Tunjukkan sebelumnya"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget skrin kunci"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Untuk membuka apl menggunakan widget, anda perlu mengesahkan identiti anda. Selain itu, perlu diingat bahawa sesiapa sahaja boleh melihat widget tersebut, walaupun semasa tablet anda dikunci. Sesetengah widget mungkin tidak sesuai untuk skrin kunci anda dan mungkin tidak selamat untuk ditambahkan di sini."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak menyokong ciri perbualan"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Maklum balas"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ketepikan"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Jangan tunjukkan lagi"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Pemberitahuan ini tidak boleh diubah suai."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Pemberitahuan panggilan tidak boleh diubah suai."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
diff --git a/packages/SystemUI/res/values-ms/tiles_states_strings.xml b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
index 3c78bcc..6dc9827 100644
--- a/packages/SystemUI/res/values-ms/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Mati"</item>
     <item msgid="5908720590832378783">"Hidup"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 0219f69..bed07ef 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ဝိဂျက် ပြန်ဖြုတ်ရန်"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"အမြင့်ကို လျှော့ရန်"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"အမြင့်ကို တိုးရန်"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"နောက်တစ်ခု ပြပါ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ယခင်တစ်ခု ပြပါ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"လော့ခ်မျက်နှာပြင် ဝိဂျက်များ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ဝိဂျက်သုံး၍ အက်ပ်ဖွင့်ရန်အတွက် သင်ဖြစ်ကြောင်း အတည်ပြုရန်လိုသည်။ ထို့ပြင် သင့်တက်ဘလက် လော့ခ်ချထားချိန်၌ပင် မည်သူမဆို ၎င်းတို့ကို ကြည့်နိုင်ကြောင်း သတိပြုပါ။ ဝိဂျက်အချို့ကို လော့ခ်မျက်နှာပြင်အတွက် ရည်ရွယ်ထားခြင်း မရှိသဖြင့် ဤနေရာတွင် ထည့်ပါက မလုံခြုံနိုင်ပါ။"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"နားလည်ပြီ"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"အားသွင်းနေစဉ် အကြိုက်ဆုံးဝိဂျက်များ၊ စခရင်နားချိန်ပုံများ ကြည့်နိုင်သည်။"</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"စကြစို့"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"အားသွင်းနေစဉ် သင့်အကြိုက်ဆုံး စခရင်နားချိန်ပုံများကို ပြသည်"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူပြောင်းရန်"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ဆွဲချမီနူး"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ဒီချိတ်ဆက်မှု ထဲက အက်ပ်များ အားလုံး နှင့် ဒေတာကို ဖျက်ပစ်မည်။"</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"ဧည့်သည်ကို ပြန်လည် ကြိုဆိုပါသည်။"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> က စကားဝိုင်းဝန်ဆောင်မှုများကို မပံ့ပိုးပါ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"အကြံပြုချက်"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ပယ်ရန်"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ထပ်မပြပါနှင့်"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ခေါ်ဆိုမှုအကြောင်းကြားချက်များကို ပြင်၍မရပါ။"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ခေါက်နိုင်သောစက်ကို ဖြန့်လိုက်သည်"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ခေါက်နိုင်သောစက်ကို တစ်ဘက်သို့ လှန်လိုက်သည်"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"ရှေ့စခရင် ဖွင့်ထားသည်"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"အတွင်းဘက်ဖန်သားပြင် သုံးရန် ဘေးတိုက်ပွတ်ဆွဲပါ"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ခေါက်ထားသည်"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ဖြန့်ထားသည်"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-my/tiles_states_strings.xml b/packages/SystemUI/res/values-my/tiles_states_strings.xml
index 9675cb5..424b4b9 100644
--- a/packages/SystemUI/res/values-my/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-my/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ပိတ်"</item>
     <item msgid="5908720590832378783">"ဖွင့်"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 15e568b..7e87efc 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"velg bort modul"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Reduser høyden"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Øk høyden"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Vis neste"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Vis forrige"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Låseskjermmoduler"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"For å åpne en app ved hjelp av en modul må du bekrefte at det er deg. Husk også at hvem som helst kan se dem, selv om nettbrettet er låst. Noen moduler er kanskje ikke laget for å være på låseskjermen og kan være utrygge å legge til der."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Greit"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> støtter ikke samtalefunksjoner"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Tilbakemelding"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Lukk"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ikke vis igjen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse varslene kan ikke endres."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anropsvarsler kan ikke endres."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Denne varselgruppen kan ikke konfigureres her"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En foldbar enhet blir brettet ut"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En foldbar enhet blir snudd"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Frontskjermen er slått på"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Dra for å bruke den indre skjermen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"lagt sammen"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"åpen"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-nb/tiles_states_strings.xml b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
index bd5b692..bbeafd8 100644
--- a/packages/SystemUI/res/values-nb/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Av"</item>
     <item msgid="5908720590832378783">"På"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 02285f2..cc07b7f 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"विजेटको चयन रद्द गर्नुहोस्"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"उचाइ घटाउनुहोस्"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"उचाइ बढाउनुहोस्"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"अर्को देखाउनुहोस्"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"अघिल्लो देखाउनुहोस्"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लक स्क्रिन विजेटहरू"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"विजेट प्रयोग गरी एप खोल्न तपाईंले आफ्नो पहिचान पुष्टि गर्नु पर्ने हुन्छ। साथै, तपाईंको ट्याब्लेट लक भएका बेला पनि सबै जनाले तिनलाई देख्न सक्छन् भन्ने कुरा ख्याल गर्नुहोस्। केही विजेटहरू लक स्क्रिनमा प्रयोग गर्ने उद्देश्यले नबनाइएका हुन सक्छन् र तिनलाई यहाँ हाल्नु सुरक्षित नहुन सक्छ।"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"बुझेँ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा वार्तालापसम्बन्धी सुविधा प्रयोग गर्न मिल्दैन"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"प्रतिक्रिया"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"हटाउनुहोस्"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"फेरि नदेखाउनुहोस्"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कलसम्बन्धी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्डेबल डिभाइस अनफोल्ड गरेको देखाइएको एनिमेसन"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्डेबल डिभाइस यताउता पल्टाएर देखाइएको एनिमेसन"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"अगाडिको स्क्रिन अन गरिएको छ"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"भित्री स्क्रिन प्रयोग गर्न स्लाइड गर्नुहोस्"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"फोल्ड गरिएको"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"अनफोल्ड गरिएको"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-ne/tiles_states_strings.xml b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
index 2dd209d..de3baa0 100644
--- a/packages/SystemUI/res/values-ne/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"अफ छ"</item>
     <item msgid="5908720590832378783">"अन छ"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 99c8838..b778cec 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"widget deselecteren"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Hoogte verkleinen"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Hoogte vergroten"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Volgende tonen"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Vorige tonen"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets op het vergrendelscherm"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Als je een app wilt openen met een widget, moet je verifiëren dat jij het bent. Houd er ook rekening mee dat iedereen ze kan bekijken, ook als je tablet vergrendeld is. Bepaalde widgets zijn misschien niet bedoeld voor je vergrendelscherm en kunnen hier niet veilig worden toegevoegd."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Sluiten"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Niet meer tonen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Deze meldingen kunnen niet worden aangepast."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Gespreksmeldingen kunnen niet worden aangepast."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Deze groep meldingen kan hier niet worden ingesteld"</string>
diff --git a/packages/SystemUI/res/values-nl/tiles_states_strings.xml b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
index 221749c..90572b6 100644
--- a/packages/SystemUI/res/values-nl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Uit"</item>
     <item msgid="5908720590832378783">"Aan"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 5847a9a..0ef622b 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -128,8 +128,8 @@
     <string name="screenrecord_taps_label" msgid="1595690528298857649">"ସ୍କ୍ରିନରେ ସ୍ପର୍ଶଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
     <string name="screenrecord_stop_label" msgid="72699670052087989">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"ସେୟାର୍‍ କରନ୍ତୁ"</string>
-    <string name="screenrecord_save_title" msgid="1886652605520893850">"ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂ ସେଭ୍ କରାଯାଇଛି"</string>
-    <string name="screenrecord_save_text" msgid="3008973099800840163">"ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
+    <string name="screenrecord_save_title" msgid="1886652605520893850">"ସ୍କ୍ରିନ ରେକର୍ଡିଂ ସେଭ କରାଯାଇଛି"</string>
+    <string name="screenrecord_save_text" msgid="3008973099800840163">"ଦେଖିବାକୁ ଟାପ କରନ୍ତୁ"</string>
     <string name="screenrecord_save_error" msgid="5862648532560118815">"ସ୍କ୍ରିନ ରେକର୍ଡିଂ ସେଭ କରିବାରେ ତ୍ରୁଟି"</string>
     <string name="screenrecord_start_error" msgid="2200660692479682368">"ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂ ଆରମ୍ଭ କରିବାରେ ତ୍ରୁଟି"</string>
     <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ରେକର୍ଡିଂ ବନ୍ଦ କରିବେ?"</string>
@@ -360,7 +360,7 @@
     <string name="quick_settings_connected" msgid="3873605509184830379">"ସଂଯୁକ୍ତ"</string>
     <string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"କନେକ୍ଟ ରହିଛି, ବ୍ୟାଟେରୀ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="quick_settings_connecting" msgid="2381969772953268809">"ସଂଯୋଗ କରୁଛି..."</string>
-    <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"ହଟସ୍ପଟ୍‌"</string>
+    <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"ହଟସ୍ପଟ"</string>
     <string name="quick_settings_hotspot_secondary_label_transient" msgid="7585604088079160564">"ଚାଲୁ ହେଉଛି…"</string>
     <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="1280433136266439372">"ଡାଟା ସେଭର୍‌ ଅନ୍‌ ଅଛି"</string>
     <string name="quick_settings_hotspot_secondary_label_num_devices" msgid="7536823087501239457">"{count,plural, =1{#ଟି ଡିଭାଇସ}other{#ଟି ଡିଭାଇସ}}"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ୱିଜେଟକୁ ଅଚୟନ କରନ୍ତୁ"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ଉଚ୍ଚତାକୁ କମ କରନ୍ତୁ"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ଉଚ୍ଚତାକୁ ବଢ଼ାନ୍ତୁ"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"ପରବର୍ତ୍ତୀ ନେଭିଗେସନ ପଏଣ୍ଟ ଦେଖାନ୍ତୁ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ପୂର୍ବବର୍ତ୍ତୀ ଦେଖାନ୍ତୁ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ଲକ ସ୍କ୍ରିନ ୱିଜେଟ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ଏକ ୱିଜେଟ ବ୍ୟବହାର କରି ଗୋଟିଏ ଆପ ଖୋଲିବା ପାଇଁ ଏହା ଆପଣ ଅଟନ୍ତି ବୋଲି ଆପଣଙ୍କୁ ଯାଞ୍ଚ କରିବାକୁ ହେବ। ଆହୁରି ମଧ୍ୟ, ଆପଣଙ୍କ ଟାବଲେଟ ଲକ ଥିଲେ ମଧ୍ୟ ଯେ କୌଣସି ବ୍ୟକ୍ତି ଏହାକୁ ଭ୍ୟୁ କରିପାରିବେ ବୋଲି ମନେ ରଖନ୍ତୁ। କିଛି ୱିଜେଟ ଆପଣଙ୍କ ଲକ ସ୍କ୍ରିନ ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ହୋଇନଥାଇପାରେ ଏବଂ ଏଠାରେ ଯୋଗ କରିବା ଅସୁରକ୍ଷିତ ହୋଇପାରେ।"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ବୁଝିଗଲି"</string>
@@ -757,7 +759,7 @@
     <string name="zen_alarm_warning" msgid="7844303238486849503">"<xliff:g id="WHEN">%1$s</xliff:g>ବେଳେ ଆପଣ ନିଜର ପରବର୍ତ୍ତୀ ଆଲାର୍ମ ଶୁଣିପାରିବେ ନାହିଁ"</string>
     <string name="alarm_template" msgid="2234991538018805736">"<xliff:g id="WHEN">%1$s</xliff:g> ହେଲେ"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"<xliff:g id="WHEN">%1$s</xliff:g> ବେଳେ"</string>
-    <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"ହଟସ୍ପଟ୍‌"</string>
+    <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"ହଟସ୍ପଟ"</string>
     <string name="accessibility_status_bar_satellite_no_connection" msgid="3001571744269917762">"ସାଟେଲାଇଟ, କୌଣସି କନେକ୍ସନ ନାହିଁ"</string>
     <string name="accessibility_status_bar_satellite_poor_connection" msgid="5231478574952724160">"ସାଟେଲାଇଟ, ଦୁର୍ବଳ କନେକ୍ସନ"</string>
     <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ସାଟେଲାଇଟ, ଭଲ କନେକ୍ସନ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ମତାମତ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ଖାରଜ କରନ୍ତୁ"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ପୁଣି ଶୋ କରନ୍ତୁ ନାହିଁ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"କଲ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରିବ ନାହିଁ।"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
@@ -955,7 +962,7 @@
     <item msgid="5874146774389433072">"ଡାହାଣକୁ-ଆଉଜେଇବା"</item>
   </string-array>
     <string name="save" msgid="3392754183673848006">"ସେଭ କରନ୍ତୁ"</string>
-    <string name="reset" msgid="8715144064608810383">"ରିସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="reset" msgid="8715144064608810383">"ରିସେଟ କରନ୍ତୁ"</string>
     <string name="clipboard" msgid="8517342737534284617">"କ୍ଲିପ୍‌ବୋର୍ଡ"</string>
     <string name="accessibility_key" msgid="3471162841552818281">"କଷ୍ଟମ୍‍ ନାଭିଗେଶନ୍ ବଟନ୍‍"</string>
     <string name="left_keycode" msgid="8211040899126637342">"ବାମ କୀ\'କୋଡ୍‍"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଅନଫୋଲ୍ଡ କରାଯାଉଛି"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଫ୍ଲିପ କରାଯାଉଛି"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"ସାମ୍ନା ସ୍କ୍ରିନ ଚାଲୁ ଅଛି"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"ଭିତର ସ୍କ୍ରିନକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସ୍ଲାଇଡ କରନ୍ତୁ"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ଫୋଲ୍ଡେଡ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ଅନଫୋଲ୍ଡେଡ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-or/tiles_states_strings.xml b/packages/SystemUI/res/values-or/tiles_states_strings.xml
index 8d23073..c9c3198 100644
--- a/packages/SystemUI/res/values-or/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-or/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ବନ୍ଦ ଅଛି"</item>
     <item msgid="5908720590832378783">"ଚାଲୁ ଅଛି"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 17757b8..4be78a3 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ਵਿਜੇਟ ਨੂੰ ਅਣਚੁਣਿਆ ਕਰੋ"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ਉਚਾਈ ਘਟਾਓ"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ਉਚਾਈ ਵਧਾਓ"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"ਅਗਲਾ ਦਿਖਾਓ"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"ਪਿਛਲਾ ਦਿਖਾਓ"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ਲਾਕ ਸਕ੍ਰੀਨ ਵਿਜੇਟ"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ਵਿਜੇਟ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਐਪ ਖੋਲ੍ਹਣ ਲਈ, ਤੁਹਾਨੂੰ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ ਕਿ ਇਹ ਤੁਸੀਂ ਹੀ ਹੋ। ਨਾਲ ਹੀ, ਇਹ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਕੋਈ ਵੀ ਉਨ੍ਹਾਂ ਨੂੰ ਦੇਖ ਸਕਦਾ ਹੈ, ਭਾਵੇਂ ਤੁਹਾਡਾ ਟੈਬਲੈੱਟ ਲਾਕ ਹੋਵੇ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਵਿਜੇਟ ਤੁਹਾਡੀ ਲਾਕ ਸਕ੍ਰੀਨ ਲਈ ਨਾ ਬਣੇ ਹੋਣ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਥੇ ਸ਼ਾਮਲ ਕਰਨਾ ਅਸੁਰੱਖਿਅਤ ਹੋਵੇ।"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ਸਮਝ ਲਿਆ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਗੱਲਬਾਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ਵਿਚਾਰ"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ਖਾਰਜ ਕਰੋ"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ਕਾਲ ਸੰਬੰਧੀ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
diff --git a/packages/SystemUI/res/values-pa/tiles_states_strings.xml b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
index 0f53e5d..eeb9a5b 100644
--- a/packages/SystemUI/res/values-pa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ਬੰਦ"</item>
     <item msgid="5908720590832378783">"ਚਾਲੂ"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index c0a2831..d358b9f 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -391,7 +391,7 @@
     <string name="quick_settings_nfc_label" msgid="1054317416221168085">"Komunikacja NFC"</string>
     <string name="quick_settings_nfc_off" msgid="3465000058515424663">"Komunikacja NFC jest wyłączona"</string>
     <string name="quick_settings_nfc_on" msgid="1004976611203202230">"Komunikacja NFC jest włączona"</string>
-    <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Nagraj ekran"</string>
+    <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Nagrywanie ekranu"</string>
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Rozpocznij"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zatrzymaj"</string>
     <string name="qs_record_issue_label" msgid="8166290137285529059">"Zarejestruj problem"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"odznacz widżet"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Zmniejsz wysokość"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Zwiększ wysokość"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Pokaż następny"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Pokaż poprzedni"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widżety na ekranie blokady"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aby otworzyć aplikację za pomocą widżetu, musisz potwierdzić swoją tożsamość. Pamiętaj też, że każdy będzie mógł wyświetlić widżety nawet wtedy, gdy tablet będzie zablokowany. Niektóre widżety mogą nie być przeznaczone do umieszczenia na ekranie blokady i ich dodanie w tym miejscu może być niebezpieczne."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> nie obsługuje funkcji rozmów"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Opinia"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Zamknij"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nie pokazuj ponownie"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tych powiadomień nie można zmodyfikować."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Powiadomień o połączeniach nie można modyfikować."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tej grupy powiadomień nie można tu skonfigurować"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Składane urządzenie jest rozkładane"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Składane urządzenie jest obracane"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Ekran przedni jest włączony"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Przesuń palcem, aby używać wewnętrznego ekranu"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"po zamknięciu"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"po otwarciu"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-pl/tiles_states_strings.xml b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
index c9eb500..bc59a90 100644
--- a/packages/SystemUI/res/values-pl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Wyłączony"</item>
     <item msgid="5908720590832378783">"Włączony"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index c1a8ec4..3a7d1f2 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -333,8 +333,8 @@
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Protetor de tela"</string>
-    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Acesso à câmera"</string>
-    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Acesso ao microfone"</string>
+    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Câmera"</string>
+    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Microfone"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Disponível"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Bloqueada"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Dispositivo de mídia"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"desmarcar widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Diminuir altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar próximo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets da tela de bloqueio"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisa confirmar sua identidade. E não se esqueça que qualquer pessoa pode ver os widgets, mesmo com o tablet bloqueado. Além disso, alguns apps não foram criados para a tela de bloqueio, é melhor manter a segurança."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Enviar feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -1524,7 +1531,7 @@
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
-    <string name="home_controls_dream_description" msgid="4644150952104035789">"Controles de automação residencial no protetor de tela"</string>
+    <string name="home_controls_dream_description" msgid="4644150952104035789">"Controle de automação no protetor de tela"</string>
     <string name="volume_undo_action" msgid="5815519725211877114">"Desfazer"</string>
     <string name="back_edu_toast_content" msgid="4530314597378982956">"Se quiser voltar, deslize para a esquerda ou direita com três dedos no touchpad"</string>
     <string name="home_edu_toast_content" msgid="3381071147871955415">"Se quiser acessar a tela inicial, deslize para cima com três dedos no touchpad"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
index 9ddc41c..3e75cdd 100644
--- a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desativado"</item>
     <item msgid="5908720590832378783">"Ativado"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 36384bc..ff0ba36 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -128,7 +128,7 @@
     <string name="screenrecord_taps_label" msgid="1595690528298857649">"Mostrar toques no ecrã"</string>
     <string name="screenrecord_stop_label" msgid="72699670052087989">"Parar"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"Partilhar"</string>
-    <string name="screenrecord_save_title" msgid="1886652605520893850">"Gravação de ecrã guardada."</string>
+    <string name="screenrecord_save_title" msgid="1886652605520893850">"Gravação de ecrã guardada"</string>
     <string name="screenrecord_save_text" msgid="3008973099800840163">"Toque para ver"</string>
     <string name="screenrecord_save_error" msgid="5862648532560118815">"Erro ao guardar a gravação de ecrã"</string>
     <string name="screenrecord_start_error" msgid="2200660692479682368">"Ocorreu um erro ao iniciar a gravação do ecrã."</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"desmarcar widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Diminuir altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar próximo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets do ecrã de bloqueio"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir uma app através de um widget, vai ter de validar a sua identidade. Além disso, tenha em atenção que qualquer pessoa pode ver os widgets, mesmo quando o tablet estiver bloqueado. Alguns widgets podem não se destinar ao ecrã de bloqueio e pode ser inseguro adicioná-los aqui."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar estas notificações."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamadas."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar este grupo de notificações aqui."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
index 5baa61c..7e7e673 100644
--- a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desativado"</item>
     <item msgid="5908720590832378783">"Ativado"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index c1a8ec4..3a7d1f2 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -333,8 +333,8 @@
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Protetor de tela"</string>
-    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Acesso à câmera"</string>
-    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Acesso ao microfone"</string>
+    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Câmera"</string>
+    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Microfone"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Disponível"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Bloqueada"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Dispositivo de mídia"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"desmarcar widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Diminuir altura"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Aumentar altura"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Mostrar próximo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Mostrar anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets da tela de bloqueio"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisa confirmar sua identidade. E não se esqueça que qualquer pessoa pode ver os widgets, mesmo com o tablet bloqueado. Além disso, alguns apps não foram criados para a tela de bloqueio, é melhor manter a segurança."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Enviar feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -1524,7 +1531,7 @@
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Luz de fundo do teclado"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
-    <string name="home_controls_dream_description" msgid="4644150952104035789">"Controles de automação residencial no protetor de tela"</string>
+    <string name="home_controls_dream_description" msgid="4644150952104035789">"Controle de automação no protetor de tela"</string>
     <string name="volume_undo_action" msgid="5815519725211877114">"Desfazer"</string>
     <string name="back_edu_toast_content" msgid="4530314597378982956">"Se quiser voltar, deslize para a esquerda ou direita com três dedos no touchpad"</string>
     <string name="home_edu_toast_content" msgid="3381071147871955415">"Se quiser acessar a tela inicial, deslize para cima com três dedos no touchpad"</string>
diff --git a/packages/SystemUI/res/values-pt/tiles_states_strings.xml b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
index 9ddc41c..3e75cdd 100644
--- a/packages/SystemUI/res/values-pt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Desativado"</item>
     <item msgid="5908720590832378783">"Ativado"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index beb3c116..2417c84 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"deselectează widgetul"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Redu înălțimea"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Crește înălțimea"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Afișează elementul următor"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Afișează elementul anterior"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgeturi pe ecranul de blocare"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pentru a deschide o aplicație folosind un widget, va trebui să-ți confirmi identitatea. În plus, reține că oricine poate să vadă widgeturile, chiar dacă tableta este blocată. Este posibil ca unele widgeturi să nu fi fost create pentru ecranul de blocare și poate fi nesigur să le adaugi aici."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu acceptă funcții pentru conversații"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Închide"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nu mai afișa"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Aceste notificări nu pot fi modificate."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notificările pentru apeluri nu pot fi modificate."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Acest grup de notificări nu poate fi configurat aici"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispozitiv pliabil care este desfăcut"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispozitiv pliabil care este întors"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Ecranul frontal este activat"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Glisează pentru a folosi ecranul interior"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"închis"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"deschis"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-ro/tiles_states_strings.xml b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
index 528b112..6dcb0d3 100644
--- a/packages/SystemUI/res/values-ro/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Dezactivat"</item>
     <item msgid="5908720590832378783">"Activat"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index e3f852c..f6968d5 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -129,7 +129,7 @@
     <string name="screenrecord_stop_label" msgid="72699670052087989">"Остановить"</string>
     <string name="screenrecord_share_label" msgid="5025590804030086930">"Поделиться"</string>
     <string name="screenrecord_save_title" msgid="1886652605520893850">"Видео с экрана сохранено"</string>
-    <string name="screenrecord_save_text" msgid="3008973099800840163">"Нажмите, чтобы посмотреть."</string>
+    <string name="screenrecord_save_text" msgid="3008973099800840163">"Нажмите, чтобы посмотреть"</string>
     <string name="screenrecord_save_error" msgid="5862648532560118815">"Не удалось сохранить запись видео с экрана."</string>
     <string name="screenrecord_start_error" msgid="2200660692479682368">"Не удалось начать запись видео с экрана."</string>
     <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Остановить запись?"</string>
@@ -162,7 +162,7 @@
     <string name="issuerecord_ongoing_screen_only" msgid="6248206059935015722">"Записываем проблему на видео"</string>
     <string name="issuerecord_share_label" msgid="3992657993619876199">"Поделиться"</string>
     <string name="issuerecord_save_title" msgid="4161043023696751591">"Запись сохранена."</string>
-    <string name="issuerecord_save_text" msgid="1205985304551521495">"Нажмите, чтобы посмотреть."</string>
+    <string name="issuerecord_save_text" msgid="1205985304551521495">"Нажмите, чтобы посмотреть"</string>
     <string name="issuerecord_save_error" msgid="6913040083446722726">"Не удалось сохранить запись."</string>
     <string name="issuerecord_start_error" msgid="3402782952722871190">"Не удалось начать запись."</string>
     <string name="immersive_cling_title" msgid="8372056499315585941">"Полноэкранный режим"</string>
@@ -335,7 +335,7 @@
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Заставка"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"Доступ к камере"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"Доступ к микрофону"</string>
-    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Есть"</string>
+    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Разрешен"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Заблокировано"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Режим медиа"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"Пользователь"</string>
@@ -381,7 +381,7 @@
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"Включить в <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"До <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Тёмная тема"</string>
-    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Режим энергосбер."</string>
+    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Энергосбережение"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"Вкл. на закате"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"До рассвета"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"Включить в <xliff:g id="TIME">%s</xliff:g>"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"отменить выбор виджета"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Уменьшить высоту"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Увеличить высоту"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Показать следующий"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Показать предыдущий"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виджеты на заблокированном экране"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Чтобы открыть приложение, используя виджет, вам нужно будет подтвердить свою личность. Обратите внимание, что виджеты видны всем, даже если планшет заблокирован. Некоторые виджеты не предназначены для использования на заблокированном экране. Добавлять их туда может быть небезопасно."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ОК"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Оставить отзыв"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыть"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Больше не показывать"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Эти уведомления нельзя изменить."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Уведомления о звонках нельзя изменить."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Эту группу уведомлений нельзя настроить здесь."</string>
diff --git a/packages/SystemUI/res/values-ru/tiles_states_strings.xml b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
index 43d3e2a..e7ff74d 100644
--- a/packages/SystemUI/res/values-ru/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Отключено"</item>
     <item msgid="5908720590832378783">"Включено"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 9ff6747..eb816b8 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"විජට් නොතෝරන්න"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"උස අඩු කරන්න"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"උස වැඩි කරන්න"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"මීළග පෙන්වන්න"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"පෙර එක පෙන්වන්න"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"අගුළු තිර විජට්"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"විජට් එකක් භාවිතයෙන් යෙදුමක් විවෘත කිරීමට, ඔබට ඒ ඔබ බව සත්‍යාපනය කිරීමට අවශ්‍ය වනු ඇත. එසේම, ඔබේ ටැබ්ලටය අගුළු දමා ඇති විට පවා ඕනෑම කෙනෙකුට ඒවා බැලිය හැකි බව මතක තබා ගන්න. සමහර විජට් ඔබේ අගුළු තිරය සඳහා අදහස් කර නොතිබිය හැකි අතර මෙහි එක් කිරීමට අනාරක්ෂිත විය හැක."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"තේරුණා"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> සංවාද විශේෂාංගවලට සහාය නොදක්වයි"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ප්‍රතිපෝෂණය"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"අස් කරන්න"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"නැවත නොපෙන්වන්න"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ඇමතුම් දැනුම්දීම් වෙනස් කළ නොහැකිය."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"මෙම දැනුම්දීම් සමූහය මෙහි වින්‍යාස කළ නොහැක"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"දිග හැරෙමින් පවතින නැමිය හැකි උපාංගය"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"වටා පෙරළෙමින් තිබෙන නැමිය හැකි උපාංගය"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"ඉදිරිපස තිරය ක්‍රියාත්මකයි"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"අභ්‍යන්තර තිරය භාවිතා කිරීමට ස්ලයිඩ් කරන්න"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"නැවූ"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"නොනැවූ"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-si/tiles_states_strings.xml b/packages/SystemUI/res/values-si/tiles_states_strings.xml
index 91280e1..710e9aa 100644
--- a/packages/SystemUI/res/values-si/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-si/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ක්‍රියාවිරහිතයි"</item>
     <item msgid="5908720590832378783">"ක්‍රියාත්මකයි"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index a42eb1e..fcb281d 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -354,7 +354,7 @@
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzia farieb"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Úprava farieb"</string>
     <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Veľkosť písma"</string>
-    <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Spravovať použ."</string>
+    <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Spravovať používateľov"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Hotovo"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zavrieť"</string>
     <string name="quick_settings_connected" msgid="3873605509184830379">"Pripojené"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"zrušiť výber miniaplikácie"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Znížiť výšku"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Zväčšiť výšku"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Zobraziť ďalší"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Zobraziť predchádzajúci"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Miniaplikácie na uzamknutej obrazovke"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ak chcete otvoriť aplikáciu pomocou miniaplikácie, budete musieť overiť svoju totožnosť. Pamätajte, že si miniaplikáciu môže pozrieť ktokoľvek, aj keď máte tablet uzamknutý. Niektoré miniaplikácie možno nie sú určené pre uzamknutú obrazovku a ich pridanie tu môže byť nebezpečné."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Dobre"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nepodporuje funkcie konverzácie"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Spätná väzba"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Zavrieť"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nabudúce nezobrazovať"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tieto upozornenia sa nedajú upraviť."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornenia na hovory sa nedajú upraviť."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
@@ -1349,7 +1356,7 @@
     <string name="clipboard_image_preview" msgid="2156475174343538128">"Ukážka obrázka"</string>
     <string name="clipboard_edit" msgid="4500155216174011640">"upraviť"</string>
     <string name="add" msgid="81036585205287996">"Pridať"</string>
-    <string name="manage_users" msgid="1823875311934643849">"Spravovať použ."</string>
+    <string name="manage_users" msgid="1823875311934643849">"Spravovať používateľov"</string>
     <string name="drag_split_not_supported" msgid="7173481676120546121">"Toto upozornenie nepodporuje presun na rozdelenú obrazovku"</string>
     <string name="dream_overlay_location_active" msgid="6484763493158166618">"Aktívne miesto"</string>
     <string name="dream_overlay_status_bar_wifi_off" msgid="4497069245055003582">"Wi‑Fi nie je k dispozícii"</string>
@@ -1524,7 +1531,7 @@
     <string name="keyboard_backlight_dialog_title" msgid="8273102932345564724">"Podsvietenie klávesnice"</string>
     <string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. úroveň z %2$d"</string>
     <string name="home_controls_dream_label" msgid="6567105701292324257">"Ovládanie domácnosti"</string>
-    <string name="home_controls_dream_description" msgid="4644150952104035789">"Rýchly prístup k ovládaniu domácnosti z šetriča obrazovky"</string>
+    <string name="home_controls_dream_description" msgid="4644150952104035789">"Rýchle ovládanie domácnosti z šetriča obrazovky"</string>
     <string name="volume_undo_action" msgid="5815519725211877114">"Vrátiť späť"</string>
     <string name="back_edu_toast_content" msgid="4530314597378982956">"Ak chcete prejsť späť, potiahnite po touchpade troma prstami doľava alebo doprava"</string>
     <string name="home_edu_toast_content" msgid="3381071147871955415">"Ak sa chcete vrátiť na plochu, potiahnite po touchpade troma prstami nahor."</string>
diff --git a/packages/SystemUI/res/values-sk/tiles_states_strings.xml b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
index 0b0b894..8323506 100644
--- a/packages/SystemUI/res/values-sk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Vypnuté"</item>
     <item msgid="5908720590832378783">"Zapnuté"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index c0e751b..e999065 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"preklic izbire pripomočka"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Zmanjšanje višine"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Povečanje višine"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Prikaz naslednjega"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Prikaz prejšnjega"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Pripomočki na zaklenjenem zaslonu"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Če želite aplikacijo odpreti s pripomočkom, morate potrditi, da ste to vi. Upoštevajte tudi, da si jih lahko ogledajo vsi, tudi ko je tablični računalnik zaklenjen. Nekateri pripomočki morda niso predvideni za uporabo na zaklenjenem zaslonu, zato jih tukaj morda ni varno dodati."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Razumem"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podpira pogovornih funkcij."</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Povratne informacije"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Opusti"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Tega ne prikaži več"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Za ta obvestila ni mogoče spremeniti nastavitev."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obvestil o klicih ni mogoče spreminjati."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string>
diff --git a/packages/SystemUI/res/values-sl/tiles_states_strings.xml b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
index f9ccbb1..d644038 100644
--- a/packages/SystemUI/res/values-sl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Izklopljeno"</item>
     <item msgid="5908720590832378783">"Vklopljeno"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 06cefd9c..7e2b698 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"anulo zgjedhjen e miniaplikacionit"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Zvogëlo lartësinë"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Rrit lartësinë"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Shfaq tjetrin"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Shfaq të mëparshmin"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Miniaplikacionet në ekranin e kyçjes"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Për të hapur një aplikacion duke përdorur një miniaplikacion, do të duhet të verifikosh që je ti. Ki parasysh gjithashtu që çdo person mund t\'i shikojë, edhe kur tableti yt është i kyçur. Disa miniaplikacione mund të mos jenë planifikuar për ekranin tënd të kyçjes dhe mund të mos jetë e sigurt t\'i shtosh këtu."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"E kuptova"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mbështet veçoritë e bisedës"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Koment"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Hiq"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Mos e shfaq më"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Këto njoftime nuk mund të modifikohen."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Njoftimet e telefonatave nuk mund të modifikohen."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Pajisja e palosshme duke u hapur"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Pajisja e palosshme duke u rrotulluar"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Ekrani i përparmë është aktivizuar"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Rrëshqit për të përdorur ekranin e brendshëm"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"palosur"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"shpalosur"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-sq/tiles_states_strings.xml b/packages/SystemUI/res/values-sq/tiles_states_strings.xml
index 1ab4f01..1b1a62f 100644
--- a/packages/SystemUI/res/values-sq/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sq/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Joaktive"</item>
     <item msgid="5908720590832378783">"Aktive"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 3977058..1e44e0c 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"поништи избор виџета"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Смањи висину"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Повећај висину"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Прикажите следеће"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Прикажите претходно"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виџети за закључани екран"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Да бисте отворили апликацију која користи виџет, треба да потврдите да сте то ви. Имајте у виду да свако може да га види, чак и када је таблет закључан. Неки виџети можда нису намењени за закључани екран и можда није безбедно да их тамо додате."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Важи"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не подржава функције конверзације"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Повратне информације"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Одбаци"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Не приказуј поново"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ова обавештења не могу да се мењају."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Обавештења о позивима не могу да се мењају."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ова група обавештења не може да се конфигурише овде"</string>
@@ -1370,7 +1377,7 @@
     <string name="bt_le_audio_broadcast_dialog_different_output" msgid="7885102097302562674">"Промените излаз"</string>
     <string name="bt_le_audio_broadcast_dialog_unknown_name" msgid="3791472237793443044">"Непознато"</string>
     <string name="dream_time_complication_12_hr_time_format" msgid="4691197486690291529">"с:мин"</string>
-    <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"ч:мин"</string>
+    <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:mm"</string>
     <string name="log_access_confirmation_title" msgid="4843557604739943395">"Желите да дозволите да <xliff:g id="LOG_ACCESS_APP_NAME">%s</xliff:g> приступа свим евиденцијама уређаја?"</string>
     <string name="log_access_confirmation_allow" msgid="752147861593202968">"Дозволи једнократан приступ"</string>
     <string name="log_access_confirmation_deny" msgid="2389461495803585795">"Не дозволи"</string>
diff --git a/packages/SystemUI/res/values-sr/tiles_states_strings.xml b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
index ec5f10f..e1bd7b1 100644
--- a/packages/SystemUI/res/values-sr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Искључено"</item>
     <item msgid="5908720590832378783">"Укључено"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 7051a2a..d613922 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"avmarkera widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Minska höjden"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Öka höjden"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Visa nästa"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Visa föregående"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgetar för låsskärm"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Du måste verifiera din identitet innan du öppnar en app med en widget. Tänk också på att alla kan se dem, även när surfplattan är låst. Vissa widgetar kanske inte är avsedda för låsskärmen och det kan vara osäkert att lägga till dem här."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte stöd för konversationsfunktioner"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Stäng"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Visa inte igen"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Det går inte att ändra de här aviseringarna."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Det går inte att ändra samtalsaviseringarna."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Den här aviseringsgruppen kan inte konfigureras här"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En vikbar enhet viks upp"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En vikbar enhet vänds"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Den främre skärmen har aktiverats"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Dra för att använda den inre skärmen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"hopvikt"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"uppvikt"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-sv/tiles_states_strings.xml b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
index e9da805..37d757e 100644
--- a/packages/SystemUI/res/values-sv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Av"</item>
     <item msgid="5908720590832378783">"På"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 2ead01a..33d8511 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -335,7 +335,7 @@
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Taswira ya skrini"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"Ufikiaji wa kamera"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"Ufikiaji wa maikrofoni"</string>
-    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Unapatikana"</string>
+    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Inapatikana"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Umezuiwa"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Kifaa cha faili"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"Mtumiaji"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"acha kuchagua wijeti"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Punguza urefu"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Ongeza urefu"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Onyesha inayofuata"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Onyesha iliyotangulia"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Wijeti zinazoonekana kwenye skrini iliyofungwa"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Utahitaji kuthibitisha kuwa ni wewe ili ufungue programu ukitumia wijeti. Pia, kumbuka kuwa mtu yeyote anaweza kuziona, hata kishikwambi chako kikiwa kimefungwa. Huenda baadhi ya wijeti hazikukusudiwa kutumika kwenye skrini yako iliyofungwa na huenda si salama kuziweka hapa."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Nimeelewa"</string>
@@ -573,7 +575,7 @@
     <string name="media_projection_entry_app_permission_dialog_warning_single_app" msgid="7094417930857938876">"Unaporuhusu ufikiaji wa programu, chochote kinachoonyeshwa au kuchezwa katika programu hiyo kitaonekana kwa <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha, sauti na video."</string>
     <string name="media_projection_entry_app_permission_dialog_continue_entire_screen" msgid="1850848182344377579">"Ruhusu ufikiaji wa skrini"</string>
     <string name="media_projection_entry_app_permission_dialog_single_app_disabled" msgid="8999903044874669995">"<xliff:g id="APP_NAME">%1$s</xliff:g> imezima chaguo hili"</string>
-    <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Kuchagua programu utakayoruhusu ifikiwe"</string>
+    <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Chagua programu utakayoruhusu ifikiwe"</string>
     <string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"Ungependa kutuma maudhui yaliyo katika skrini yako?"</string>
     <string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"Tuma maudhui ya programu moja"</string>
     <string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"Tuma maudhui katika skrini nzima"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> haitumii vipengele vya mazungumzo"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Maoni"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Ondoa"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Usionyeshe tena"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Arifa hizi haziwezi kubadilishwa."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arifa za simu haziwezi kubadilishwa."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Kifaa kinachokunjwa kikikunjuliwa"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Kifaa kinachokunjwa kikigeuzwa"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Umewasha skrini ya mbele"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Telezesha kidole ili utumie skrini ya ndani"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kimekunjwa"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kimefunguliwa"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-sw/tiles_states_strings.xml b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
index 702af45..fae42c3 100644
--- a/packages/SystemUI/res/values-sw/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
@@ -64,12 +64,12 @@
   <string-array name="tile_states_rotation">
     <item msgid="4578491772376121579">"Hakipatikani"</item>
     <item msgid="5776427577477729185">"Kimezimwa"</item>
-    <item msgid="7105052717007227415">"Kimewashwa"</item>
+    <item msgid="7105052717007227415">"Imewashwa"</item>
   </string-array>
   <string-array name="tile_states_bt">
     <item msgid="5330252067413512277">"Hakipatikani"</item>
     <item msgid="5315121904534729843">"Kimezimwa"</item>
-    <item msgid="503679232285959074">"Kimewashwa"</item>
+    <item msgid="503679232285959074">"Imewashwa"</item>
   </string-array>
   <string-array name="tile_states_airplane">
     <item msgid="1985366811411407764">"Hakipatikani"</item>
@@ -93,7 +93,7 @@
   </string-array>
   <string-array name="tile_states_inversion">
     <item msgid="3638187931191394628">"Hakipatikani"</item>
-    <item msgid="9103697205127645916">"Kimezimwa"</item>
+    <item msgid="9103697205127645916">"Umezimwa"</item>
     <item msgid="8067744885820618230">"Kimewashwa"</item>
   </string-array>
   <string-array name="tile_states_saver">
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Limezimwa"</item>
     <item msgid="5908720590832378783">"Limewashwa"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index b37350c..aa312c7 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"விட்ஜெட்டைத் தேர்வுநீக்கும்"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"உயரத்தைக் குறைக்கும்"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"உயரத்தை அதிகரிக்கும்"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"அடுத்ததைக் காட்டும்"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"முந்தையதைக் காட்டும்"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"பூட்டுத் திரை விட்ஜெட்கள்"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"விட்ஜெட்டைப் பயன்படுத்தி ஆப்ஸைத் திறக்க, அது நீங்கள்தான் என்பதை உறுதிசெய்ய வேண்டும். அத்துடன், உங்கள் டேப்லெட் பூட்டப்பட்டிருந்தாலும்கூட அவற்றை யார் வேண்டுமானாலும் பார்க்கலாம் என்பதை நினைவில்கொள்ளுங்கள். சில விட்ஜெட்கள் உங்கள் பூட்டுத் திரைக்காக உருவாக்கப்பட்டவை அல்ல என்பதையும் அவற்றை இங்கே சேர்ப்பது பாதுகாப்பற்றதாக இருக்கக்கூடும் என்பதையும் நினைவில்கொள்ளுங்கள்."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"சரி"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"உரையாடல் அம்சங்களை <xliff:g id="APP_NAME">%1$s</xliff:g> ஆதரிக்காது"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"கருத்து"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"மூடுக"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"மீண்டும் காட்டாதே"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"அழைப்பு அறிவிப்புகளை மாற்ற முடியாது."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"மடக்கத்தக்க சாதனம் திறக்கப்படுகிறது"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"மடக்கத்தக்க சாதனம் ஃபிளிப் செய்யப்பட்டு திருப்பப்படுகிறது"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"முன்பக்கத் திரை இயக்கப்பட்டுள்ளது"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"உட்புறத் திரையைப் பயன்படுத்த ஸ்லைடு செய்யுங்கள்"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"மடக்கப்பட்டது"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"விரிக்கப்பட்டது"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-ta/tiles_states_strings.xml b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
index 17cc570..b09b17f 100644
--- a/packages/SystemUI/res/values-ta/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"முடக்கப்பட்டுள்ளது"</item>
     <item msgid="5908720590832378783">"இயக்கப்பட்டுள்ளது"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index f64c737..fc5361b 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"విడ్జెట్ ఎంపిక రద్దు చేయండి"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ఎత్తును తగ్గించండి"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"ఎత్తును పెంచండి"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"తర్వాతది చూడండి"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"మునుపటి దాన్ని చూడండి"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"లాక్ స్క్రీన్ విడ్జెట్‌లు"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"విడ్జెట్‌ను ఉపయోగించి యాప్‌ను తెరవడానికి, ఇది మీరేనని వెరిఫై చేయాల్సి ఉంటుంది. అలాగే, మీ టాబ్లెట్ లాక్ చేసి ఉన్నప్పటికీ, ఎవరైనా వాటిని చూడగలరని గుర్తుంచుకోండి. కొన్ని విడ్జెట్‌లు మీ లాక్ స్క్రీన్‌కు తగినవి కాకపోవచ్చు, వాటిని ఇక్కడ జోడించడం సురక్షితం కాకపోవచ్చు."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"అర్థమైంది"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> సంభాషణ ఫీచర్‌లను సపోర్ట్ చేయదు"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ఫీడ్‌బ్యాక్"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"విస్మరించండి"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"మళ్లీ చూపవద్దు"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ఈ నోటిఫికేషన్‌లను ఎడిట్ చేయడం వీలుపడదు."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"కాల్ నోటిఫికేషన్‌లను ఎడిట్ చేయడం సాధ్యం కాదు."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"ఈ నోటిఫికేషన్‌ల గ్రూప్‌ను ఇక్కడ కాన్ఫిగర్ చేయలేము"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"మడవగల పరికరం విప్పబడుతోంది"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"మడవగల పరికరం చుట్టూ తిప్పబడుతోంది"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"ముందు వైపు స్క్రీన్ ఆన్ అయింది"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"లోపలి స్క్రీన్‌ను ఉపయోగించడానికి స్లయిడ్ చేయండి"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"మడిచే సదుపాయం గల పరికరం"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"మడిచే సదుపాయం లేని పరికరం"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-te/tiles_states_strings.xml b/packages/SystemUI/res/values-te/tiles_states_strings.xml
index 8a0ab484..7562aae 100644
--- a/packages/SystemUI/res/values-te/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-te/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ఆఫ్‌లో ఉంది"</item>
     <item msgid="5908720590832378783">"ఆన్‌లో ఉంది"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 316aab0..873635d 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ยกเลิกการเลือกวิดเจ็ต"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"ลดความสูง"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"เพิ่มความสูง"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"แสดงมีเดียเพลเยอร์ถัดไป"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"แสดงมีเดียเพลเยอร์ก่อนหน้า"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"วิดเจ็ตในหน้าจอล็อก"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"หากต้องการเปิดแอปโดยใช้วิดเจ็ต คุณจะต้องยืนยันตัวตนของคุณ นอกจากนี้ โปรดทราบว่าผู้อื่นจะดูวิดเจ็ตเหล่านี้ได้แม้ว่าแท็บเล็ตจะล็อกอยู่ก็ตาม วิดเจ็ตบางอย่างอาจไม่ได้มีไว้สำหรับหน้าจอล็อกของคุณ และอาจไม่ปลอดภัยที่จะเพิ่มที่นี่"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"รับทราบ"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่รองรับฟีเจอร์การสนทนา"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"ความคิดเห็น"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"ปิด"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ไม่ต้องแสดงอีก"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"แก้ไขการแจ้งเตือนสายเรียกเข้าไม่ได้"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string>
diff --git a/packages/SystemUI/res/values-th/tiles_states_strings.xml b/packages/SystemUI/res/values-th/tiles_states_strings.xml
index 4db59c0..6d36036 100644
--- a/packages/SystemUI/res/values-th/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-th/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"ปิด"</item>
     <item msgid="5908720590832378783">"เปิด"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 04dc6c7..e6aa410 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"i-unselect ang widget"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Bawasan ang taas"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Dagdagan ang taas"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Ipakita ang susunod"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Ipakita ang mga nakaraan"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Mga widget ng lock screen"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para magbukas ng app gamit ang isang widget, kakailanganin mong i-verify na ikaw iyan. Bukod pa rito, tandaang puwedeng tingnan ng kahit na sino ang mga ito, kahit na naka-lock ang iyong tablet. Posibleng hindi para sa iyong lock screen ang ilang widget at posibleng hindi ligtas ang mga ito na idagdag dito."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"Hindi sinusuportahan ng <xliff:g id="APP_NAME">%1$s</xliff:g> ang mga feature ng pag-uusap"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Feedback"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"I-dismiss"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Huwag nang ipakita ulit"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Hindi puwedeng baguhin ang mga notification na ito."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Hindi mabago ang mga notification ng tawag."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ina-unfold na foldable na device"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Fini-flip na foldable na device"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Na-on ang screen sa harap"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"I-slide para gamitin ang inner screen"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"naka-fold"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"hindi naka-fold"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-tl/tiles_states_strings.xml b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
index 4832d1d..112c0bf 100644
--- a/packages/SystemUI/res/values-tl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Naka-off"</item>
     <item msgid="5908720590832378783">"Naka-on"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index f4a2c92..05fc1f2 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"widget\'ın seçimini kaldırın"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Yüksekliği azalt"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Yüksekliği artır"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Sonrakini göster"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Öncekini göster"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Kilit ekranı widget\'ları"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Widget kullanarak bir uygulamayı açmak için kimliğinizi doğrulamanız gerekir. Ayrıca, tabletiniz kilitliyken bile widget\'ların herkes tarafından görüntülenebileceğini unutmayın. Bazı widget\'lar kilit ekranınız için tasarlanmamış olabileceğinden buraya eklenmeleri güvenli olmayabilir."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
@@ -542,7 +544,7 @@
     <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Cihazınız şarj olurken en sevdiğiniz widget\'lara ve ekran koruyuculara erişin."</string>
     <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Başlayalım"</string>
     <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Cihazınız şarj olurken en sevdiğiniz ekran koruyucuları gösterin"</string>
-    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string>
+    <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştir"</string>
     <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"açılır menü"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu oturumdaki tüm uygulamalar ve veriler silinecek."</string>
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"Misafir kullanıcı, tekrar hoşgeldiniz"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>, sohbet özelliklerini desteklemiyor"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Geri bildirim"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Kapat"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Tekrar gösterme"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirimler değiştirilemez."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arama bildirimleri değiştirilemez."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildirim grubu burada yapılandırılamaz"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Katlanabilir cihaz açılıyor"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Katlanabilir cihaz döndürülüyor"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Ön ekran açıldı"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"İç taraftaki ekranı kullanmak için kaydırın"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"katlanmış"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"katlanmamış"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-tr/tiles_states_strings.xml b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
index 1c0c110..f3c51c0 100644
--- a/packages/SystemUI/res/values-tr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Kapalı"</item>
     <item msgid="5908720590832378783">"Açık"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 7dab3db..0b0d6dc 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"скасувати вибір віджета"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Зменшити висоту"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Збільшити висоту"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Показати наступний"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Показати попередній"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Віджети для заблокованого екрана"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Щоб відкрити додаток за допомогою віджета, вам потрібно буде підтвердити особу. Пам’ятайте також, що бачити віджети можуть усі, навіть коли планшет заблоковано. Можливо, деякі віджети не призначені для заблокованого екрана, і додавати їх на нього може бути небезпечно."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не підтримує функції розмов"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Надіслати відгук"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрити"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Більше не показувати"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ці сповіщення не можна змінити."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Сповіщення про виклик не можна змінити."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Цю групу сповіщень не можна налаштувати тут"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Розкладний пристрій у розкладеному стані"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Розкладний пристрій обертається"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Передній екран увімкнено"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Проведіть пальцем, щоб використовувати внутрішній екран"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"складений"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"розкладений"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-uk/tiles_states_strings.xml b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
index 656ccd4..4fac740 100644
--- a/packages/SystemUI/res/values-uk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Вимкнено"</item>
     <item msgid="5908720590832378783">"Увімкнено"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 6460721..ab4dd77 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"ویجیٹ غیر منتخب کریں"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"اونچائی کم کریں"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"اونچائی بڑھائیں"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"اگلا دکھائیں"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"سابقہ دکھائیں"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"مقفل اسکرین کے ویجیٹس"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ویجیٹ کے ذریعے ایپ کھولنے کے لیے آپ کو تصدیق کرنی ہوگی کہ یہ آپ ہی ہیں۔ نیز، ذہن میں رکھیں کہ کوئی بھی انہیں دیکھ سکتا ہے، یہاں تک کہ جب آپ کا ٹیبلیٹ مقفل ہو۔ ہو سکتا ہے کچھ ویجٹس آپ کی لاک اسکرین کے لیے نہ بنائے گئے ہوں اور یہاں شامل کرنا غیر محفوظ ہو سکتا ہے۔"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"سمجھ آ گئی"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ گفتگو کی خصوصیات کو سپورٹ نہیں کرتی ہے"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"تاثرات"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"برخاست کریں"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"دوبارہ نہ دکھائیں"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"کال کی اطلاعات میں ترمیم نہیں کی جا سکتی۔"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string>
diff --git a/packages/SystemUI/res/values-ur/tiles_states_strings.xml b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
index 4aa490d..06e213b 100644
--- a/packages/SystemUI/res/values-ur/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"آف"</item>
     <item msgid="5908720590832378783">"آن"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 6bcd9d6..55caf25 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -60,12 +60,12 @@
     <string name="hdmi_cec_set_menu_language_accept" msgid="2513689457281009578">"Tilni almashtirish"</string>
     <string name="hdmi_cec_set_menu_language_decline" msgid="7650721096558646011">"Joriy tilni qoldirish"</string>
     <string name="share_wifi_button_text" msgid="1285273973812029240">"Wi‑Fi ulashuv"</string>
-    <string name="wifi_debugging_title" msgid="7300007687492186076">"Wi-Fi orqali debagging uchun ruxsat berilsinmi?"</string>
+    <string name="wifi_debugging_title" msgid="7300007687492186076">"Wi-Fi orqali debaging uchun ruxsat berilsinmi?"</string>
     <string name="wifi_debugging_message" msgid="5461204211731802995">"Tarmoq nomi (SSID):\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Manzil (BSSID):\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
     <string name="wifi_debugging_always" msgid="2968383799517975155">"Bu tarmoqda doim ruxsat etilsin"</string>
     <string name="wifi_debugging_allow" msgid="4573224609684957886">"Ruxsat"</string>
-    <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wi-Fi orqali debagging taqiqlandi"</string>
-    <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"Ayni paytda ushbu qurilmaga oʻz hisobi bilan kirgan foydalanuvchi Wi-Fi orqali debagging funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun administrator profiliga oʻting."</string>
+    <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wi-Fi orqali debaging taqiqlandi"</string>
+    <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"Ayni paytda ushbu qurilmaga oʻz hisobi bilan kirgan foydalanuvchi Wi-Fi orqali debaging funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun administrator profiliga oʻting."</string>
     <string name="usb_contaminant_title" msgid="894052515034594113">"USB port faolsizlashtirildi"</string>
     <string name="usb_contaminant_message" msgid="7730476585174719805">"Qurilmangizni suyuqlik va turli parchalardan himoya qilish uchun USB port faolsizlashtiriladi va hech qanday aksessuarni aniqlay olmaydi.\n\nUSB portdan xavfsiz foydalanish mumkin boʻlganda, sizga xabar beriladi."</string>
     <string name="usb_port_enabled" msgid="531823867664717018">"Quvvatlash moslamalari va aksessuarlarni aniqlash uchun USB port yoqildi"</string>
@@ -354,7 +354,7 @@
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ranglarni akslantirish"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ranglarni tuzatish"</string>
     <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Shrift hajmi"</string>
-    <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Foyd-ni boshqarish"</string>
+    <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Foydalanuvchilarni boshqarish"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Tayyor"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Yopish"</string>
     <string name="quick_settings_connected" msgid="3873605509184830379">"Ulangan"</string>
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"vidjetni bekor qilish"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Balandligini kichraytirish"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Balandligini oshirish"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Keyingisi"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Avvalgisi"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Ekran qulfi vidjetlari"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ilovani vidjet orqali ochish uchun shaxsingizni tasdiqlashingiz kerak. Shuningdek, planshet qulflanganda ham bu axborotlar hammaga koʻrinishini unutmang. Ayrim vidjetlar ekran qulfiga moslanmagan va ularni bu yerda chiqarish xavfli boʻlishi mumkin."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasida suhbat funksiyalari ishlamaydi"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Fikr-mulohaza"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Yopish"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Boshqa chiqmasin"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirishnomalarni tahrirlash imkonsiz."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Chaqiruv bildirishnomalarini tahrirlash imkonsiz."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string>
@@ -1349,7 +1356,7 @@
     <string name="clipboard_image_preview" msgid="2156475174343538128">"Rasmga razm solish"</string>
     <string name="clipboard_edit" msgid="4500155216174011640">"tahrir"</string>
     <string name="add" msgid="81036585205287996">"Kiritish"</string>
-    <string name="manage_users" msgid="1823875311934643849">"Foyd-ni boshqarish"</string>
+    <string name="manage_users" msgid="1823875311934643849">"Foydalanuvchilarni boshqarish"</string>
     <string name="drag_split_not_supported" msgid="7173481676120546121">"Bu bildirishnoma ikkiga ajratilgan ekranda ishlamaydi."</string>
     <string name="dream_overlay_location_active" msgid="6484763493158166618">"Joylashuv faol"</string>
     <string name="dream_overlay_status_bar_wifi_off" msgid="4497069245055003582">"Wi‑Fi ishlamayapti"</string>
@@ -1394,10 +1401,9 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Buklanadigan qurilma ochilmoqda"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Buklanadigan qurilma aylantirilmoqda"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Old ekran yoqildi"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Ichki ekranni ishlatish uchun surish"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"buklangan"</string>
-    <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"buklanmagan"</string>
+    <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"yoyib ochilgan"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
     <string name="stylus_battery_low_percentage" msgid="2564243323894629626">"Stilus batareyasi: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Stilusni quvvat manbaiga ulang"</string>
diff --git a/packages/SystemUI/res/values-uz/tiles_states_strings.xml b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
index 1c32e9fb..f636bc6 100644
--- a/packages/SystemUI/res/values-uz/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Yoqilmagan"</item>
     <item msgid="5908720590832378783">"Yoniq"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index a9f24ed..35fe2f2 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"bỏ chọn tiện ích"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Giảm chiều cao"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Tăng chiều cao"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Hiện trình phát nội dung nghe nhìn tiếp theo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Hiện trình phát nội dung nghe nhìn trước"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Tiện ích trên màn hình khoá"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Để dùng tiện ích mở một ứng dụng, bạn cần xác minh danh tính của mình. Ngoài ra, hãy lưu ý rằng bất kỳ ai cũng có thể xem các tiện ích này, ngay cả khi máy tính bảng của bạn được khoá. Một số tiện ích có thể không dành cho màn hình khoá và không an toàn khi thêm vào đây."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Tôi hiểu"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> không hỗ trợ các tính năng trò chuyện"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Phản hồi"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Đóng"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Không hiện lại"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Không thể sửa đổi các thông báo này."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Không thể sửa đổi các thông báo cuộc gọi."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Thiết bị có thể gập lại đang được mở ra"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Thiết bị có thể gập lại đang được lật ngược"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Đã bật màn hình trước"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Trượt để dùng màn hình bên trong"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"gập"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"mở"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-vi/tiles_states_strings.xml b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
index 466eb3d6..d8e6887 100644
--- a/packages/SystemUI/res/values-vi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Đang tắt"</item>
     <item msgid="5908720590832378783">"Đang bật"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 0f28d92..530017c 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"取消选中微件"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"减小高度"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"增加高度"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"显示下一个"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"显示上一个"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"锁屏微件"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"若要使用微件打开应用,您需要验证是您本人在操作。另外请注意,任何人都可以查看此类微件,即使您的平板电脑已锁定。有些微件可能不适合显示在锁定的屏幕中,因此添加到这里可能不安全。"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"知道了"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>不支持对话功能"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"反馈"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"关闭"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不再显示"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"无法修改这些通知。"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"无法修改来电通知。"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"您无法在此处配置这组通知"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展开可折叠设备"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻转可折叠设备"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"前屏已开启"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"滑动即可使用内屏"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"折叠状态"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"展开状态"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
index 65415f6..6f36065 100644
--- a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"关闭"</item>
     <item msgid="5908720590832378783">"开启"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 6a29d86..496cbdb 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"取消揀小工具"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"調低高度"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"調高高度"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"顯示下一個"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"顯示上一個"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"上鎖畫面小工具"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,系統會要求你驗證身分。請注意,所有人都能查看小工具,即使平板電腦已鎖定亦然。部分小工具可能不適用於上鎖畫面,新增至這裡可能會有安全疑慮。"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"知道了"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"意見反映"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不要再顯示"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改通話通知。"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在此設定這組通知"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展開折疊式裝置"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻轉折疊式裝置"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"正面螢幕已開啟"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"滑動即可使用內部螢幕"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"已摺疊"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"已打開"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
index 0882be7..25548e2 100644
--- a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"關閉"</item>
     <item msgid="5908720590832378783">"開啟"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index a931304..c63473f 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -534,6 +534,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"取消選取小工具"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"調低"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"調高"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"顯示下一個"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"顯示上一個"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"螢幕鎖定小工具"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,需先驗證身分。請留意,即使平板電腦已鎖定,所有人都還是能查看小工具。某些小工具可能不適用於螢幕鎖定畫面,新增到此可能會有安全疑慮。"</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"我知道了"</string>
@@ -806,7 +808,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"意見回饋"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不要再顯示"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改來電通知。"</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在這裡設定這個通知群組"</string>
@@ -1394,8 +1401,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展開的折疊式裝置"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻轉折疊式裝置"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"正面螢幕已開啟"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"滑動即可使用內螢幕"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"已摺疊"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"已展開"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
index f94b044..3a192ba 100644
--- a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"關閉"</item>
     <item msgid="5908720590832378783">"開啟"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 08e6852..2aad788 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -536,6 +536,8 @@
     <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"yeka ukukhetha iwijethi"</string>
     <string name="accessibility_action_label_shrink_widget" msgid="8259511040536438771">"Nciphisa ubude"</string>
     <string name="accessibility_action_label_expand_widget" msgid="9190524260912211759">"Khuphula ubude"</string>
+    <string name="accessibility_action_label_umo_show_next" msgid="8033581654789193281">"Bonisa okulandelayo"</string>
+    <string name="accessibility_action_label_umo_show_previous" msgid="5935831384525173810">"Bonisa okwangaphambili"</string>
     <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Amawijethi wesikrini esikhiyiwe"</string>
     <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ukuze uvule i-app usebenzisa iwijethi, uzodinga ukuqinisekisa ukuthi nguwe. Futhi, khumbula ukuthi noma ubani angakwazi ukuzibuka, nanoma ithebhulethi yakho ikhiyiwe. Amanye amawijethi kungenzeka abengahloselwe ukukhiya isikrini sakho futhi kungenzeka awaphephile ukuthi angafakwa lapha."</string>
     <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ngiyezwa"</string>
@@ -808,7 +810,12 @@
     <string name="no_shortcut" msgid="8257177117568230126">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli izici zengxoxo"</string>
     <string name="notification_guts_bundle_feedback" msgid="7581587973879656500">"Impendulo"</string>
     <string name="notification_inline_dismiss" msgid="88423586921134258">"Chitha"</string>
-    <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ungabonisi futhi"</string>
+    <!-- no translation found for notification_inline_disable_promotion (3551682588314376921) -->
+    <skip />
+    <!-- no translation found for live_notifications_title (1586553354601345379) -->
+    <skip />
+    <!-- no translation found for live_notifications_desc (7470787001768372152) -->
+    <skip />
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Lezi zaziso azikwazi ukushintshwa."</string>
     <string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Izaziso zekholi azikwazi ukushintshwa."</string>
     <string name="notification_multichannel_desc" msgid="7414593090056236179">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
@@ -1396,8 +1403,7 @@
     <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Idivayisi egoqekayo iyembulwa"</string>
     <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Idivayisi egoqekayo iphendulwa nxazonke"</string>
     <string name="rear_display_unfolded_front_screen_on" msgid="5946436677205643170">"Isikrini sangaphambili sivuliwe"</string>
-    <!-- no translation found for rear_display_unfolded_front_screen_on_slide_to_cancel (1455192420423012859) -->
-    <skip />
+    <string name="rear_display_unfolded_front_screen_on_slide_to_cancel" msgid="1455192420423012859">"Slayida ukuze usebenzise isikrini esingaphakathi"</string>
     <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kugoqiwe"</string>
     <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"kuvuliwe"</string>
     <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
diff --git a/packages/SystemUI/res/values-zu/tiles_states_strings.xml b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
index be5c6d8..f9f27bd 100644
--- a/packages/SystemUI/res/values-zu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
@@ -196,4 +196,7 @@
     <item msgid="6419996398343291862">"Valiwe"</item>
     <item msgid="5908720590832378783">"Vuliwe"</item>
   </string-array>
+    <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) -->
+    <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) -->
+    <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) -->
 </resources>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 8665fd6..f4c6904 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -198,6 +198,7 @@
     <!-- media -->
     <color name="media_seamless_border">?android:attr/colorAccent</color>
     <color name="media_paging_indicator">@color/material_dynamic_neutral_variant80</color>
+    <color name="media_on_background">#FFFFFF</color>
 
     <!-- media output dialog-->
     <color name="media_dialog_background" android:lstar="98">@color/material_dynamic_neutral90</color>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 7d0c393..17a89b3 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -2183,9 +2183,7 @@
         orientation when the vertical space is limited
     -->
     <dimen name="volume_dialog_slider_vertical_margin">124dp</dimen>
-
-    <fraction name="volume_dialog_half_opened_bias">0.2</fraction>
-
+    <dimen name="volume_dialog_half_opened_offset">-128dp</dimen>
     <dimen name="volume_dialog_slider_max_deviation">56dp</dimen>
 
     <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index c0eea15..3fc46ed 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -574,11 +574,12 @@
 
     <!-- Content description of the bluetooth device settings gear icon. [CHAR LIMIT=NONE] -->
     <string name="accessibility_bluetooth_device_settings_gear">Click to configure device detail</string>
+    <!-- Content description of the bluetooth device settings gear icon. [CHAR LIMIT=NONE] [BACKUP_MESSAGE_ID=3314916468105272540] -->
+    <string name="accessibility_bluetooth_device_settings_gear_with_name"><xliff:g id="device_name">%s</xliff:g>. Configure device detail</string>
     <!-- Content description of the bluetooth device settings see all. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_bluetooth_device_settings_see_all">Click to see all devices</string>
+    <string name="accessibility_bluetooth_device_settings_see_all">See all devices</string>
     <!-- Content description of the bluetooth device settings pair new device. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_bluetooth_device_settings_pair_new_device">Click to pair new device</string>
-
+    <string name="accessibility_bluetooth_device_settings_pair_new_device">Pair new device</string>
     <!-- Content description of the battery when battery state is unknown for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_battery_unknown">Battery percentage unknown.</string>
 
@@ -2559,6 +2560,9 @@
     <!-- SysUI Tuner: Other section -->
     <string name="other">Other</string>
 
+    <!-- Accessibility description of action to toggle QS tile size on click. It will read as "Double-tap to toggle the tile's size" in screen readers [CHAR LIMIT=NONE] -->
+    <string name="accessibility_qs_edit_toggle_tile_size_action">toggle the tile\'s size</string>
+
     <!-- Accessibility description of action to remove QS tile on click. It will read as "Double-tap to remove tile" in screen readers [CHAR LIMIT=NONE] -->
     <string name="accessibility_qs_edit_remove_tile_action">remove tile</string>
 
@@ -4009,6 +4013,8 @@
     <string name="touchpad_tutorial_switch_apps_gesture_button">Switch apps</string>
     <!-- Label for button finishing touchpad tutorial [CHAR LIMIT=NONE] -->
     <string name="touchpad_tutorial_done_button">Done</string>
+    <!-- Label for button proceeding touchpad tutorial [CHAR LIMIT=NONE] -->
+    <string name="touchpad_tutorial_next_button">Next</string>
     <!-- Screen title after gesture was not done correctly [CHAR LIMIT=NONE] -->
     <string name="gesture_error_title">Try again!</string>
     <!-- BACK GESTURE -->
@@ -4094,8 +4100,10 @@
 
     <!-- Title of the one line view of a redacted notification -->
     <string name="redacted_notification_single_line_title">Redacted</string>
-    <!-- Main text of the one line view of a redacted notification -->
-    <string name="redacted_notification_single_line_text">Unlock to view</string>
+    <!-- Main text of the one line view of a public notification -->
+    <string name="public_notification_single_line_text">Unlock to view</string>
+    <!-- Main text of the one line view of a redacted OTP notification -->
+    <string name="redacted_otp_notification_single_line_text">Unlock to view code</string>
 
     <!-- Content description for contextual education dialog [CHAR LIMIT=NONE] -->
     <string name="contextual_education_dialog_title">Contextual education</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 8f808d3..8a6b3af 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -186,7 +186,7 @@
     </style>
 
     <style name="TextAppearance.QS.Status.Build">
-        <item name="android:textColor">?attr/onSurfaceVariant</item>
+        <item name="android:textColor">?attr/onShadeInactiveVariant</item>
     </style>
 
     <style name="TextAppearance.DeviceManagementDialog.Title" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"/>
@@ -828,23 +828,23 @@
         <item name="android:elevation">10dp</item>
     </style>
 
-    <!-- Media controls always have light background -->
+    <!-- Media controls always have dark background -->
     <style name="MediaPlayer" parent="@*android:style/Theme.DeviceDefault.Light">
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
-        <item name="android:backgroundTint">@color/material_dynamic_secondary95</item>
+        <item name="android:textColor">@color/media_on_background</item>
+        <item name="android:backgroundTint">@android:color/system_on_surface_light</item>
     </style>
 
     <style name="MediaPlayer.ProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal">
         <item name="android:thumb">@drawable/media_seekbar_thumb</item>
-        <item name="android:thumbTint">?android:attr/textColorPrimary</item>
+        <item name="android:thumbTint">@color/media_on_background</item>
         <item name="android:progressDrawable">@drawable/media_squiggly_progress</item>
-        <item name="android:progressTint">?android:attr/textColorPrimary</item>
-        <item name="android:progressBackgroundTint">?android:attr/textColorTertiary</item>
+        <item name="android:progressTint">@color/media_on_background</item>
+        <item name="android:progressBackgroundTint">@android:color/system_primary_dark</item>
         <item name="android:splitTrack">false</item>
     </style>
 
     <style name="MediaPlayer.Subtitle" parent="MediaPlayer">
-        <item name="android:textColor">?android:attr/textColorSecondary</item>
+        <item name="android:textColor">@color/media_on_background</item>
     </style>
 
     <style name="MediaPlayer.ScrubbingTime">
@@ -853,21 +853,10 @@
         <item name="android:gravity">center</item>
     </style>
 
-    <style name="MediaPlayer.Action" parent="@android:style/Widget.Material.Button.Borderless.Small">
-        <item name="android:background">@drawable/qs_media_light_source</item>
-        <item name="android:tint">?android:attr/textColorPrimary</item>
-        <item name="android:stateListAnimator">@anim/media_button_state_list_animator</item>
-        <item name="android:paddingTop">8dp</item>
-        <item name="android:paddingStart">12dp</item>
-        <item name="android:paddingEnd">12dp</item>
-        <item name="android:paddingBottom">16dp</item>
-        <item name="android:scaleType">centerInside</item>
-    </style>
-
     <style name="MediaPlayer.SessionAction"
         parent="@android:style/Widget.Material.Button.Borderless.Small">
         <item name="android:background">@drawable/qs_media_light_source</item>
-        <item name="android:tint">?android:attr/textColorPrimary</item>
+        <item name="android:tint">@color/media_on_background</item>
         <item name="android:paddingTop">12dp</item>
         <item name="android:paddingStart">12dp</item>
         <item name="android:paddingEnd">12dp</item>
@@ -886,8 +875,8 @@
 
     <style name="MediaPlayer.OutlineButton">
         <item name="android:background">@drawable/qs_media_outline_button</item>
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
-        <item name="android:backgroundTint">@color/media_player_outline_button_bg</item>
+        <item name="android:textColor">@color/media_on_background</item>
+        <item name="android:backgroundTint">@android:color/system_primary_dark</item>
         <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
         <item name="android:layout_gravity">center</item>
         <item name="android:singleLine">true</item>
@@ -895,8 +884,8 @@
 
     <style name="MediaPlayer.SolidButton">
         <item name="android:backgroundTint">@color/media_player_solid_button_bg</item>
-        <item name="android:tint">?android:attr/colorPrimary</item>
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
+        <item name="android:tint">@android:color/system_on_primary_dark</item>
+        <item name="android:textColor">@android:color/system_on_primary_dark</item>
     </style>
 
     <style name="MediaPlayer.Recommendation"/>
diff --git a/packages/SystemUI/res/xml/volume_dialog_constraint_set.xml b/packages/SystemUI/res/xml/volume_dialog_constraint_set.xml
deleted file mode 100644
index dcc5d4f..0000000
--- a/packages/SystemUI/res/xml/volume_dialog_constraint_set.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ConstraintSet xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:id="@+id/volume_dialog_constraint_set">
-
-    <Constraint
-        android:id="@id/volume_dialog_main_slider_container"
-        android:layout_width="@dimen/volume_dialog_slider_width"
-        android:layout_height="0dp"
-        android:layout_marginTop="@dimen/volume_dialog_slider_vertical_margin"
-        android:layout_marginEnd="@dimen/volume_dialog_window_margin"
-        android:layout_marginBottom="@dimen/volume_dialog_slider_vertical_margin"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHeight_max="@dimen/volume_dialog_slider_height"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.5" />
-</ConstraintSet>
\ No newline at end of file
diff --git a/packages/SystemUI/res/xml/volume_dialog_half_folded_constraint_set.xml b/packages/SystemUI/res/xml/volume_dialog_half_folded_constraint_set.xml
deleted file mode 100644
index 3a5e41d..0000000
--- a/packages/SystemUI/res/xml/volume_dialog_half_folded_constraint_set.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ConstraintSet xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:id="@+id/volume_dialog_half_folded_constraint_set">
-
-    <Constraint
-        android:id="@id/volume_dialog_main_slider_container"
-        android:layout_width="@dimen/volume_dialog_slider_width"
-        android:layout_height="0dp"
-        android:layout_marginTop="@dimen/volume_dialog_slider_vertical_margin"
-        android:layout_marginEnd="@dimen/volume_dialog_window_margin"
-        android:layout_marginBottom="@dimen/volume_dialog_slider_vertical_margin"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHeight_max="@dimen/volume_dialog_slider_height"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="@fraction/volume_dialog_half_opened_bias" />
-</ConstraintSet>
\ No newline at end of file
diff --git a/packages/SystemUI/res/xml/volume_dialog_scene.xml b/packages/SystemUI/res/xml/volume_dialog_scene.xml
deleted file mode 100644
index b813474..0000000
--- a/packages/SystemUI/res/xml/volume_dialog_scene.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ 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.
-  -->
-
-<MotionScene xmlns:motion="http://schemas.android.com/apk/res-auto">
-
-    <Transition
-        motion:autoTransition="none"
-        motion:constraintSetEnd="@id/volume_dialog_half_folded_constraint_set"
-        motion:constraintSetStart="@id/volume_dialog_constraint_set"
-        motion:duration="150" />
-
-    <Include motion:constraintSet="@xml/volume_dialog_constraint_set" />
-    <Include motion:constraintSet="@xml/volume_dialog_half_folded_constraint_set" />
-</MotionScene>
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 42896a4..b2cb357 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -167,7 +167,7 @@
 
         public void setHeight(float h) {
             if (DEBUG_SCALE) Log.v(TAG, "SetHeight: setting to " + h);
-            mView.setActualHeight((int) h);
+            mView.setFinalActualHeight((int) h);
             mCurrentHeight = h;
         }
         public float getHeight() {
diff --git a/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS b/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
index 429b4b0..329aa07 100644
--- a/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
+++ b/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
@@ -3,6 +3,5 @@
 dupin@google.com
 linyuh@google.com
 pauldpong@google.com
-praveenj@google.com
 vicliang@google.com
 yuklimko@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index b653711..4c8a8f1 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -33,6 +33,7 @@
 import android.hardware.biometrics.BiometricAuthenticator.Modality;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricManager.Authenticators;
+import android.hardware.biometrics.BiometricPrompt;
 import android.hardware.biometrics.PromptInfo;
 import android.hardware.face.FaceSensorPropertiesInternal;
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -100,7 +101,7 @@
  */
 @Deprecated
 public class AuthContainerView extends LinearLayout
-        implements AuthDialog, WakefulnessLifecycle.Observer, CredentialView.Host {
+        implements WakefulnessLifecycle.Observer, CredentialView.Host {
 
     private static final String TAG = "AuthContainerView";
 
@@ -158,12 +159,11 @@
     private final Set<Integer> mFailedModalities = new HashSet<Integer>();
     private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
 
-    private final @Background DelayableExecutor mBackgroundExecutor;
 
     private final MSDLPlayer mMSDLPlayer;
 
     // Non-null only if the dialog is in the act of dismissing and has not sent the reason yet.
-    @Nullable @AuthDialogCallback.DismissedReason private Integer mPendingCallbackReason;
+    @Nullable @BiometricPrompt.DismissedReason private Integer mPendingCallbackReason;
     // HAT received from LockSettingsService when credential is verified.
     @Nullable private byte[] mCredentialAttestation;
 
@@ -188,18 +188,18 @@
     final class BiometricCallback implements Spaghetti.Callback {
         @Override
         public void onAuthenticated() {
-            animateAway(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED);
+            animateAway(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRM_NOT_REQUIRED);
         }
 
         @Override
         public void onUserCanceled() {
             sendEarlyUserCanceled();
-            animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
+            animateAway(BiometricPrompt.DISMISSED_REASON_USER_CANCEL);
         }
 
         @Override
         public void onButtonNegative() {
-            animateAway(AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE);
+            animateAway(BiometricPrompt.DISMISSED_REASON_NEGATIVE);
         }
 
         @Override
@@ -210,12 +210,12 @@
 
         @Override
         public void onContentViewMoreOptionsButtonPressed() {
-            animateAway(AuthDialogCallback.DISMISSED_BUTTON_CONTENT_VIEW_MORE_OPTIONS);
+            animateAway(BiometricPrompt.DISMISSED_REASON_CONTENT_VIEW_MORE_OPTIONS);
         }
 
         @Override
         public void onError() {
-            animateAway(AuthDialogCallback.DISMISSED_ERROR);
+            animateAway(BiometricPrompt.DISMISSED_REASON_ERROR);
         }
 
         @Override
@@ -234,20 +234,20 @@
 
         @Override
         public void onAuthenticatedAndConfirmed() {
-            animateAway(AuthDialogCallback.DISMISSED_BUTTON_POSITIVE);
+            animateAway(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRMED);
         }
     }
 
     @Override
     public void onCredentialMatched(@NonNull byte[] attestation) {
         mCredentialAttestation = attestation;
-        animateAway(AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED);
+        animateAway(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED);
     }
 
     @Override
     public void onCredentialAborted() {
         sendEarlyUserCanceled();
-        animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
+        animateAway(BiometricPrompt.DISMISSED_REASON_USER_CANCEL);
     }
 
     @Override
@@ -277,7 +277,7 @@
                         com.android.settingslib.R.string.failed_attempts_now_wiping_dialog_dismiss,
                         null /* OnClickListener */)
                 .setOnDismissListener(
-                        dialog -> animateAway(AuthDialogCallback.DISMISSED_ERROR))
+                        dialog -> animateAway(BiometricPrompt.DISMISSED_REASON_ERROR))
                 .create();
         alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
         alertDialog.show();
@@ -349,7 +349,6 @@
 
         mPanelView = mLayout.findViewById(R.id.panel);
         mPanelController = new AuthPanelController(mContext, mPanelView);
-        mBackgroundExecutor = bgExecutor;
         mInteractionJankMonitor = jankMonitor;
         mCredentialViewModelProvider = credentialViewModelProvider;
 
@@ -394,7 +393,7 @@
     @VisibleForTesting
     public void onBackInvoked() {
         sendEarlyUserCanceled();
-        animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
+        animateAway(BiometricPrompt.DISMISSED_REASON_USER_CANCEL);
     }
 
     void sendEarlyUserCanceled() {
@@ -402,7 +401,6 @@
                 BiometricConstants.BIOMETRIC_SYSTEM_EVENT_EARLY_USER_CANCEL, getRequestId());
     }
 
-    @Override
     public boolean isAllowDeviceCredentials() {
         return Utils.isDeviceCredentialAllowed(mConfig.mPromptInfo);
     }
@@ -450,7 +448,6 @@
         mPanelController.setContainerDimensions(getMeasuredWidth(), getMeasuredHeight());
     }
 
-    @Override
     public void onOrientationChanged() {
     }
 
@@ -538,10 +535,9 @@
 
     @Override
     public void onStartedGoingToSleep() {
-        animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
+        animateAway(BiometricPrompt.DISMISSED_REASON_USER_CANCEL);
     }
 
-    @Override
     public void show(WindowManager wm) {
         wm.addView(this, getLayoutParams(mWindowToken, mConfig.mPromptInfo.getTitle()));
     }
@@ -559,7 +555,6 @@
         }
     }
 
-    @Override
     public void dismissWithoutCallback(boolean animate) {
         if (animate) {
             animateAway(false /* sendReason */, 0 /* reason */);
@@ -569,12 +564,10 @@
         }
     }
 
-    @Override
     public void dismissFromSystemServer() {
         animateAway(false /* sendReason */, 0 /* reason */);
     }
 
-    @Override
     public void onAuthenticationSucceeded(@Modality int modality) {
         if (mBiometricView != null) {
             mBiometricView.onAuthenticationSucceeded(modality);
@@ -583,7 +576,6 @@
         }
     }
 
-    @Override
     public void onAuthenticationFailed(@Modality int modality, String failureReason) {
         if (mBiometricView != null) {
             mFailedModalities.add(modality);
@@ -593,7 +585,6 @@
         }
     }
 
-    @Override
     public void onHelp(@Modality int modality, String help) {
         if (mBiometricView != null) {
             mBiometricView.onHelp(modality, help);
@@ -602,7 +593,6 @@
         }
     }
 
-    @Override
     public void onError(@Modality int modality, String error) {
         if (mBiometricView != null) {
             mBiometricView.onError(modality, error);
@@ -611,7 +601,6 @@
         }
     }
 
-    @Override
     public void onPointerDown() {
         if (mBiometricView != null) {
             if (mFailedModalities.contains(TYPE_FACE)) {
@@ -624,22 +613,18 @@
         }
     }
 
-    @Override
     public String getOpPackageName() {
         return mConfig.mOpPackageName;
     }
 
-    @Override
     public String getClassNameIfItIsConfirmDeviceCredentialActivity() {
         return  mConfig.mPromptInfo.getClassNameIfItIsConfirmDeviceCredentialActivity();
     }
 
-    @Override
     public long getRequestId() {
         return mConfig.mRequestId;
     }
 
-    @Override
     public void animateToCredentialUI(boolean isError) {
         if (mBiometricView != null) {
             mBiometricView.startTransitionToCredentialUI(isError);
@@ -648,11 +633,11 @@
         }
     }
 
-    void animateAway(@AuthDialogCallback.DismissedReason int reason) {
+    void animateAway(@BiometricPrompt.DismissedReason int reason) {
         animateAway(true /* sendReason */, reason);
     }
 
-    private void animateAway(boolean sendReason, @AuthDialogCallback.DismissedReason int reason) {
+    private void animateAway(boolean sendReason, @BiometricPrompt.DismissedReason int reason) {
         if (mContainerState == STATE_ANIMATING_IN) {
             Log.w(TAG, "startDismiss(): waiting for onDialogAnimatedIn");
             mContainerState = STATE_PENDING_DISMISS;
@@ -732,7 +717,7 @@
     private void onDialogAnimatedIn() {
         if (mContainerState == STATE_PENDING_DISMISS) {
             Log.d(TAG, "onDialogAnimatedIn(): mPendingDismissDialog=true, dismissing now");
-            animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
+            animateAway(BiometricPrompt.DISMISSED_REASON_USER_CANCEL);
             return;
         }
         if (mContainerState == STATE_ANIMATING_OUT || mContainerState == STATE_GONE) {
@@ -748,7 +733,6 @@
         }
     }
 
-    @Override
     public PromptViewModel getViewModel() {
         return mPromptViewModel;
     }
@@ -776,7 +760,6 @@
         return lp;
     }
 
-    @Override
     public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
         pw.println("    isAttachedToWindow=" + isAttachedToWindow());
         pw.println("    containerState=" + mContainerState);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
index eee5f9e..68a2820 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
@@ -163,7 +163,7 @@
     // TODO: These should just be saved from onSaveState
     private SomeArgs mCurrentDialogArgs;
     @VisibleForTesting
-    AuthDialog mCurrentDialog;
+    AuthContainerView mCurrentDialog;
 
     @NonNull private final WindowManager mWindowManager;
     @NonNull private final DisplayManager mDisplayManager;
@@ -222,7 +222,7 @@
         closeDialog(BiometricPrompt.DISMISSED_REASON_USER_CANCEL, reasonString);
     }
 
-    private void closeDialog(@DismissedReason int reason, String reasonString) {
+    private void closeDialog(@BiometricPrompt.DismissedReason int reason, String reasonString) {
         if (isShowing()) {
             Log.i(TAG, "Close BP, reason :" + reasonString);
             mCurrentDialog.dismissWithoutCallback(true /* animate */);
@@ -511,60 +511,14 @@
     }
 
     @Override
-    public void onDismissed(@DismissedReason int reason,
-                            @Nullable byte[] credentialAttestation, long requestId) {
-
+    public void onDismissed(@BiometricPrompt.DismissedReason int reason,
+            @Nullable byte[] credentialAttestation, long requestId) {
         if (mCurrentDialog != null && requestId != mCurrentDialog.getRequestId()) {
             Log.w(TAG, "requestId doesn't match, skip onDismissed");
             return;
         }
 
-        switch (reason) {
-            case AuthDialogCallback.DISMISSED_USER_CANCELED:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_USER_CANCEL,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_NEGATIVE,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_BUTTON_POSITIVE:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRMED,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED:
-                sendResultAndCleanUp(
-                        BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRM_NOT_REQUIRED,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_ERROR:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_ERROR,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_BY_SYSTEM_SERVER:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_SERVER_REQUESTED,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_CREDENTIAL_AUTHENTICATED:
-                sendResultAndCleanUp(BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED,
-                        credentialAttestation);
-                break;
-
-            case AuthDialogCallback.DISMISSED_BUTTON_CONTENT_VIEW_MORE_OPTIONS:
-                sendResultAndCleanUp(
-                        BiometricPrompt.DISMISSED_REASON_CONTENT_VIEW_MORE_OPTIONS,
-                        credentialAttestation);
-                break;
-            default:
-                Log.e(TAG, "Unhandled reason: " + reason);
-                break;
-        }
+        sendResultAndCleanUp(reason, credentialAttestation);
     }
 
     @Override
@@ -699,7 +653,7 @@
         mUdfpsController.onAodInterrupt(screenX, screenY, major, minor);
     }
 
-    private void sendResultAndCleanUp(@DismissedReason int reason,
+    private void sendResultAndCleanUp(@BiometricPrompt.DismissedReason int reason,
             @Nullable byte[] credentialAttestation) {
         if (mReceiver == null) {
             Log.e(TAG, "sendResultAndCleanUp: Receiver is null");
@@ -1244,7 +1198,7 @@
         final long requestId = args.argl2;
 
         // Create a new dialog but do not replace the current one yet.
-        final AuthDialog newDialog = buildDialog(
+        final AuthContainerView newDialog = buildDialog(
                 mBackgroundExecutor,
                 promptInfo,
                 requireConfirmation,
@@ -1327,7 +1281,7 @@
         return mContext.createDisplayContext(display).getSystemService(WindowManager.class);
     }
 
-    private void onDialogDismissed(@DismissedReason int reason) {
+    private void onDialogDismissed(@BiometricPrompt.DismissedReason int reason) {
         if (DEBUG) Log.d(TAG, "onDialogDismissed: " + reason);
         if (mCurrentDialog == null) {
             Log.w(TAG, "Dialog already dismissed");
@@ -1361,7 +1315,7 @@
         }
     }
 
-    protected AuthDialog buildDialog(@Background DelayableExecutor bgExecutor,
+    protected AuthContainerView buildDialog(@Background DelayableExecutor bgExecutor,
             PromptInfo promptInfo, boolean requireConfirmation, int userId, int[] sensorIds,
             String opPackageName, boolean skipIntro, long operationId, long requestId,
             @NonNull WakefulnessLifecycle wakefulnessLifecycle,
@@ -1389,7 +1343,7 @@
 
     @Override
     public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
-        final AuthDialog dialog = mCurrentDialog;
+        final AuthContainerView dialog = mCurrentDialog;
         pw.println("  mCachedDisplayInfo=" + mCachedDisplayInfo);
         pw.println("  mScaleFactor=" + mScaleFactor);
         pw.println("  fingerprintSensorLocationInNaturalOrientation="
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialog.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialog.java
deleted file mode 100644
index 8611916..0000000
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialog.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.biometrics;
-
-import android.hardware.biometrics.BiometricAuthenticator.Modality;
-import android.view.WindowManager;
-
-import com.android.systemui.Dumpable;
-import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel;
-
-/**
- * Interface for the biometric dialog UI.
- *
- * TODO(b/287311775): remove along with legacy controller once flag is removed
- */
-@Deprecated
-public interface AuthDialog extends Dumpable {
-
-    /**
-     * Parameters used when laying out {@link AuthBiometricView}, its subclasses, and
-     * {@link AuthPanelController}.
-     */
-    class LayoutParams {
-        public final int mMediumHeight;
-        public final int mMediumWidth;
-
-        public LayoutParams(int mediumWidth, int mediumHeight) {
-            mMediumWidth = mediumWidth;
-            mMediumHeight = mediumHeight;
-        }
-    }
-
-    /**
-     * Show the dialog.
-     * @param wm
-     */
-    void show(WindowManager wm);
-
-    /**
-     * Dismiss the dialog without sending a callback.
-     */
-    void dismissWithoutCallback(boolean animate);
-
-    /**
-     * Dismiss the dialog. Animate away.
-     */
-    void dismissFromSystemServer();
-
-    /**
-     * Biometric authenticated. May be pending user confirmation, or completed.
-     */
-    void onAuthenticationSucceeded(@Modality int modality);
-
-    /**
-     * Authentication failed (reject, timeout). Dialog stays showing.
-     * @param modality sensor modality that triggered the error
-     * @param failureReason message
-     */
-    void onAuthenticationFailed(@Modality int modality, String failureReason);
-
-    /**
-     * Authentication rejected, or help message received.
-     * @param modality sensor modality that triggered the help message
-     * @param help message
-     */
-    void onHelp(@Modality int modality, String help);
-
-    /**
-     * Authentication failed. Dialog going away.
-     * @param modality sensor modality that triggered the error
-     * @param error message
-     */
-    void onError(@Modality int modality, String error);
-
-    /** UDFPS pointer down event. */
-    void onPointerDown();
-
-    /**
-     * Get the client's package name
-     */
-    String getOpPackageName();
-
-    /**
-     * Get the class name of ConfirmDeviceCredentialActivity. Returns null if the direct caller is
-     * not ConfirmDeviceCredentialActivity.
-     */
-    String getClassNameIfItIsConfirmDeviceCredentialActivity();
-
-    /** The requestId of the underlying operation within the framework. */
-    long getRequestId();
-
-    /**
-     * Animate to credential UI. Typically called after biometric is locked out.
-     */
-    void animateToCredentialUI(boolean isError);
-
-    /**
-     * @return true if device credential is allowed.
-     */
-    boolean isAllowDeviceCredentials();
-
-    /**
-     * Called when the device's orientation changed and the dialog may need to do another
-     * layout. This is most relevant to UDFPS since configuration changes are not sent by
-     * the framework in equivalent cases (landscape to reverse landscape) but the dialog
-     * must remain fixed on the physical sensor location.
-     */
-    void onOrientationChanged();
-
-    PromptViewModel getViewModel();
-}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java
index 024c6ea..31c63d3 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthDialogCallback.java
@@ -16,40 +16,20 @@
 
 package com.android.systemui.biometrics;
 
-import android.annotation.IntDef;
 import android.annotation.Nullable;
+import android.hardware.biometrics.BiometricPrompt;
 
 /**
  * Callback interface for dialog views. These should be implemented by the controller (e.g.
  * FingerprintDialogImpl) and passed into their views (e.g. FingerprintDialogView).
  */
 public interface AuthDialogCallback {
-
-    int DISMISSED_USER_CANCELED = 1;
-    int DISMISSED_BUTTON_NEGATIVE = 2;
-    int DISMISSED_BUTTON_POSITIVE = 3;
-    int DISMISSED_BIOMETRIC_AUTHENTICATED = 4;
-    int DISMISSED_ERROR = 5;
-    int DISMISSED_BY_SYSTEM_SERVER = 6;
-    int DISMISSED_CREDENTIAL_AUTHENTICATED = 7;
-    int DISMISSED_BUTTON_CONTENT_VIEW_MORE_OPTIONS = 8;
-
-    @IntDef({DISMISSED_USER_CANCELED,
-            DISMISSED_BUTTON_NEGATIVE,
-            DISMISSED_BUTTON_POSITIVE,
-            DISMISSED_BIOMETRIC_AUTHENTICATED,
-            DISMISSED_ERROR,
-            DISMISSED_BY_SYSTEM_SERVER,
-            DISMISSED_CREDENTIAL_AUTHENTICATED,
-            DISMISSED_BUTTON_CONTENT_VIEW_MORE_OPTIONS})
-    @interface DismissedReason {}
-
     /**
      * Invoked when the dialog is dismissed
-     * @param reason
+     * @param reason - the {@link BiometricPrompt.DismissedReason} for dismissing
      * @param credentialAttestation the HAT received from LockSettingsService upon verification
      */
-    void onDismissed(@DismissedReason int reason,
+    void onDismissed(@BiometricPrompt.DismissedReason int reason,
                      @Nullable byte[] credentialAttestation, long requestId);
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/BiometricNotificationDialogFactory.java b/packages/SystemUI/src/com/android/systemui/biometrics/BiometricNotificationDialogFactory.java
index 4ac5a12..f7efaba 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/BiometricNotificationDialogFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/BiometricNotificationDialogFactory.java
@@ -32,6 +32,7 @@
 import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.res.R;
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
 import com.android.systemui.statusbar.phone.SystemUIDialog;
 
 import javax.inject.Inject;
@@ -44,6 +45,7 @@
     private static final String TAG = "BiometricNotificationDialogFactory";
     private final Resources mResources;
     private final SystemUIDialog.Factory mSystemUIDialogFactory;
+    private final ShadeDialogContextInteractor mDialogContextInteractor;
     @Nullable private final FingerprintManager mFingerprintManager;
     @Nullable private final FaceManager mFaceManager;
 
@@ -51,10 +53,12 @@
     BiometricNotificationDialogFactory(
             @Main Resources resources,
             SystemUIDialog.Factory systemUIDialogFactory,
+            ShadeDialogContextInteractor shadeDialogContextInteractor,
             @Nullable FingerprintManager fingerprintManager,
             @Nullable FaceManager faceManager) {
         mResources = resources;
         mSystemUIDialogFactory = systemUIDialogFactory;
+        mDialogContextInteractor = shadeDialogContextInteractor;
         mFingerprintManager = fingerprintManager;
         mFaceManager = faceManager;
     }
@@ -62,7 +66,8 @@
     Dialog createReenrollDialog(
             int userId, ActivityStarter activityStarter, BiometricSourceType biometricSourceType,
             boolean isReenrollForced) {
-        SystemUIDialog sysuiDialog = mSystemUIDialogFactory.create();
+        SystemUIDialog sysuiDialog =
+                mSystemUIDialogFactory.create(mDialogContextInteractor.getContext());
         if (biometricSourceType == BiometricSourceType.FACE) {
             sysuiDialog.setTitle(mResources.getString(R.string.face_re_enroll_dialog_title));
             sysuiDialog.setMessage(mResources.getString(R.string.face_re_enroll_dialog_content));
@@ -90,7 +95,8 @@
     }
 
     private Dialog createReenrollFailureDialog(BiometricSourceType biometricType) {
-        final SystemUIDialog sysuiDialog = mSystemUIDialogFactory.create();
+        final SystemUIDialog sysuiDialog =
+                mSystemUIDialogFactory.create(mDialogContextInteractor.getContext());
 
         if (biometricType == BiometricSourceType.FACE) {
             sysuiDialog.setMessage(mResources.getString(
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
index fd11fa5..88694ae 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
@@ -94,6 +94,7 @@
 import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.power.domain.interactor.PowerInteractor;
+import com.android.systemui.shade.ShadeDisplayAware;
 import com.android.systemui.shade.domain.interactor.ShadeInteractor;
 import com.android.systemui.shared.system.SysUiStatsLog;
 import com.android.systemui.statusbar.VibratorHelper;
@@ -656,9 +657,9 @@
     }
 
     @Inject
-    public UdfpsController(@NonNull Context context,
+    public UdfpsController(@NonNull @Main Context context,
             @NonNull Execution execution,
-            @NonNull LayoutInflater inflater,
+            @NonNull @ShadeDisplayAware LayoutInflater inflater,
             @Nullable FingerprintManager fingerprintManager,
             @NonNull ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
             @NonNull StatusBarStateController statusBarStateController,
@@ -676,7 +677,7 @@
             @NonNull KeyguardStateController keyguardStateController,
             @NonNull DisplayManager displayManager,
             @Main Handler mainHandler,
-            @NonNull ConfigurationController configurationController,
+            @NonNull @Main ConfigurationController configurationController,
             @NonNull SystemClock systemClock,
             @NonNull UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
             @NonNull SystemUIDialogManager dialogManager,
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt
index eebcf0b..576acd2 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt
@@ -383,6 +383,11 @@
 
                     actionIcon.setImageResource(item.actionIconRes)
                     actionIcon.drawable?.setTint(tintColor)
+                    actionIconView.contentDescription =
+                        resources.getString(
+                            R.string.accessibility_bluetooth_device_settings_gear_with_name,
+                            item.deviceName,
+                        )
 
                     divider.setBackgroundColor(tintColor)
 
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
index 3c68e3a..a25faa3 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java
@@ -56,6 +56,7 @@
 import com.android.systemui.recents.Recents;
 import com.android.systemui.recents.RecentsImplementation;
 import com.android.systemui.recents.RecentsModule;
+import com.android.systemui.rotationlock.DeviceStateAutoRotateModule;
 import com.android.systemui.rotationlock.RotationLockModule;
 import com.android.systemui.rotationlock.RotationLockNewModule;
 import com.android.systemui.scene.SceneContainerFrameworkModule;
@@ -132,6 +133,7 @@
         CollapsedStatusBarFragmentStartableModule.class,
         ConnectingDisplayViewModel.StartableModule.class,
         DefaultBlueprintModule.class,
+        DeviceStateAutoRotateModule.class,
         EmergencyGestureModule.class,
         GestureModule.class,
         HeadsUpModule.class,
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index fe5a82c..f8cf6b0 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -105,6 +105,7 @@
 import com.android.systemui.recents.Recents;
 import com.android.systemui.recordissue.RecordIssueModule;
 import com.android.systemui.retail.RetailModeModule;
+import com.android.systemui.rotationlock.DeviceStateAutoRotateModule.BoundsDeviceStateAutoRotateModule;
 import com.android.systemui.scene.shared.model.SceneContainerConfig;
 import com.android.systemui.scene.shared.model.SceneDataSource;
 import com.android.systemui.scene.shared.model.SceneDataSourceDelegator;
@@ -145,6 +146,7 @@
 import com.android.systemui.statusbar.phone.ConfigurationControllerModule;
 import com.android.systemui.statusbar.phone.LetterboxModule;
 import com.android.systemui.statusbar.pipeline.dagger.StatusBarPipelineModule;
+import com.android.systemui.statusbar.policy.DeviceStateRotationLockSettingController;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.statusbar.policy.PolicyModule;
 import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController;
@@ -391,6 +393,11 @@
     @BindsOptionalOf
     abstract LockscreenContent optionalLockscreenContent();
 
+    @BindsOptionalOf
+    @BoundsDeviceStateAutoRotateModule
+    abstract Optional<DeviceStateRotationLockSettingController>
+            optionalDeviceStateRotationLockSettingController();
+
     @SysUISingleton
     @Binds
     abstract SystemClock bindSystemClock(SystemClockImpl systemClock);
@@ -466,6 +473,16 @@
         return new SceneDataSourceDelegator(applicationScope, config);
     }
 
+    @Provides
+    @SysUISingleton
+    static Optional<DeviceStateRotationLockSettingController>
+            provideDeviceStateRotationLockSettingController(
+            @BoundsDeviceStateAutoRotateModule
+            Optional<Optional<DeviceStateRotationLockSettingController>> optionalOfOptional
+    ) {
+        return optionalOfOptional.orElseGet(Optional::empty);
+    }
+
     @Binds
     abstract SceneDataSource bindSceneDataSource(SceneDataSourceDelegator delegator);
 
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
index bd3e771..7d2492a 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/TouchpadTutorialScreensProvider.kt
@@ -20,7 +20,9 @@
 
 interface TouchpadTutorialScreensProvider {
 
-    @Composable fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit)
+    @Composable
+    fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean)
 
-    @Composable fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit)
+    @Composable
+    fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit, isAutoProceed: Boolean)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
index 8cbcba2..ee875c4 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/ActionTutorialContent.kt
@@ -137,6 +137,7 @@
             onDoneButtonClicked = onDoneButtonClicked,
             modifier = Modifier.padding(horizontal = 60.dp).graphicsLayer { alpha = buttonAlpha },
             enabled = actionState is Finished,
+            isNext = config.hasNextButton,
         )
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt
index 202dba3..d92e48e 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialComponents.kt
@@ -32,6 +32,7 @@
     onDoneButtonClicked: () -> Unit,
     modifier: Modifier = Modifier,
     enabled: Boolean = true,
+    isNext: Boolean = false,
 ) {
     Row(
         horizontalArrangement = Arrangement.End,
@@ -39,7 +40,10 @@
         modifier = modifier.fillMaxWidth(),
     ) {
         Button(onClick = onDoneButtonClicked, enabled = enabled) {
-            Text(stringResource(R.string.touchpad_tutorial_done_button))
+            val text =
+                if (isNext) R.string.touchpad_tutorial_next_button
+                else R.string.touchpad_tutorial_done_button
+            Text(stringResource(text))
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
index eda23a5..65adc14 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/composable/TutorialScreenConfig.kt
@@ -28,6 +28,7 @@
     val colors: Colors,
     val strings: Strings,
     val animations: Animations,
+    val hasNextButton: Boolean = false,
 ) {
 
     data class Colors(
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
index 639e9b1..086705f 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/ui/view/KeyboardTouchpadTutorialActivity.kt
@@ -93,17 +93,29 @@
                 }
             }
         }
+        val entryPointExtra = intent.getStringExtra(INTENT_TUTORIAL_ENTRY_POINT_KEY)
+        val isAutoProceed =
+            if (entryPointExtra == null) true
+            else entryPointExtra.equals(INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER)
+        val scopeExtra = intent.getStringExtra(INTENT_TUTORIAL_SCOPE_KEY)
+        val isScopeAll = INTENT_TUTORIAL_SCOPE_ALL.equals(scopeExtra)
         setContent {
-            PlatformTheme { KeyboardTouchpadTutorialContainer(vm, touchpadTutorialScreensProvider) }
+            PlatformTheme {
+                KeyboardTouchpadTutorialContainer(
+                    vm,
+                    touchpadTutorialScreensProvider,
+                    isAutoProceed,
+                    isScopeAll,
+                )
+            }
         }
         if (savedInstanceState == null) {
             logger.logOpenTutorial(TutorialContext.KEYBOARD_TOUCHPAD_TUTORIAL)
 
-            val entryPointExtra = intent.getStringExtra(INTENT_TUTORIAL_ENTRY_POINT_KEY)
             val tutorialTypeExtra = intent.getStringExtra(INTENT_TUTORIAL_SCOPE_KEY)
             metricsLogger.logPeripheralTutorialLaunched(entryPointExtra, tutorialTypeExtra)
             // We only update launched info when the tutorial is triggered by the scheduler
-            if (entryPointExtra.equals(INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER))
+            if (INTENT_TUTORIAL_ENTRY_POINT_SCHEDULER.equals(entryPointExtra))
                 updateLaunchInfo(tutorialTypeExtra)
         }
     }
@@ -124,17 +136,27 @@
 fun KeyboardTouchpadTutorialContainer(
     vm: KeyboardTouchpadTutorialViewModel,
     touchpadScreens: Optional<TouchpadTutorialScreensProvider>,
+    isAutoProceed: Boolean = false,
+    isScopeAll: Boolean = false,
 ) {
     val activeScreen by vm.screen.collectAsStateWithLifecycle(STARTED)
     when (activeScreen) {
         BACK_GESTURE ->
             touchpadScreens
                 .get()
-                .BackGesture(onDoneButtonClicked = vm::onDoneButtonClicked, onBack = vm::onBack)
+                .BackGesture(
+                    onDoneButtonClicked = vm::onDoneButtonClicked,
+                    onBack = vm::onBack,
+                    isAutoProceed = isAutoProceed,
+                )
         HOME_GESTURE ->
             touchpadScreens
                 .get()
-                .HomeGesture(onDoneButtonClicked = vm::onDoneButtonClicked, onBack = vm::onBack)
+                .HomeGesture(
+                    onDoneButtonClicked = vm::onDoneButtonClicked,
+                    onBack = vm::onBack,
+                    isAutoProceed = isScopeAll,
+                )
         ACTION_KEY ->
             ActionKeyTutorialScreen(
                 onDoneButtonClicked = vm::onDoneButtonClicked,
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt
index 0908e3b..a779c4c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/InputGestureMaps.kt
@@ -31,7 +31,6 @@
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MINIMIZE_FREEFORM_WINDOW
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MOVE_TO_NEXT_DISPLAY
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION
-import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_SHORTCUT_HELPER
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS
 import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER
@@ -67,7 +66,6 @@
             KEY_GESTURE_TYPE_OPEN_SHORTCUT_HELPER to System,
             KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL to System,
             KEY_GESTURE_TYPE_LOCK_SCREEN to System,
-            KEY_GESTURE_TYPE_OPEN_NOTES to System,
             KEY_GESTURE_TYPE_LAUNCH_SYSTEM_SETTINGS to System,
             KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to System,
             KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to System,
@@ -113,7 +111,6 @@
                 R.string.shortcut_helper_category_system_controls,
             KEY_GESTURE_TYPE_LOCK_SCREEN to R.string.shortcut_helper_category_system_controls,
             KEY_GESTURE_TYPE_ALL_APPS to R.string.shortcut_helper_category_system_controls,
-            KEY_GESTURE_TYPE_OPEN_NOTES to R.string.shortcut_helper_category_system_apps,
             KEY_GESTURE_TYPE_LAUNCH_SYSTEM_SETTINGS to
                 R.string.shortcut_helper_category_system_apps,
             KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.shortcut_helper_category_system_apps,
@@ -173,7 +170,6 @@
                 R.string.group_system_access_notification_shade,
             KEY_GESTURE_TYPE_LOCK_SCREEN to R.string.group_system_lock_screen,
             KEY_GESTURE_TYPE_ALL_APPS to R.string.group_system_access_all_apps_search,
-            KEY_GESTURE_TYPE_OPEN_NOTES to R.string.group_system_quick_memo,
             KEY_GESTURE_TYPE_LAUNCH_SYSTEM_SETTINGS to R.string.group_system_access_system_settings,
             KEY_GESTURE_TYPE_LAUNCH_ASSISTANT to R.string.group_system_access_google_assistant,
             KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT to
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt
index 8bed853..a7375f7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/SystemShortcutsSource.kt
@@ -178,11 +178,6 @@
 
     private fun systemAppsShortcuts() =
         listOf(
-            // Pull up Notes app for quick memo:
-            //  - Meta + Ctrl + N
-            shortcutInfo(resources.getString(R.string.group_system_quick_memo)) {
-                command(META_META_ON or META_CTRL_ON, KEYCODE_N)
-            },
             // Access system settings:
             //  - Meta + I
             shortcutInfo(resources.getString(R.string.group_system_access_system_settings)) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
index 4ad04be..ef06a85 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
@@ -20,6 +20,10 @@
 import android.util.Log
 import com.android.app.animation.Interpolators
 import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.systemui.communal.domain.interactor.CommunalInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
+import com.android.systemui.communal.shared.model.CommunalScenes
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
@@ -54,6 +58,9 @@
     keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
     val deviceEntryRepository: DeviceEntryRepository,
     private val wakeToGoneInteractor: KeyguardWakeDirectlyToGoneInteractor,
+    private val communalSettingsInteractor: CommunalSettingsInteractor,
+    private val communalSceneInteractor: CommunalSceneInteractor,
+    private val communalInteractor: CommunalInteractor,
 ) :
     TransitionInteractor(
         fromState = KeyguardState.AOD,
@@ -103,6 +110,7 @@
                     val isKeyguardOccludedLegacy = keyguardInteractor.isKeyguardOccluded.value
                     val biometricUnlockMode = keyguardInteractor.biometricUnlockState.value.mode
                     val primaryBouncerShowing = keyguardInteractor.primaryBouncerShowing.value
+                    val shouldShowCommunal = communalInteractor.shouldShowCommunal.value
 
                     if (!maybeHandleInsecurePowerGesture()) {
                         val shouldTransitionToLockscreen =
@@ -129,6 +137,9 @@
                             (!KeyguardWmStateRefactor.isEnabled && canDismissLockscreen()) ||
                                 (KeyguardWmStateRefactor.isEnabled && canWakeDirectlyToGone)
 
+                        val shouldTransitionToCommunal =
+                            communalSettingsInteractor.isV2FlagEnabled() && shouldShowCommunal
+
                         if (shouldTransitionToGone) {
                             // TODO(b/360368320): Adapt for scene framework
                             if (SceneContainerFlag.isEnabled) return@collect
@@ -137,6 +148,11 @@
                                 modeOnCanceled = TransitionModeOnCanceled.REVERSE,
                                 ownerReason = "canWakeDirectlyToGone = true",
                             )
+                        } else if (shouldTransitionToCommunal) {
+                            communalSceneInteractor.changeScene(
+                                CommunalScenes.Communal,
+                                "listen for aod to communal",
+                            )
                         } else if (shouldTransitionToLockscreen) {
                             val modeOnCanceled =
                                 if (startedStep.from == KeyguardState.LOCKSCREEN) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
index 6f5f662..0700ec6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
@@ -159,6 +159,7 @@
                     val isKeyguardOccludedLegacy = keyguardInteractor.isKeyguardOccluded.value
                     val primaryBouncerShowing = keyguardInteractor.primaryBouncerShowing.value
                     val isKeyguardGoingAway = keyguardInteractor.isKeyguardGoingAway.value
+                    val canStartDreaming = dreamManager.canStartDreaming(false)
 
                     if (!deviceEntryInteractor.isLockscreenEnabled()) {
                         if (!SceneContainerFlag.isEnabled) {
@@ -191,6 +192,13 @@
                         if (!SceneContainerFlag.isEnabled) {
                             transitionToGlanceableHub()
                         }
+                    } else if (canStartDreaming) {
+                        // If we're waking up to dream, transition directly to dreaming without
+                        // showing the lockscreen.
+                        startTransitionTo(
+                            KeyguardState.DREAMING,
+                            ownerReason = "moving from doze to dream",
+                        )
                     } else {
                         startTransitionTo(KeyguardState.LOCKSCREEN)
                     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
index 2eeba0f..3ad862b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
@@ -77,7 +77,7 @@
         if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
             return
         }
-        listenForHubToDozing()
+        listenForHubToAodOrDozing()
         listenForHubToPrimaryBouncer()
         listenForHubToAlternateBouncer()
         listenForHubToOccluded()
@@ -123,15 +123,15 @@
         }
     }
 
-    private fun listenForHubToDozing() {
+    private fun listenForHubToAodOrDozing() {
         scope.launch {
             powerInteractor.isAsleep
                 .filterRelevantKeyguardStateAnd { isAsleep -> isAsleep }
                 .collect {
-                    communalSceneInteractor.snapToScene(
+                    communalSceneInteractor.changeScene(
                         newScene = CommunalScenes.Blank,
-                        loggingReason = "hub to dozing",
-                        keyguardState = KeyguardState.DOZING,
+                        loggingReason = "hub to sleep",
+                        keyguardState = keyguardInteractor.asleepKeyguardState.value,
                     )
                 }
         }
@@ -254,5 +254,6 @@
         val TO_LOCKSCREEN_DURATION = 1.seconds
         val TO_BOUNCER_DURATION = 400.milliseconds
         val TO_OCCLUDED_DURATION = 450.milliseconds
+        val TO_AOD_DURATION = 500.milliseconds
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
index da87e38..c7791cd 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
@@ -26,6 +26,8 @@
 import android.view.InputDevice
 import android.view.MotionEvent
 import android.view.View
+import android.view.View.GONE
+import android.view.View.INVISIBLE
 import android.view.View.OnLayoutChangeListener
 import android.view.View.VISIBLE
 import android.view.ViewGroup
@@ -304,8 +306,9 @@
                             if (isVisible.value) {
                                 blueprintViewModel.refreshBlueprint()
                             }
-                            childViews[aodPromotedNotificationId]
-                                ?.setAodNotifIconContainerIsVisible(isVisible)
+                            childViews[aodPromotedNotificationId]?.setAodPromotedNotifIsVisible(
+                                isVisible
+                            )
                         }
                     }
 
@@ -313,7 +316,7 @@
                         shadeInteractor.isAnyFullyExpanded.collect { isFullyAnyExpanded ->
                             view.visibility =
                                 if (isFullyAnyExpanded) {
-                                    View.INVISIBLE
+                                    INVISIBLE
                                 } else {
                                     View.VISIBLE
                                 }
@@ -524,10 +527,10 @@
                 visibility =
                     if (isVisible.value) {
                         alpha = 1f
-                        View.VISIBLE
+                        VISIBLE
                     } else {
                         alpha = 0f
-                        View.INVISIBLE
+                        INVISIBLE
                     }
             }
 
@@ -541,6 +544,36 @@
         }
     }
 
+    private fun View.setAodPromotedNotifIsVisible(isVisible: AnimatedValue<Boolean>) {
+        animate().cancel()
+        val animatorListener =
+            object : AnimatorListenerAdapter() {
+                override fun onAnimationEnd(animation: Animator) {
+                    isVisible.stopAnimating()
+                }
+            }
+
+        if (isVisible.isAnimating) {
+            if (isVisible.value) {
+                alpha = 0f
+                visibility = VISIBLE
+                CrossFadeHelper.fadeIn(this, animatorListener)
+            } else {
+                CrossFadeHelper.fadeOut(this, animatorListener)
+            }
+        } else {
+            if (isVisible.value) {
+                alpha = 1f
+                visibility = VISIBLE
+            } else {
+                // Hide with GONE, not INVISIBLE, so there won't be a redundant bottom
+                // margin between the smart space and the shelf.
+                alpha = 0f
+                visibility = GONE
+            }
+        }
+    }
+
     private fun MotionEvent.isTouchscreenSource(): Boolean {
         return device?.supportsSource(InputDevice.SOURCE_TOUCHSCREEN) == true
     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
index dba2578..c4a7e1e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
@@ -21,6 +21,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.AodToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToOccludedTransitionViewModel
@@ -33,6 +34,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel
@@ -118,6 +120,12 @@
 
     @Binds
     @IntoSet
+    abstract fun aodToGlanceableHub(
+        impl: AodToGlanceableHubTransitionViewModel
+    ): DeviceEntryIconTransition
+
+    @Binds
+    @IntoSet
     abstract fun dozingToGone(impl: DozingToGoneTransitionViewModel): DeviceEntryIconTransition
 
     @Binds
@@ -258,6 +266,12 @@
 
     @Binds
     @IntoSet
+    abstract fun glanceableHubToAod(
+        impl: GlanceableHubToAodTransitionViewModel
+    ): DeviceEntryIconTransition
+
+    @Binds
+    @IntoSet
     abstract fun occludedToGlanceableHub(
         impl: OccludedToGlanceableHubTransitionViewModel
     ): DeviceEntryIconTransition
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModel.kt
new file mode 100644
index 0000000..45f8f10
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModel.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import android.util.MathUtils
+import com.android.systemui.Flags.lightRevealMigration
+import com.android.systemui.communal.ui.compose.TransitionDuration
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.dagger.GlanceableHubBlurComponent
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
+import com.android.systemui.keyguard.shared.model.KeyguardState.GLANCEABLE_HUB
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
+import com.android.systemui.keyguard.ui.transitions.GlanceableHubTransition
+import com.android.systemui.scene.shared.model.Scenes
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.flow.Flow
+
+@SysUISingleton
+class AodToGlanceableHubTransitionViewModel
+@Inject
+constructor(
+    animationFlow: KeyguardTransitionAnimationFlow,
+    blurFactory: GlanceableHubBlurComponent.Factory,
+) : DeviceEntryIconTransition, GlanceableHubTransition {
+    private val transitionAnimation =
+        animationFlow
+            .setup(
+                duration = TransitionDuration.TO_GLANCEABLE_HUB_DURATION_MS.milliseconds,
+                edge = Edge.create(AOD, Scenes.Communal),
+            )
+            .setupWithoutSceneContainer(edge = Edge.create(AOD, GLANCEABLE_HUB))
+
+    override val deviceEntryParentViewAlpha: Flow<Float> =
+        transitionAnimation.immediatelyTransitionTo(1f)
+
+    /** Fade out the lockscreen during a transition to GLANCEABLE_HUB. */
+    fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> {
+        var currentAlpha = 0f
+        return transitionAnimation.sharedFlow(
+            duration = 250.milliseconds,
+            startTime =
+                if (lightRevealMigration()) {
+                    100.milliseconds // Wait for the light reveal to "hit" the LS elements.
+                } else {
+                    0.milliseconds
+                },
+            onStart = {
+                currentAlpha =
+                    if (lightRevealMigration()) {
+                        viewState.alpha()
+                    } else {
+                        0f
+                    }
+            },
+            onStep = { MathUtils.lerp(currentAlpha, 0f, it) },
+        )
+    }
+
+    override val windowBlurRadius: Flow<Float> =
+        blurFactory.create(transitionAnimation).getBlurProvider().enterBlurRadius
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
index 75bba48..0ccb24a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
@@ -60,6 +60,7 @@
     primaryBouncerToDozingTransitionViewModel: PrimaryBouncerToDozingTransitionViewModel,
     primaryBouncerToLockscreenTransitionViewModel: PrimaryBouncerToLockscreenTransitionViewModel,
     lockscreenToDozingTransitionViewModel: LockscreenToDozingTransitionViewModel,
+    glanceableHubToAodTransitionViewModel: GlanceableHubToAodTransitionViewModel,
 ) {
     val color: Flow<Int> =
         deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground ->
@@ -106,6 +107,7 @@
                         primaryBouncerToLockscreenTransitionViewModel
                             .deviceEntryBackgroundViewAlpha,
                         lockscreenToDozingTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        glanceableHubToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
                     )
                     .merge()
                     .onStart {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt
index e6a85c6..9018c58 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt
@@ -39,4 +39,6 @@
         )
 
     val lockscreenAlpha: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0f)
+    // Notifications should not be shown while transitioning to dream.
+    val notificationAlpha = transitionAnimation.immediatelyTransitionTo(0f)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModel.kt
new file mode 100644
index 0000000..6a45845
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModel.kt
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
+import com.android.systemui.keyguard.domain.interactor.FromGlanceableHubTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
+import com.android.systemui.scene.shared.model.Scenes
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.flow.flatMapLatest
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SysUISingleton
+class GlanceableHubToAodTransitionViewModel
+@Inject
+constructor(
+    deviceEntryUdfpsInteractor: DeviceEntryUdfpsInteractor,
+    animationFlow: KeyguardTransitionAnimationFlow,
+) : DeviceEntryIconTransition {
+
+    private val transitionAnimation =
+        animationFlow
+            .setup(
+                duration = FromGlanceableHubTransitionInteractor.TO_AOD_DURATION,
+                edge = Edge.create(from = Scenes.Communal, to = AOD),
+            )
+            .setupWithoutSceneContainer(edge = Edge.create(KeyguardState.GLANCEABLE_HUB, AOD))
+
+    val deviceEntryBackgroundViewAlpha: Flow<Float> =
+        transitionAnimation.immediatelyTransitionTo(0f)
+
+    /** Lockscreen views alpha */
+    val lockscreenAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            startTime = 233.milliseconds,
+            duration = 250.milliseconds,
+            onStep = { it },
+        )
+
+    override val deviceEntryParentViewAlpha: Flow<Float> =
+        deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled.flatMapLatest { udfpsEnrolledAndEnabled
+            ->
+            if (udfpsEnrolledAndEnabled) {
+                transitionAnimation.immediatelyTransitionTo(1f)
+            } else {
+                emptyFlow()
+            }
+        }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index 8e21745..def87a8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -100,6 +100,7 @@
     private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
     private val aodToOccludedTransitionViewModel: AodToOccludedTransitionViewModel,
     private val aodToPrimaryBouncerTransitionViewModel: AodToPrimaryBouncerTransitionViewModel,
+    private val aodToGlanceableHubTransitionViewModel: AodToGlanceableHubTransitionViewModel,
     private val dozingToDreamingTransitionViewModel: DozingToDreamingTransitionViewModel,
     private val dozingToGoneTransitionViewModel: DozingToGoneTransitionViewModel,
     private val dozingToLockscreenTransitionViewModel: DozingToLockscreenTransitionViewModel,
@@ -111,6 +112,7 @@
     private val dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
     private val glanceableHubToLockscreenTransitionViewModel:
         GlanceableHubToLockscreenTransitionViewModel,
+    private val glanceableHubToAodTransitionViewModel: GlanceableHubToAodTransitionViewModel,
     private val goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
     private val goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
     private val goneToDreamingTransitionViewModel: GoneToDreamingTransitionViewModel,
@@ -258,6 +260,7 @@
                         aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
                         aodToOccludedTransitionViewModel.lockscreenAlpha(viewState),
                         aodToPrimaryBouncerTransitionViewModel.lockscreenAlpha,
+                        aodToGlanceableHubTransitionViewModel.lockscreenAlpha(viewState),
                         dozingToDreamingTransitionViewModel.lockscreenAlpha,
                         dozingToGoneTransitionViewModel.lockscreenAlpha(viewState),
                         dozingToLockscreenTransitionViewModel.lockscreenAlpha,
@@ -267,6 +270,7 @@
                         dreamingToGoneTransitionViewModel.lockscreenAlpha,
                         dreamingToLockscreenTransitionViewModel.lockscreenAlpha,
                         glanceableHubToLockscreenTransitionViewModel.keyguardAlpha,
+                        glanceableHubToAodTransitionViewModel.lockscreenAlpha,
                         goneToAodTransitionViewModel.enterFromTopAnimationAlpha,
                         goneToDozingTransitionViewModel.lockscreenAlpha,
                         goneToDreamingTransitionViewModel.lockscreenAlpha,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
index 21407f3..9badf85 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
@@ -27,6 +27,7 @@
 import com.android.internal.R
 import com.android.internal.annotations.VisibleForTesting
 import com.android.settingslib.Utils
+import com.android.systemui.Flags
 import com.android.systemui.media.controls.ui.view.MediaViewHolder
 import com.android.systemui.monet.ColorScheme
 import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffect
@@ -51,7 +52,7 @@
 open class AnimatingColorTransition(
     private val defaultColor: Int,
     private val extractColor: (ColorScheme) -> Int,
-    private val applyColor: (Int) -> Unit
+    private val applyColor: (Int) -> Unit,
 ) : AnimatorUpdateListener, ColorTransition {
 
     private val argbEvaluator = ArgbEvaluator()
@@ -105,24 +106,60 @@
     private val mediaViewHolder: MediaViewHolder,
     private val multiRippleController: MultiRippleController,
     private val turbulenceNoiseController: TurbulenceNoiseController,
-    animatingColorTransitionFactory: AnimatingColorTransitionFactory
+    animatingColorTransitionFactory: AnimatingColorTransitionFactory,
 ) {
     constructor(
         context: Context,
         mediaViewHolder: MediaViewHolder,
         multiRippleController: MultiRippleController,
-        turbulenceNoiseController: TurbulenceNoiseController
+        turbulenceNoiseController: TurbulenceNoiseController,
     ) : this(
         context,
         mediaViewHolder,
         multiRippleController,
         turbulenceNoiseController,
-        ::AnimatingColorTransition
+        ::AnimatingColorTransition,
     )
+
     var loadingEffect: LoadingEffect? = null
 
-    val bgColor = context.getColor(com.google.android.material.R.color.material_dynamic_neutral20)
-    val surfaceColor =
+    // Defaults may be briefly visible before loading a new player's colors
+    private val backgroundDefault = context.getColor(R.color.system_on_surface_light)
+    private val primaryDefault = context.getColor(R.color.system_primary_dark)
+    private val onPrimaryDefault = context.getColor(R.color.system_on_primary_dark)
+
+    private val backgroundColor: AnimatingColorTransition by lazy {
+        animatingColorTransitionFactory(backgroundDefault, ::backgroundFromScheme) { color ->
+            mediaViewHolder.albumView.backgroundTintList = ColorStateList.valueOf(color)
+        }
+    }
+
+    private val primaryColor: AnimatingColorTransition by lazy {
+        animatingColorTransitionFactory(primaryDefault, ::primaryFromScheme) { primaryColor ->
+            val primaryColorList = ColorStateList.valueOf(primaryColor)
+            mediaViewHolder.actionPlayPause.backgroundTintList = primaryColorList
+            mediaViewHolder.seamlessButton.backgroundTintList = primaryColorList
+            (mediaViewHolder.seamlessButton.background as? RippleDrawable)?.let {
+                it.setColor(primaryColorList)
+                it.effectColor = primaryColorList
+            }
+            mediaViewHolder.seekBar.progressBackgroundTintList = primaryColorList
+        }
+    }
+
+    private val onPrimaryColor: AnimatingColorTransition by lazy {
+        animatingColorTransitionFactory(onPrimaryDefault, ::onPrimaryFromScheme) { onPrimaryColor ->
+            val onPrimaryColorList = ColorStateList.valueOf(onPrimaryColor)
+            mediaViewHolder.actionPlayPause.imageTintList = onPrimaryColorList
+            mediaViewHolder.seamlessText.setTextColor(onPrimaryColor)
+            mediaViewHolder.seamlessIcon.imageTintList = onPrimaryColorList
+        }
+    }
+
+    // TODO(media_controls_a11y_colors): remove the below color definitions
+    private val bgColor =
+        context.getColor(com.google.android.material.R.color.material_dynamic_neutral20)
+    private val surfaceColor: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(bgColor, ::surfaceFromScheme) { surfaceColor ->
             val colorList = ColorStateList.valueOf(surfaceColor)
             mediaViewHolder.seamlessIcon.imageTintList = colorList
@@ -130,10 +167,12 @@
             mediaViewHolder.albumView.backgroundTintList = colorList
             mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor)
         }
-    val accentPrimary =
+    }
+
+    private val accentPrimary: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimary),
-            ::accentPrimaryFromScheme
+            ::accentPrimaryFromScheme,
         ) { accentPrimary ->
             val accentColorList = ColorStateList.valueOf(accentPrimary)
             mediaViewHolder.actionPlayPause.backgroundTintList = accentColorList
@@ -142,11 +181,12 @@
             turbulenceNoiseController.updateNoiseColor(accentPrimary)
             loadingEffect?.updateColor(accentPrimary)
         }
+    }
 
-    val accentSecondary =
+    private val accentSecondary: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimary),
-            ::accentSecondaryFromScheme
+            ::accentSecondaryFromScheme,
         ) { accentSecondary ->
             val colorList = ColorStateList.valueOf(accentSecondary)
             (mediaViewHolder.seamlessButton.background as? RippleDrawable)?.let {
@@ -154,8 +194,9 @@
                 it.effectColor = colorList
             }
         }
+    }
 
-    val colorSeamless =
+    private val colorSeamless: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimary),
             { colorScheme: ColorScheme ->
@@ -170,13 +211,14 @@
             { seamlessColor: Int ->
                 val accentColorList = ColorStateList.valueOf(seamlessColor)
                 mediaViewHolder.seamlessButton.backgroundTintList = accentColorList
-            }
+            },
         )
+    }
 
-    val textPrimary =
+    private val textPrimary: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimary),
-            ::textPrimaryFromScheme
+            ::textPrimaryFromScheme,
         ) { textPrimary ->
             mediaViewHolder.titleText.setTextColor(textPrimary)
             val textColorList = ColorStateList.valueOf(textPrimary)
@@ -189,44 +231,81 @@
             }
             mediaViewHolder.gutsViewHolder.setTextPrimaryColor(textPrimary)
         }
+    }
 
-    val textPrimaryInverse =
+    private val textPrimaryInverse: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimaryInverse),
-            ::textPrimaryInverseFromScheme
+            ::textPrimaryInverseFromScheme,
         ) { textPrimaryInverse ->
             mediaViewHolder.actionPlayPause.imageTintList =
                 ColorStateList.valueOf(textPrimaryInverse)
         }
+    }
 
-    val textSecondary =
+    private val textSecondary: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorSecondary),
-            ::textSecondaryFromScheme
+            ::textSecondaryFromScheme,
         ) { textSecondary ->
             mediaViewHolder.artistText.setTextColor(textSecondary)
         }
+    }
 
-    val textTertiary =
+    private val textTertiary: AnimatingColorTransition by lazy {
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorTertiary),
-            ::textTertiaryFromScheme
+            ::textTertiaryFromScheme,
         ) { textTertiary ->
             mediaViewHolder.seekBar.progressBackgroundTintList =
                 ColorStateList.valueOf(textTertiary)
         }
+    }
 
-    val colorTransitions =
-        arrayOf(
-            surfaceColor,
-            colorSeamless,
-            accentPrimary,
-            accentSecondary,
-            textPrimary,
-            textPrimaryInverse,
-            textSecondary,
-            textTertiary,
-        )
+    fun getDeviceIconColor(): Int {
+        if (Flags.mediaControlsA11yColors()) {
+            return onPrimaryColor.targetColor
+        }
+        return surfaceColor.targetColor
+    }
+
+    fun getAppIconColor(): Int {
+        if (Flags.mediaControlsA11yColors()) {
+            return primaryColor.targetColor
+        }
+        return accentPrimary.targetColor
+    }
+
+    fun getSurfaceEffectColor(): Int {
+        if (Flags.mediaControlsA11yColors()) {
+            return primaryColor.targetColor
+        }
+        return accentPrimary.targetColor
+    }
+
+    fun getGutsTextColor(): Int {
+        if (Flags.mediaControlsA11yColors()) {
+            return context.getColor(com.android.systemui.res.R.color.media_on_background)
+        }
+        return textPrimary.targetColor
+    }
+
+    private fun getColorTransitions(): Array<AnimatingColorTransition> {
+        return if (Flags.mediaControlsA11yColors()) {
+            arrayOf(backgroundColor, primaryColor, onPrimaryColor)
+        } else {
+            arrayOf(
+                surfaceColor,
+                colorSeamless,
+                accentPrimary,
+                accentSecondary,
+                textPrimary,
+                textPrimaryInverse,
+                textSecondary,
+                textTertiary,
+            )
+        }
+    }
 
     private fun loadDefaultColor(id: Int): Int {
         return Utils.getColorAttr(context, id).defaultColor
@@ -234,15 +313,26 @@
 
     fun updateColorScheme(colorScheme: ColorScheme?): Boolean {
         var anyChanged = false
-        colorTransitions.forEach {
+        getColorTransitions().forEach {
             val isChanged = it.updateColorScheme(colorScheme)
 
             // Ignore changes to colorSeamless, since that is expected when toggling dark mode
+            // TODO(media_controls_a11y_colors): remove, not necessary
             if (it == colorSeamless) return@forEach
 
             anyChanged = isChanged || anyChanged
         }
-        colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme }
+        if (Flags.mediaControlsA11yColors()) {
+            getSurfaceEffectColor().let {
+                multiRippleController.updateColor(it)
+                turbulenceNoiseController.updateNoiseColor(it)
+                loadingEffect?.updateColor(it)
+            }
+            mediaViewHolder.gutsViewHolder.setTextColor(getGutsTextColor())
+            colorScheme?.let { mediaViewHolder.gutsViewHolder.setColors(it) }
+        } else {
+            colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme }
+        }
         return anyChanged
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/MediaColorSchemes.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/MediaColorSchemes.kt
index 3c57c83..67113a4 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/MediaColorSchemes.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/MediaColorSchemes.kt
@@ -19,28 +19,43 @@
 import com.android.systemui.monet.ColorScheme
 
 /** Returns the surface color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun surfaceFromScheme(scheme: ColorScheme) = scheme.accent2.s800 // A2-800
 
 /** Returns the primary accent color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun accentPrimaryFromScheme(scheme: ColorScheme) = scheme.accent1.s100 // A1-100
 
 /** Returns the secondary accent color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun accentSecondaryFromScheme(scheme: ColorScheme) = scheme.accent1.s200 // A1-200
 
 /** Returns the primary text color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun textPrimaryFromScheme(scheme: ColorScheme) = scheme.neutral1.s50 // N1-50
 
 /** Returns the inverse of the primary text color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun textPrimaryInverseFromScheme(scheme: ColorScheme) = scheme.neutral1.s900 // N1-900
 
 /** Returns the secondary text color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun textSecondaryFromScheme(scheme: ColorScheme) = scheme.neutral2.s200 // N2-200
 
 /** Returns the tertiary text color for media controls based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun textTertiaryFromScheme(scheme: ColorScheme) = scheme.neutral2.s400 // N2-400
 
 /** Returns the color for the start of the background gradient based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun backgroundStartFromScheme(scheme: ColorScheme) = scheme.accent2.s700 // A2-700
 
 /** Returns the color for the end of the background gradient based on the scheme. */
+@Deprecated("Remove with media_controls_a11y_colors")
 internal fun backgroundEndFromScheme(scheme: ColorScheme) = scheme.accent1.s700 // A1-700
+
+internal fun backgroundFromScheme(scheme: ColorScheme) = scheme.materialScheme.getOnSurface()
+
+internal fun primaryFromScheme(scheme: ColorScheme) = scheme.materialScheme.getPrimaryFixed()
+
+internal fun onPrimaryFromScheme(scheme: ColorScheme) = scheme.materialScheme.getOnPrimaryFixed()
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaControlViewBinder.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaControlViewBinder.kt
index 910d3a8..6d796d9 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaControlViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaControlViewBinder.kt
@@ -36,6 +36,7 @@
 import androidx.lifecycle.repeatOnLifecycle
 import com.android.app.tracing.coroutines.launchTraced as launch
 import com.android.settingslib.widget.AdaptiveIcon
+import com.android.systemui.Flags
 import com.android.systemui.animation.Expandable
 import com.android.systemui.common.shared.model.Icon
 import com.android.systemui.dagger.qualifiers.Background
@@ -48,6 +49,7 @@
 import com.android.systemui.media.controls.ui.view.MediaViewHolder
 import com.android.systemui.media.controls.ui.viewmodel.MediaActionViewModel
 import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel
+import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel.Companion.MEDIA_PLAYER_SCRIM_CENTER_ALPHA
 import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel.Companion.MEDIA_PLAYER_SCRIM_END_ALPHA
 import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel.Companion.MEDIA_PLAYER_SCRIM_START_ALPHA
 import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel.Companion.SEMANTIC_ACTIONS_ALL
@@ -198,7 +200,9 @@
             is Icon.Loaded -> {
                 val icon = viewModel.deviceIcon.drawable
                 if (icon is AdaptiveIcon) {
-                    icon.setBackgroundColor(viewController.colorSchemeTransition.bgColor)
+                    icon.setBackgroundColor(
+                        viewController.colorSchemeTransition.getDeviceIconColor()
+                    )
                 }
                 viewHolder.seamlessIcon.setImageDrawable(icon)
             }
@@ -431,11 +435,16 @@
                     TAG,
                 )
             val isArtworkBound = wallpaperColors != null
+            val darkTheme = !Flags.mediaControlsA11yColors()
             val scheme =
-                wallpaperColors?.let { ColorScheme(it, true, Style.CONTENT) }
+                wallpaperColors?.let { ColorScheme(it, darkTheme, Style.CONTENT) }
                     ?: let {
                         if (viewModel.launcherIcon is Icon.Loaded) {
-                            MediaArtworkHelper.getColorScheme(viewModel.launcherIcon.drawable, TAG)
+                            MediaArtworkHelper.getColorScheme(
+                                viewModel.launcherIcon.drawable,
+                                TAG,
+                                darkTheme,
+                            )
                         } else {
                             null
                         }
@@ -496,7 +505,7 @@
                     }
                 } else {
                     viewHolder.appIcon.setColorFilter(
-                        viewController.colorSchemeTransition.accentPrimary.targetColor
+                        viewController.colorSchemeTransition.getAppIconColor()
                     )
                     viewHolder.appIcon.setImageIcon(viewModel.appIcon)
                 }
@@ -528,11 +537,17 @@
         height: Int,
     ): LayerDrawable {
         val albumArt = MediaArtworkHelper.getScaledBackground(context, artworkIcon, width, height)
+        val alpha =
+            if (Flags.mediaControlsA11yColors()) {
+                MEDIA_PLAYER_SCRIM_CENTER_ALPHA
+            } else {
+                MEDIA_PLAYER_SCRIM_START_ALPHA
+            }
         return MediaArtworkHelper.setUpGradientColorOnDrawable(
             albumArt,
             context.getDrawable(R.drawable.qs_media_scrim)?.mutate() as GradientDrawable,
             mutableColorScheme,
-            MEDIA_PLAYER_SCRIM_START_ALPHA,
+            alpha,
             MEDIA_PLAYER_SCRIM_END_ALPHA,
         )
     }
@@ -572,7 +587,7 @@
                 maxSize,
                 maxSize,
                 button.context.resources.displayMetrics.density,
-                colorSchemeTransition.accentPrimary.currentColor,
+                colorSchemeTransition.getSurfaceEffectColor(),
                 opacity = 100,
                 sparkleStrength = 0f,
                 baseRingFadeParams = null,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
index 606f71a..d26a723 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
@@ -55,7 +55,7 @@
     private val bypassController: KeyguardBypassController,
     private val statusBarStateController: SysuiStatusBarStateController,
     @ShadeDisplayAware private val context: Context,
-    configurationController: ConfigurationController,
+    @ShadeDisplayAware configurationController: ConfigurationController,
     private val splitShadeStateController: SplitShadeStateController,
     private val logger: KeyguardMediaControllerLogger,
     dumpManager: DumpManager,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index 93c4baf..55d8b8c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -132,7 +132,7 @@
 @Inject
 constructor(
     @Application applicationScope: CoroutineScope,
-    private val context: Context,
+    @Main private val context: Context,
     private val mediaControlPanelFactory: Provider<MediaControlPanel>,
     private val visualStabilityProvider: VisualStabilityProvider,
     private val mediaHostStatesManager: MediaHostStatesManager,
@@ -143,7 +143,7 @@
     @Background private val bgExecutor: Executor,
     @Background private val backgroundDispatcher: CoroutineDispatcher,
     private val mediaManager: MediaDataManager,
-    configurationController: ConfigurationController,
+    @Main configurationController: ConfigurationController,
     private val falsingManager: FalsingManager,
     dumpManager: DumpManager,
     private val logger: MediaUiEventLogger,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
index 2bf6a10..39c08da 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
@@ -23,6 +23,7 @@
 import static com.android.systemui.Flags.mediaLockscreenLaunchAnimation;
 import static com.android.systemui.media.controls.domain.pipeline.MediaActionsKt.getNotificationActions;
 import static com.android.systemui.media.controls.shared.model.SmartspaceMediaDataKt.NUM_REQUIRED_RECOMMENDATIONS;
+import static com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel.MEDIA_PLAYER_SCRIM_CENTER_ALPHA;
 
 import android.animation.Animator;
 import android.animation.AnimatorInflater;
@@ -305,7 +306,7 @@
      */
     @Inject
     public MediaControlPanel(
-            Context context,
+            @Main Context context,
             @Background Executor backgroundExecutor,
             @Main DelayableExecutor mainExecutor,
             ActivityStarter activityStarter,
@@ -730,7 +731,7 @@
             Drawable icon = device.getIcon();
             if (icon instanceof AdaptiveIcon) {
                 AdaptiveIcon aIcon = (AdaptiveIcon) icon;
-                aIcon.setBackgroundColor(mColorSchemeTransition.getBgColor());
+                aIcon.setBackgroundColor(mColorSchemeTransition.getDeviceIconColor());
                 iconView.setImageDrawable(aIcon);
             } else {
                 iconView.setImageDrawable(icon);
@@ -921,8 +922,9 @@
             boolean isArtworkBound;
             Icon artworkIcon = data.getArtwork();
             WallpaperColors wallpaperColors = getWallpaperColor(artworkIcon);
+            boolean darkTheme = !Flags.mediaControlsA11yColors();
             if (wallpaperColors != null) {
-                mutableColorScheme = new ColorScheme(wallpaperColors, true, Style.CONTENT);
+                mutableColorScheme = new ColorScheme(wallpaperColors, darkTheme, Style.CONTENT);
                 artwork = addGradientToPlayerAlbum(artworkIcon, mutableColorScheme, finalWidth,
                         finalHeight);
                 isArtworkBound = true;
@@ -933,8 +935,8 @@
                 try {
                     Drawable icon = mContext.getPackageManager()
                             .getApplicationIcon(data.getPackageName());
-                    mutableColorScheme = new ColorScheme(WallpaperColors.fromDrawable(icon), true,
-                            Style.CONTENT);
+                    mutableColorScheme = new ColorScheme(WallpaperColors.fromDrawable(icon),
+                            darkTheme, Style.CONTENT);
                 } catch (PackageManager.NameNotFoundException e) {
                     Log.w(TAG, "Cannot find icon for package " + data.getPackageName(), e);
                 }
@@ -950,7 +952,8 @@
                 mArtworkBoundId = reqId;
 
                 // Transition Colors to current color scheme
-                boolean colorSchemeChanged = mColorSchemeTransition.updateColorScheme(colorScheme);
+                boolean colorSchemeChanged;
+                colorSchemeChanged = mColorSchemeTransition.updateColorScheme(colorScheme);
 
                 // Bind the album view to the artwork or a transition drawable
                 ImageView albumView = mMediaViewHolder.getAlbumView();
@@ -973,7 +976,6 @@
                         transitionDrawable.setLayerGravity(0, Gravity.CENTER);
                         transitionDrawable.setLayerGravity(1, Gravity.CENTER);
                         transitionDrawable.setCrossFadeEnabled(true);
-
                         albumView.setImageDrawable(transitionDrawable);
                         transitionDrawable.startTransition(isArtworkBound ? 333 : 80);
                     }
@@ -986,8 +988,7 @@
                 appIconView.clearColorFilter();
                 if (data.getAppIcon() != null && !data.getResumption()) {
                     appIconView.setImageIcon(data.getAppIcon());
-                    appIconView.setColorFilter(
-                            mColorSchemeTransition.getAccentPrimary().getTargetColor());
+                    appIconView.setColorFilter(mColorSchemeTransition.getAppIconColor());
                 } else {
                     // Resume players use launcher icon
                     appIconView.setColorFilter(getGrayscaleFilter());
@@ -1092,8 +1093,11 @@
         Drawable albumArt = getScaledBackground(artworkIcon, width, height);
         GradientDrawable gradient = (GradientDrawable) mContext.getDrawable(
                 R.drawable.qs_media_scrim).mutate();
+        float startAlpha = (Flags.mediaControlsA11yColors())
+                ? MEDIA_PLAYER_SCRIM_CENTER_ALPHA
+                : MEDIA_SCRIM_START_ALPHA;
         return setupGradientColorOnDrawable(albumArt, gradient, mutableColorScheme,
-                MEDIA_SCRIM_START_ALPHA, MEDIA_PLAYER_SCRIM_END_ALPHA);
+                startAlpha, MEDIA_PLAYER_SCRIM_END_ALPHA);
     }
 
     @VisibleForTesting
@@ -1113,12 +1117,21 @@
 
     private LayerDrawable setupGradientColorOnDrawable(Drawable albumArt, GradientDrawable gradient,
             ColorScheme mutableColorScheme, float startAlpha, float endAlpha) {
+        int startColor;
+        int endColor;
+        if (Flags.mediaControlsA11yColors()) {
+            startColor = MediaColorSchemesKt.backgroundFromScheme(mutableColorScheme);
+            endColor = startColor;
+        } else {
+            startColor = MediaColorSchemesKt.backgroundStartFromScheme(mutableColorScheme);
+            endColor = MediaColorSchemesKt.backgroundEndFromScheme(mutableColorScheme);
+        }
         gradient.setColors(new int[]{
                 ColorUtilKt.getColorWithAlpha(
-                        MediaColorSchemesKt.backgroundStartFromScheme(mutableColorScheme),
+                        startColor,
                         startAlpha),
                 ColorUtilKt.getColorWithAlpha(
-                        MediaColorSchemesKt.backgroundEndFromScheme(mutableColorScheme),
+                        endColor,
                         endAlpha),
         });
         return new LayerDrawable(new Drawable[]{albumArt, gradient});
@@ -1308,7 +1321,7 @@
                         /* maxWidth= */ maxSize,
                         /* maxHeight= */ maxSize,
                         /* pixelDensity= */ getContext().getResources().getDisplayMetrics().density,
-                        mColorSchemeTransition.getAccentPrimary().getCurrentColor(),
+                        /* color= */ mColorSchemeTransition.getSurfaceEffectColor(),
                         /* opacity= */ 100,
                         /* sparkleStrength= */ 0f,
                         /* baseRingFadeParams= */ null,
@@ -1330,10 +1343,13 @@
         int width = targetView.getWidth();
         int height = targetView.getHeight();
         Random random = new Random();
+        float luminosity = (Flags.mediaControlsA11yColors())
+                ? 0.6f
+                : TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER;
 
         return new TurbulenceNoiseAnimationConfig(
                 /* gridCount= */ 2.14f,
-                TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER,
+                /* luminosityMultiplier= */ luminosity,
                 /* noiseOffsetX= */ random.nextFloat(),
                 /* noiseOffsetY= */ random.nextFloat(),
                 /* noiseOffsetZ= */ random.nextFloat(),
@@ -1341,7 +1357,7 @@
                 /* noiseMoveSpeedY= */ 0f,
                 TurbulenceNoiseAnimationConfig.DEFAULT_NOISE_SPEED_Z,
                 // Color will be correctly updated in ColorSchemeTransition.
-                /* color= */ mColorSchemeTransition.getAccentPrimary().getCurrentColor(),
+                /* color= */ mColorSchemeTransition.getSurfaceEffectColor(),
                 /* screenColor= */ Color.BLACK,
                 width,
                 height,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
index 2059394..b64cb3d 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
@@ -113,7 +113,7 @@
     private val dreamOverlayStateController: DreamOverlayStateController,
     private val keyguardInteractor: KeyguardInteractor,
     communalTransitionViewModel: CommunalTransitionViewModel,
-    configurationController: ConfigurationController,
+    @ShadeDisplayAware configurationController: ConfigurationController,
     wakefulnessLifecycle: WakefulnessLifecycle,
     shadeInteractor: ShadeInteractor,
     private val secureSettings: SecureSettings,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
index 2b36872..198155b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
@@ -81,8 +81,8 @@
 open class MediaViewController
 @Inject
 constructor(
-    private val context: Context,
-    private val configurationController: ConfigurationController,
+    @Main private val context: Context,
+    @Main private val configurationController: ConfigurationController,
     private val mediaHostStatesManager: MediaHostStatesManager,
     private val logger: MediaViewLogger,
     private val seekBarViewModel: SeekBarViewModel,
@@ -1237,9 +1237,15 @@
         val width = targetView.width
         val height = targetView.height
         val random = Random()
+        val luminosity =
+            if (Flags.mediaControlsA11yColors()) {
+                0.6f
+            } else {
+                TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER
+            }
         return TurbulenceNoiseAnimationConfig(
             gridCount = 2.14f,
-            TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER,
+            luminosity,
             random.nextFloat(),
             random.nextFloat(),
             random.nextFloat(),
@@ -1247,7 +1253,7 @@
             noiseMoveSpeedY = 0f,
             TurbulenceNoiseAnimationConfig.DEFAULT_NOISE_SPEED_Z,
             // Color will be correctly updated in ColorSchemeTransition.
-            colorSchemeTransition.accentPrimary.currentColor,
+            colorSchemeTransition.getSurfaceEffectColor(),
             screenColor = Color.BLACK,
             width.toFloat(),
             height.toFloat(),
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/util/MediaArtworkHelper.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/util/MediaArtworkHelper.kt
index 14a4e26..5570325 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/util/MediaArtworkHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/util/MediaArtworkHelper.kt
@@ -25,7 +25,9 @@
 import android.graphics.drawable.Icon
 import android.graphics.drawable.LayerDrawable
 import android.util.Log
+import com.android.systemui.Flags
 import com.android.systemui.media.controls.ui.animation.backgroundEndFromScheme
+import com.android.systemui.media.controls.ui.animation.backgroundFromScheme
 import com.android.systemui.media.controls.ui.animation.backgroundStartFromScheme
 import com.android.systemui.monet.ColorScheme
 import com.android.systemui.monet.Style
@@ -89,22 +91,30 @@
         startAlpha: Float,
         endAlpha: Float,
     ): LayerDrawable {
+        val startColor =
+            if (Flags.mediaControlsA11yColors()) {
+                backgroundFromScheme(colorScheme)
+            } else {
+                backgroundStartFromScheme(colorScheme)
+            }
+        val endColor =
+            if (Flags.mediaControlsA11yColors()) {
+                startColor
+            } else {
+                backgroundEndFromScheme(colorScheme)
+            }
         gradient.colors =
             intArrayOf(
-                getColorWithAlpha(backgroundStartFromScheme(colorScheme), startAlpha),
-                getColorWithAlpha(backgroundEndFromScheme(colorScheme), endAlpha),
+                getColorWithAlpha(startColor, startAlpha),
+                getColorWithAlpha(endColor, endAlpha),
             )
         return LayerDrawable(arrayOf(albumArt, gradient))
     }
 
     /** Returns [ColorScheme] of media app given its [icon]. */
-    fun getColorScheme(
-        icon: Drawable,
-        tag: String,
-        @Style.Type style: Int = Style.TONAL_SPOT,
-    ): ColorScheme? {
+    fun getColorScheme(icon: Drawable, tag: String, darkTheme: Boolean): ColorScheme? {
         return try {
-            ColorScheme(WallpaperColors.fromDrawable(icon), true, style)
+            ColorScheme(WallpaperColors.fromDrawable(icon), darkTheme, Style.CONTENT)
         } catch (e: PackageManager.NameNotFoundException) {
             Log.w(tag, "Fail to get media app info", e)
             null
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/GutsViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/GutsViewHolder.kt
index a667c58..fa500ae 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/GutsViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/GutsViewHolder.kt
@@ -22,7 +22,10 @@
 import android.view.ViewGroup
 import android.widget.ImageButton
 import android.widget.TextView
+import com.android.systemui.Flags
 import com.android.systemui.media.controls.ui.animation.accentPrimaryFromScheme
+import com.android.systemui.media.controls.ui.animation.onPrimaryFromScheme
+import com.android.systemui.media.controls.ui.animation.primaryFromScheme
 import com.android.systemui.media.controls.ui.animation.surfaceFromScheme
 import com.android.systemui.media.controls.ui.animation.textPrimaryFromScheme
 import com.android.systemui.monet.ColorScheme
@@ -35,7 +38,7 @@
  * Both [MediaViewHolder] and [RecommendationViewHolder] use the same guts menu layout, so this
  * class helps share logic between the two.
  */
-class GutsViewHolder constructor(itemView: View) {
+class GutsViewHolder(itemView: View) {
     val gutsText: TextView = itemView.requireViewById(R.id.remove_text)
     val cancel: View = itemView.requireViewById(R.id.cancel)
     val cancelText: TextView = itemView.requireViewById(R.id.cancel_text)
@@ -44,7 +47,9 @@
     val settings: ImageButton = itemView.requireViewById(R.id.settings)
 
     private var isDismissible: Boolean = true
+    // TODO(media_controls_a11y_colors): make private
     var colorScheme: ColorScheme? = null
+    private var textColorFixed: Int? = null
 
     /** Marquees the main text of the guts menu. */
     fun marquee(start: Boolean, delay: Long, tag: String) {
@@ -67,12 +72,43 @@
     /** Sets the right colors on all the guts views based on the given [ColorScheme]. */
     fun setColors(scheme: ColorScheme) {
         colorScheme = scheme
-        setSurfaceColor(surfaceFromScheme(scheme))
-        setTextPrimaryColor(textPrimaryFromScheme(scheme))
-        setAccentPrimaryColor(accentPrimaryFromScheme(scheme))
+
+        if (Flags.mediaControlsA11yColors()) {
+            textColorFixed?.let { setTextColor(it) }
+            setPrimaryColor(primaryFromScheme(scheme))
+            setOnPrimaryColor(onPrimaryFromScheme(scheme))
+        } else {
+            setSurfaceColor(surfaceFromScheme(scheme))
+            setTextPrimaryColor(textPrimaryFromScheme(scheme))
+            setAccentPrimaryColor(accentPrimaryFromScheme(scheme))
+        }
+    }
+
+    private fun setPrimaryColor(color: Int) {
+        val colorList = ColorStateList.valueOf(color)
+        dismissText.backgroundTintList = colorList
+        cancelText.backgroundTintList = colorList
+    }
+
+    private fun setOnPrimaryColor(color: Int) {
+        dismissText.setTextColor(color)
+        if (!isDismissible) {
+            cancelText.setTextColor(color)
+        }
+    }
+
+    fun setTextColor(color: Int) {
+        textColorFixed = color
+        gutsText.setTextColor(color)
+        settings.imageTintList = ColorStateList.valueOf(color)
+
+        if (isDismissible) {
+            cancelText.setTextColor(color)
+        }
     }
 
     /** Sets the surface color on all guts views that use it. */
+    @Deprecated("Remove with media_controls_a11y_colors")
     fun setSurfaceColor(surfaceColor: Int) {
         dismissText.setTextColor(surfaceColor)
         if (!isDismissible) {
@@ -81,6 +117,7 @@
     }
 
     /** Sets the primary accent color on all guts views that use it. */
+    @Deprecated("Remove with media_controls_a11y_colors")
     fun setAccentPrimaryColor(accentPrimary: Int) {
         val accentColorList = ColorStateList.valueOf(accentPrimary)
         settings.imageTintList = accentColorList
@@ -89,6 +126,7 @@
     }
 
     /** Sets the primary text color on all guts views that use it. */
+    @Deprecated("Remove with media_controls_a11y_colors")
     fun setTextPrimaryColor(textPrimary: Int) {
         val textColorList = ColorStateList.valueOf(textPrimary)
         gutsText.setTextColor(textColorList)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaControlViewModel.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaControlViewModel.kt
index 61e4d95..9153e17 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaControlViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaControlViewModel.kt
@@ -418,7 +418,9 @@
             )
 
         const val TURBULENCE_NOISE_PLAY_MS_DURATION = 7500L
+        @Deprecated("Remove with media_controls_a11y_colors flag")
         const val MEDIA_PLAYER_SCRIM_START_ALPHA = 0.25f
+        const val MEDIA_PLAYER_SCRIM_CENTER_ALPHA = 0.75f
         const val MEDIA_PLAYER_SCRIM_END_ALPHA = 1.0f
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
index 565b2e4..ea44184 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapterLegacy.java
@@ -185,6 +185,7 @@
             mSubTitleText.setTextColor(mController.getColorItemContent());
             mVolumeValueText.setTextColor(mController.getColorItemContent());
             mIconAreaLayout.setBackground(null);
+            updateIconAreaClickListener(null);
             mSeekBar.setProgressTintList(
                     ColorStateList.valueOf(mController.getColorSeekbarProgress()));
             enableFocusPropertyForView(mContainerLayout);
@@ -392,6 +393,11 @@
 
                 @Override
                 public void onMute() {
+                    mController.logInteractionMuteDevice(device);
+                }
+
+                @Override
+                public void onUnmute() {
                     mController.logInteractionUnmuteDevice(device);
                 }
             };
@@ -430,6 +436,9 @@
 
                 @Override
                 public void onMute() {}
+
+                @Override
+                public void onUnmute() {}
             };
 
             if (!mController.isVolumeControlEnabledForSession()) {
@@ -622,11 +631,13 @@
 
         private void updateFullItemClickListener(@Nullable View.OnClickListener listener) {
             mContainerLayout.setOnClickListener(listener);
-            updateIconAreaClickListener(listener);
         }
 
         void updateIconAreaClickListener(@Nullable View.OnClickListener listener) {
             mIconAreaLayout.setOnClickListener(listener);
+            if (listener == null) {
+                mIconAreaLayout.setClickable(false); // clickable is not removed automatically.
+            }
         }
 
         private void initAnimator() {
@@ -677,6 +688,7 @@
             mSeekBar.setOnTouchListener((v, event) -> false);
             updateIconAreaClickListener((v) -> {
                 if (volumeControl.getVolume() == 0) {
+                    volumeControl.onUnmute();
                     mSeekBar.setVolume(UNMUTE_DEFAULT_VOLUME);
                     volumeControl.setVolume(UNMUTE_DEFAULT_VOLUME);
                     updateUnmutedVolumeIcon(null);
@@ -713,6 +725,7 @@
             int getVolume();
             void setVolume(int volume);
             void onMute();
+            void onUnmute();
         }
 
         private abstract class MediaSeekBarChangedListener
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
index 28540d4..6ad8bae 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
@@ -53,6 +53,7 @@
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.snapshotFlow
 import androidx.compose.ui.Alignment
@@ -287,7 +288,7 @@
     private fun CollapsableQuickSettingsSTL() {
         val sceneState =
             rememberMutableSceneTransitionLayoutState(
-                viewModel.expansionState.toIdleSceneKey(),
+                initialScene = remember { viewModel.expansionState.toIdleSceneKey() },
                 transitions =
                     transitions {
                         from(QuickQuickSettings, QuickSettings) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
index c09d319..ff84479 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
@@ -35,7 +35,6 @@
 import com.android.systemui.classifier.Classifier
 import com.android.systemui.classifier.domain.interactor.FalsingInteractor
 import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
-import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
 import com.android.systemui.keyguard.shared.model.Edge
@@ -43,7 +42,6 @@
 import com.android.systemui.lifecycle.ExclusiveActivatable
 import com.android.systemui.lifecycle.Hydrator
 import com.android.systemui.log.table.TableLogBuffer
-import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
 import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.Companion.LOCATION_QQS
 import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.Companion.LOCATION_QS
 import com.android.systemui.media.controls.ui.view.MediaHost
@@ -101,7 +99,7 @@
     private val footerActionsController: FooterActionsController,
     private val sysuiStatusBarStateController: SysuiStatusBarStateController,
     deviceEntryInteractor: DeviceEntryInteractor,
-    DisableFlagsInteractor: DisableFlagsInteractor,
+    disableFlagsInteractor: DisableFlagsInteractor,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
     private val largeScreenShadeInterpolator: LargeScreenShadeInterpolator,
     shadeInteractor: ShadeInteractor,
@@ -119,7 +117,7 @@
     @Assisted private val lifecycleScope: LifecycleCoroutineScope,
 ) : Dumpable, ExclusiveActivatable() {
 
-    val containerViewModel = containerViewModelFactory.create(true)
+    val containerViewModel = containerViewModelFactory.create(supportsBrightnessMirroring = true)
     val quickQuickSettingsViewModel = quickQuickSettingsViewModelFactory.create()
 
     private val qqsMediaInRowViewModel = mediaInRowInLandscapeViewModelFactory.create(LOCATION_QQS)
@@ -199,8 +197,8 @@
     val isQsEnabled by
         hydrator.hydratedStateOf(
             traceName = "isQsEnabled",
-            initialValue = DisableFlagsInteractor.disableFlags.value.isQuickSettingsEnabled(),
-            source = DisableFlagsInteractor.disableFlags.map { it.isQuickSettingsEnabled() },
+            initialValue = disableFlagsInteractor.disableFlags.value.isQuickSettingsEnabled(),
+            source = disableFlagsInteractor.disableFlags.map { it.isQuickSettingsEnabled() },
         )
 
     var isInSplitShade by mutableStateOf(false)
@@ -490,12 +488,12 @@
         qqsMediaHost.apply {
             expansion = qqsMediaExpansion
             showsOnlyActiveMedia = true
-            init(MediaHierarchyManager.LOCATION_QQS)
+            init(LOCATION_QQS)
         }
         qsMediaHost.apply {
             expansion = MediaHostState.EXPANDED
             showsOnlyActiveMedia = false
-            init(MediaHierarchyManager.LOCATION_QS)
+            init(LOCATION_QS)
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/BounceableInfo.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/BounceableInfo.kt
index 302242c..eb6f979 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/BounceableInfo.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/BounceableInfo.kt
@@ -19,8 +19,6 @@
 import androidx.compose.runtime.Stable
 import com.android.compose.animation.Bounceable
 import com.android.systemui.qs.panels.shared.model.SizedTile
-import com.android.systemui.qs.panels.ui.model.GridCell
-import com.android.systemui.qs.panels.ui.model.TileGridCell
 import com.android.systemui.qs.panels.ui.viewmodel.BounceableTileViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.TileViewModel
 
@@ -32,18 +30,6 @@
     val bounceEnd: Boolean,
 )
 
-fun List<Pair<GridCell, BounceableTileViewModel>>.bounceableInfo(
-    index: Int,
-    columns: Int,
-): BounceableInfo {
-    val cell = this[index].first as TileGridCell
-    // Only look for neighbor bounceables if they are on the same row
-    val onLastColumn = cell.onLastColumn(cell.column, columns)
-    val previousTile = getOrNull(index - 1)?.takeIf { cell.column != 0 }
-    val nextTile = getOrNull(index + 1)?.takeIf { !onLastColumn }
-    return BounceableInfo(this[index].second, previousTile?.second, nextTile?.second, !onLastColumn)
-}
-
 fun List<BounceableTileViewModel>.bounceableInfo(
     sizedTile: SizedTile<TileViewModel>,
     index: Int,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
index 1a7ef62..a071206 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
@@ -144,12 +144,17 @@
     pagerState: PagerState,
     editButtonViewModelFactory: EditModeButtonViewModel.Factory,
 ) {
+    val editButtonViewModel =
+        rememberViewModel(traceName = "PaginatedGridLayout-editButtonViewModel") {
+            editButtonViewModelFactory.create()
+        }
+
     // Use requiredHeight so it won't be squished if the view doesn't quite fit. As this is
     // expected to be inside a scrollable container, this should not be an issue.
     // Also, we construct the layout this way to do the following:
     // * PagerDots is centered in the row, taking as much space as it needs.
     // * On the start side, we place the BuildNumber, taking as much space as it needs, but
-    //   constrained by the available space left over after PagerDots
+    //   constrained by the available space left over after PagerDots.
     // * On the end side, we place the edit mode button, with the same constraints as for
     //   BuildNumber (but it will usually fit, as it's just a square button).
     Row(
@@ -178,7 +183,7 @@
         )
         Row(Modifier.weight(1f)) {
             Spacer(modifier = Modifier.weight(1f))
-            EditModeButton(viewModelFactory = editButtonViewModelFactory)
+            EditModeButton(viewModel = editButtonViewModel)
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
index ebfe101..ddadb88 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
@@ -22,7 +22,6 @@
 import androidx.compose.animation.animateContentSize
 import androidx.compose.animation.core.LinearEasing
 import androidx.compose.animation.core.animateDpAsState
-import androidx.compose.animation.core.animateFloatAsState
 import androidx.compose.animation.core.tween
 import androidx.compose.animation.fadeIn
 import androidx.compose.animation.fadeOut
@@ -34,7 +33,6 @@
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.clipScrollableContainer
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.layout.Arrangement.spacedBy
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
@@ -47,28 +45,27 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredHeightIn
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.lazy.grid.GridCells
 import androidx.compose.foundation.lazy.grid.LazyGridScope
 import androidx.compose.foundation.lazy.grid.rememberLazyGridState
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.foundation.systemGestureExclusion
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material.icons.filled.Add
 import androidx.compose.material.icons.filled.Clear
-import androidx.compose.material.icons.filled.Remove
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
 import androidx.compose.material3.IconButton
 import androidx.compose.material3.LocalContentColor
-import androidx.compose.material3.LocalMinimumInteractiveComponentSize
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Scaffold
 import androidx.compose.material3.Text
@@ -91,12 +88,9 @@
 import androidx.compose.ui.draw.clip
 import androidx.compose.ui.draw.drawBehind
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.isSpecified
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.graphicsLayer
-import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.layout.layout
 import androidx.compose.ui.layout.onGloballyPositioned
@@ -113,24 +107,17 @@
 import androidx.compose.ui.semantics.stateDescription
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import androidx.compose.ui.unit.toSize
 import androidx.compose.ui.util.fastMap
-import androidx.compose.ui.zIndex
-import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.compose.animation.bounceable
 import com.android.compose.modifiers.height
 import com.android.systemui.common.ui.compose.load
 import com.android.systemui.qs.panels.shared.model.SizedTile
 import com.android.systemui.qs.panels.shared.model.SizedTileImpl
-import com.android.systemui.qs.panels.ui.compose.BounceableInfo
 import com.android.systemui.qs.panels.ui.compose.DragAndDropState
 import com.android.systemui.qs.panels.ui.compose.DragType
 import com.android.systemui.qs.panels.ui.compose.EditTileListState
-import com.android.systemui.qs.panels.ui.compose.bounceableInfo
 import com.android.systemui.qs.panels.ui.compose.dragAndDropRemoveZone
 import com.android.systemui.qs.panels.ui.compose.dragAndDropTileList
 import com.android.systemui.qs.panels.ui.compose.dragAndDropTileSource
@@ -142,13 +129,14 @@
 import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AUTO_SCROLL_SPEED
 import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AvailableTilesGridMinHeight
 import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.CurrentTilesGridPadding
-import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.TileBadgeSize
+import com.android.systemui.qs.panels.ui.compose.selection.InteractiveTileContainer
 import com.android.systemui.qs.panels.ui.compose.selection.MutableSelectionState
-import com.android.systemui.qs.panels.ui.compose.selection.ResizableTileContainer
 import com.android.systemui.qs.panels.ui.compose.selection.ResizingState
 import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation
 import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation.FinalResizeOperation
 import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation.TemporaryResizeOperation
+import com.android.systemui.qs.panels.ui.compose.selection.StaticTileBadge
+import com.android.systemui.qs.panels.ui.compose.selection.TileState
 import com.android.systemui.qs.panels.ui.compose.selection.rememberResizingState
 import com.android.systemui.qs.panels.ui.compose.selection.rememberSelectionState
 import com.android.systemui.qs.panels.ui.compose.selection.selectableTile
@@ -252,13 +240,15 @@
                 AnimatedContent(
                     targetState = listState.dragInProgress || selectionState.selected,
                     label = "QSEditHeader",
+                    contentAlignment = Alignment.Center,
+                    modifier = Modifier.fillMaxWidth().heightIn(min = 80.dp),
                 ) { showRemoveTarget ->
-                    EditGridHeader(Modifier.padding(bottom = 26.dp)) {
+                    EditGridHeader {
                         if (showRemoveTarget) {
                             RemoveTileTarget {
                                 selectionState.selection?.let {
                                     selectionState.unSelect()
-                                    onRemoveTile(it.tileSpec)
+                                    onRemoveTile(it)
                                 }
                             }
                         } else {
@@ -380,7 +370,7 @@
         verticalAlignment = Alignment.CenterVertically,
         horizontalArrangement = tileHorizontalArrangement(),
         modifier =
-            Modifier.fillMaxHeight()
+            Modifier.wrapContentSize()
                 .clickable(onClick = onClick)
                 .border(1.dp, LocalContentColor.current, shape = CircleShape)
                 .padding(10.dp),
@@ -430,22 +420,15 @@
                 )
                 .dragAndDropTileList(gridState, { gridContentOffset }, listState) { spec ->
                     onSetTiles(currentListState.tileSpecs())
-                    selectionState.select(spec, manual = false)
+                    selectionState.select(spec)
                 }
                 .onGloballyPositioned { coordinates ->
                     gridContentOffset = coordinates.positionInRoot()
                 }
                 .testTag(CURRENT_TILES_GRID_TEST_TAG),
     ) {
-        EditTiles(
-            cells,
-            columns,
-            listState,
-            selectionState,
-            coroutineScope,
-            largeTilesSpan,
-            onRemoveTile,
-        ) { resizingOperation ->
+        EditTiles(cells, listState, selectionState, coroutineScope, largeTilesSpan, onRemoveTile) {
+            resizingOperation ->
             when (resizingOperation) {
                 is TemporaryResizeOperation -> {
                     currentListState.resizeTile(resizingOperation.spec, resizingOperation.toIcon)
@@ -453,10 +436,6 @@
                 is FinalResizeOperation -> {
                     // Commit the new size of the tile
                     onResize(resizingOperation.spec, resizingOperation.toIcon)
-
-                    // Mark the selection as automatic in case the tile ends up moving to a
-                    // different row with its new size.
-                    selectionState.select(resizingOperation.spec, manual = false)
                 }
             }
         }
@@ -536,7 +515,6 @@
  * Adds a list of [GridCell] to the lazy grid
  *
  * @param cells the pairs of [GridCell] to [BounceableTileViewModel]
- * @param columns the number of columns of this tile grid
  * @param dragAndDropState the [DragAndDropState] for this grid
  * @param selectionState the [MutableSelectionState] for this grid
  * @param coroutineScope the [CoroutineScope] to be used for the tiles
@@ -545,7 +523,6 @@
  */
 fun LazyGridScope.EditTiles(
     cells: List<Pair<GridCell, BounceableTileViewModel>>,
-    columns: Int,
     dragAndDropState: DragAndDropState,
     selectionState: MutableSelectionState,
     coroutineScope: CoroutineScope,
@@ -581,7 +558,6 @@
                         onResize = onResize,
                         onRemoveTile = onRemoveTile,
                         coroutineScope = coroutineScope,
-                        bounceableInfo = cells.bounceableInfo(index, columns),
                         largeTilesSpan = largeTilesSpan,
                         modifier = Modifier.animateItem(),
                     )
@@ -601,83 +577,84 @@
     onRemoveTile: (TileSpec) -> Unit,
     coroutineScope: CoroutineScope,
     largeTilesSpan: Int,
-    bounceableInfo: BounceableInfo,
     modifier: Modifier = Modifier,
 ) {
     val stateDescription = stringResource(id = R.string.accessibility_qs_edit_position, index + 1)
-    var selected by remember { mutableStateOf(false) }
-    val showRemovalBadge =
-        !selected && cell.tile.availableEditActions.contains(AvailableEditActions.REMOVE)
-    val selectionAlpha by
-        animateFloatAsState(
-            targetValue = if (selected) 1f else 0f,
-            label = "QSEditTileSelectionAlpha",
-        )
-    val selectionColor = MaterialTheme.colorScheme.primary
-    val colors = EditModeTileDefaults.editTileColors()
-    val currentBounceableInfo by rememberUpdatedState(bounceableInfo)
+    val canShowRemovalBadge = cell.tile.availableEditActions.contains(AvailableEditActions.REMOVE)
+    var tileState by remember { mutableStateOf(TileState.None) }
 
-    LaunchedEffect(selectionState.selection?.tileSpec) {
-        selectionState.selection?.let {
-            // A delay is introduced on automatic selections such as dragged tiles or reflow caused
-            // by resizing. This avoids clipping issues on the border and resizing handle, as well
-            // as letting the selection animation play correctly.
-            if (!it.manual) {
-                delay(250)
+    LaunchedEffect(selectionState.selection, canShowRemovalBadge) {
+        tileState =
+            when {
+                selectionState.selection == cell.tile.tileSpec -> {
+                    if (tileState == TileState.None && canShowRemovalBadge) {
+                        // The tile decoration is None if a tile is newly composed OR the removal
+                        // badge can't be shown.
+                        // For newly composed and selected tiles, such as dragged tiles or moved
+                        // tiles from resizing, introduce a short delay. This avoids clipping issues
+                        // on the border and resizing handle, as well as letting the selection
+                        // animation play correctly.
+                        delay(250)
+                    }
+                    TileState.Selected
+                }
+                canShowRemovalBadge -> TileState.Removable
+                else -> TileState.None
             }
-        }
-        selected = selectionState.selection?.tileSpec == cell.tile.tileSpec
     }
 
-    val state = rememberResizingState(cell.tile.tileSpec, cell.isIcon)
-
+    val resizingState = rememberResizingState(cell.tile.tileSpec, cell.isIcon)
     val progress: () -> Float = {
-        if (selected) {
-            // If selected, return the manual progress from the drag
-            state.progress()
+        if (tileState == TileState.Selected) {
+            resizingState.progress()
         } else {
-            // Else, return the target progress for the tile format
             if (cell.isIcon) 0f else 1f
         }
     }
 
-    if (!selected) {
+    if (tileState != TileState.Selected) {
         // Update the draggable anchor state when the tile's size is not manually toggled
-        LaunchedEffect(cell.isIcon) { state.updateCurrentValue(cell.isIcon) }
+        LaunchedEffect(cell.isIcon) { resizingState.updateCurrentValue(cell.isIcon) }
     } else {
         // If the tile is selected, listen to new target values from the draggable anchor to toggle
         // the tile's size
-        LaunchedEffect(state.temporaryResizeOperation) { onResize(state.temporaryResizeOperation) }
-        LaunchedEffect(state.finalResizeOperation) { onResize(state.finalResizeOperation) }
+        LaunchedEffect(resizingState.temporaryResizeOperation) {
+            onResize(resizingState.temporaryResizeOperation)
+        }
+        LaunchedEffect(resizingState.finalResizeOperation) {
+            onResize(resizingState.finalResizeOperation)
+        }
     }
 
     val totalPadding =
         with(LocalDensity.current) { (largeTilesSpan - 1) * TileArrangementPadding.roundToPx() }
-
-    ResizableTileContainer(
-        selected = selected,
-        state = state,
-        selectionAlpha = { selectionAlpha },
-        selectionColor = selectionColor,
+    val colors = EditModeTileDefaults.editTileColors()
+    val toggleSizeLabel = stringResource(R.string.accessibility_qs_edit_toggle_tile_size_action)
+    val clickLabel =
+        when (tileState) {
+            TileState.None -> null
+            TileState.Removable ->
+                stringResource(id = R.string.accessibility_qs_edit_remove_tile_action)
+            TileState.Selected -> toggleSizeLabel
+        }
+    InteractiveTileContainer(
+        tileState = tileState,
+        resizingState = resizingState,
         modifier =
-            modifier
-                .height(TileHeight)
-                .fillMaxWidth()
-                .onSizeChanged {
-                    // Grab the size before the bounceable to get the idle width
-                    val min =
-                        if (cell.isIcon) it.width else (it.width - totalPadding) / largeTilesSpan
-                    val max =
-                        if (cell.isIcon) (it.width * largeTilesSpan) + totalPadding else it.width
-                    state.updateAnchors(min.toFloat(), max.toFloat())
-                }
-                .bounceable(
-                    bounceable = currentBounceableInfo.bounceable,
-                    previousBounceable = currentBounceableInfo.previousTile,
-                    nextBounceable = currentBounceableInfo.nextTile,
-                    orientation = Orientation.Horizontal,
-                    bounceEnd = currentBounceableInfo.bounceEnd,
-                ),
+            modifier.height(TileHeight).fillMaxWidth().onSizeChanged {
+                // Calculate the min/max width from the idle size
+                val min = if (cell.isIcon) it.width else (it.width - totalPadding) / largeTilesSpan
+                val max = if (cell.isIcon) (it.width * largeTilesSpan) + totalPadding else it.width
+                resizingState.updateAnchors(min.toFloat(), max.toFloat())
+            },
+        onClick = {
+            if (tileState == TileState.Removable) {
+                onRemoveTile(cell.tile.tileSpec)
+            } else if (tileState == TileState.Selected) {
+                coroutineScope.launch { resizingState.toggleCurrentValue() }
+            }
+        },
+        onClickLabel = clickLabel,
     ) {
         Box(
             modifier
@@ -688,15 +665,13 @@
                     customActions =
                         listOf(
                             // TODO(b/367748260): Add final accessibility actions
-                            CustomAccessibilityAction("Toggle size") {
+                            CustomAccessibilityAction(toggleSizeLabel) {
                                 onResize(FinalResizeOperation(cell.tile.tileSpec, !cell.isIcon))
                                 true
                             }
                         )
                 }
-                .selectableTile(cell.tile.tileSpec, selectionState) {
-                    coroutineScope.launch { currentBounceableInfo.bounceable.animateBounce() }
-                }
+                .selectableTile(cell.tile.tileSpec, selectionState)
                 .dragAndDropTileSource(
                     SizedTileImpl(cell.tile, cell.width),
                     dragAndDropState,
@@ -705,16 +680,7 @@
                 )
                 .tileBackground(colors.background)
         ) {
-            EditTile(tile = cell.tile, state = state, progress = progress)
-        }
-
-        if (showRemovalBadge) {
-            TileBadge(
-                icon = Icons.Default.Remove,
-                contentDescription = stringResource(R.string.qs_customize_remove),
-            ) {
-                onRemoveTile(cell.tile.tileSpec)
-            }
+            EditTile(tile = cell.tile, state = resizingState, progress = progress)
         }
     }
 }
@@ -733,7 +699,7 @@
     val colors = EditModeTileDefaults.editTileColors()
     val onClick = {
         onAddTile(cell.tile.tileSpec)
-        selectionState.select(cell.tile.tileSpec, manual = false)
+        selectionState.select(cell.tile.tileSpec)
     }
 
     // Displays the tile as an icon tile with the label underneath
@@ -742,10 +708,9 @@
         verticalArrangement = spacedBy(CommonTileDefaults.TilePadding, Alignment.Top),
         modifier = modifier,
     ) {
-        Box {
+        Box(Modifier.fillMaxWidth().height(TileHeight)) {
             Box(
-                Modifier.fillMaxWidth()
-                    .height(TileHeight)
+                Modifier.fillMaxSize()
                     .clickable(onClick = onClick, onClickLabel = onClickActionName)
                     .semantics(mergeDescendants = true) { this.stateDescription = stateDescription }
                     .dragAndDropTileSource(
@@ -756,7 +721,6 @@
                         selectionState.unSelect()
                     }
                     .tileBackground(colors.background)
-                    .tilePadding()
             ) {
                 // Icon
                 SmallTileContent(
@@ -767,7 +731,7 @@
                 )
             }
 
-            TileBadge(
+            StaticTileBadge(
                 icon = Icons.Default.Add,
                 contentDescription = onClickActionName,
                 onClick = onClick,
@@ -787,39 +751,6 @@
 }
 
 @Composable
-private fun TileBadge(icon: ImageVector, contentDescription: String?, onClick: () -> Unit) {
-    // Use a higher zIndex than the tile to draw over it, and manually create the touch target as
-    // we're drawing over neighbor tiles as well.
-    val minTouchTargetSize = LocalMinimumInteractiveComponentSize.current
-
-    Box(
-        Modifier.zIndex(2f)
-            .layout { measurable, constraints ->
-                val size = minTouchTargetSize.roundToPx()
-                val placeable = measurable.measure(Constraints(size))
-                layout(placeable.width, placeable.height) {
-                    val iconRadius = TileBadgeSize.roundToPx() / 2
-                    val x = constraints.maxWidth - placeable.width / 2 - iconRadius
-                    val y = 0 - placeable.height / 2 + iconRadius
-                    placeable.place(x, y)
-                }
-            }
-            .systemGestureExclusion { Rect(Offset.Zero, it.size.toSize()) }
-            .pointerInput(Unit) { detectTapGestures { onClick() } }
-    ) {
-        val secondaryColor = MaterialTheme.colorScheme.secondary
-        Icon(
-            icon,
-            contentDescription = contentDescription,
-            modifier =
-                Modifier.size(TileBadgeSize).align(Alignment.Center).drawBehind {
-                    drawCircle(secondaryColor)
-                },
-        )
-    }
-}
-
-@Composable
 private fun SpacerGridCell(modifier: Modifier = Modifier) {
     // By default, spacers are invisible and exist purely to catch drag movements
     Box(modifier.height(TileHeight).fillMaxWidth())
@@ -902,9 +833,8 @@
     const val PLACEHOLDER_ALPHA = .3f
     const val AUTO_SCROLL_DISTANCE = 100
     const val AUTO_SCROLL_SPEED = 2 // 2ms per pixel
-    val CurrentTilesGridPadding = 8.dp
+    val CurrentTilesGridPadding = 10.dp
     val AvailableTilesGridMinHeight = 200.dp
-    val TileBadgeSize = 20.dp
 
     @Composable
     fun editTileColors(): TileColors =
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/Tile.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/Tile.kt
index 47238d1..d73dc87 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/Tile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/Tile.kt
@@ -245,6 +245,7 @@
         color = color(),
         shape = shape,
         modifier = modifier.clip(shape).verticalSquish(squishiness),
+        useModifierBasedImplementation = true,
     ) {
         content(hapticsViewModel?.createStateAwareExpandable(it) ?: it)
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
index 26dfc72..3dfde86 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
@@ -32,23 +32,17 @@
     return remember { MutableSelectionState() }
 }
 
-/**
- * Holds the selected [TileSpec] and whether the selection was manual, i.e. caused by a tap from the
- * user.
- */
-data class Selection(val tileSpec: TileSpec, val manual: Boolean)
-
 /** Holds the state of the current selection. */
 class MutableSelectionState {
-    /** The [Selection] if a tile is selected, null if not. */
-    var selection by mutableStateOf<Selection?>(null)
+    /** The [TileSpec] of a tile is selected, null if not. */
+    var selection by mutableStateOf<TileSpec?>(null)
         private set
 
     val selected: Boolean
         get() = selection != null
 
-    fun select(tileSpec: TileSpec, manual: Boolean) {
-        selection = Selection(tileSpec, manual)
+    fun select(tileSpec: TileSpec) {
+        selection = tileSpec
     }
 
     fun unSelect() {
@@ -68,10 +62,10 @@
     return pointerInput(Unit) {
         detectTapGestures(
             onTap = {
-                if (selectionState.selection?.tileSpec == tileSpec) {
+                if (selectionState.selection == tileSpec) {
                     selectionState.unSelect()
                 } else {
-                    selectionState.select(tileSpec, manual = true)
+                    selectionState.select(tileSpec)
                 }
                 onClick()
             }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/Selection.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/Selection.kt
index 7c47263..699e5f6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/Selection.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/Selection.kt
@@ -16,141 +16,232 @@
 
 package com.android.systemui.qs.panels.ui.compose.selection
 
-import androidx.compose.animation.core.Spring
-import androidx.compose.animation.core.animateDpAsState
-import androidx.compose.animation.core.animateFloatAsState
-import androidx.compose.animation.core.spring
-import androidx.compose.foundation.Canvas
+import androidx.compose.animation.animateColor
+import androidx.compose.animation.core.Transition
+import androidx.compose.animation.core.animateFloat
+import androidx.compose.animation.core.animateOffset
+import androidx.compose.animation.core.animateSize
+import androidx.compose.animation.core.updateTransition
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.anchoredDraggable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.systemGestureExclusion
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Remove
+import androidx.compose.material3.Icon
 import androidx.compose.material3.LocalMinimumInteractiveComponentSize
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.State
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.drawBehind
 import androidx.compose.ui.draw.drawWithContent
 import androidx.compose.ui.geometry.CornerRadius
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.geometry.center
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.SolidColor
 import androidx.compose.ui.graphics.drawscope.Stroke
+import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.layout.layout
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.toSize
 import androidx.compose.ui.zIndex
+import com.android.compose.modifiers.size
 import com.android.systemui.qs.panels.ui.compose.infinitegrid.CommonTileDefaults.InactiveCornerRadius
-import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.ResizingDotSize
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.BADGE_ANGLE_RAD
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.BadgeSize
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.BadgeXOffset
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.BadgeYOffset
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.RESIZING_PILL_ANGLE_RAD
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.ResizingPillHeight
+import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.ResizingPillWidth
 import com.android.systemui.qs.panels.ui.compose.selection.SelectionDefaults.SelectedBorderWidth
+import com.android.systemui.qs.panels.ui.compose.selection.TileState.None
+import com.android.systemui.qs.panels.ui.compose.selection.TileState.Removable
+import com.android.systemui.qs.panels.ui.compose.selection.TileState.Selected
+import kotlin.math.cos
 import kotlin.math.roundToInt
-import kotlinx.coroutines.launch
+import kotlin.math.sin
 
 /**
- * Places a dot to handle resizing drag events. Use this on tiles to resize.
+ * Draws a tile decoration and handles click and drag events for them.
  *
- * The dot is placed vertically centered on the right border. The [content] will have a border when
- * selected.
+ * In states:
+ * - [TileState.Removable]: removal icon shown in the top end
+ * - [TileState.Selected]: pill shaped handle shown on the end border, as well as a colored border
+ *   around the content.
+ * - [TileState.None]: nothing
  *
- * @param selected whether resizing drag events should be handled
- * @param state the [ResizingState] for the tile
- * @param selectionAlpha the animated value for the dot and border alpha
- * @param selectionColor the [Color] of the dot and border
+ * @param tileState the state for the tile decoration
+ * @param resizingState the [ResizingState] for the tile
+ * @param onClick the callback when the tile decoration is clicked
  */
 @Composable
-fun ResizableTileContainer(
-    selected: Boolean,
-    state: ResizingState,
-    selectionAlpha: () -> Float,
-    selectionColor: Color,
+fun InteractiveTileContainer(
+    tileState: TileState,
+    resizingState: ResizingState,
     modifier: Modifier = Modifier,
+    onClick: () -> Unit = {},
+    onClickLabel: String? = null,
     content: @Composable BoxScope.() -> Unit = {},
 ) {
-    Box(modifier.resizable(selected, state).selectionBorder(selectionColor, selectionAlpha)) {
-        content()
-        ResizingHandle(
-            enabled = selected,
-            state = state,
-            modifier =
-                // Higher zIndex to make sure the handle is drawn above the content
-                Modifier.zIndex(if (selected) 2f else 1f),
-        )
-    }
-}
+    val transition: Transition<TileState> = updateTransition(tileState)
+    val decorationColor by transition.animateColor()
+    val decorationAngle by transition.animateAngle()
+    val decorationSize by transition.animateSize()
+    val decorationOffset by transition.animateOffset()
+    val decorationAlpha by transition.animateFloat { state -> if (state == None) 0f else 1f }
+    val badgeIconAlpha by transition.animateFloat { state -> if (state == Removable) 1f else 0f }
+    val selectionBorderAlpha by
+        transition.animateFloat { state -> if (state == Selected) 1f else 0f }
 
-@Composable
-private fun ResizingHandle(enabled: Boolean, state: ResizingState, modifier: Modifier = Modifier) {
-    // Manually creating the touch target around the resizing dot to ensure that the next tile
-    // does not receive the touch input accidentally.
-    val minTouchTargetSize = LocalMinimumInteractiveComponentSize.current
-    val scope = rememberCoroutineScope()
     Box(
-        modifier
-            .layout { measurable, constraints ->
-                val size = minTouchTargetSize.roundToPx()
-                val placeable = measurable.measure(Constraints(size, size, size, size))
-                layout(placeable.width, placeable.height) {
-                    placeable.place(
-                        x = constraints.maxWidth - placeable.width / 2,
-                        y = constraints.maxHeight / 2 - placeable.height / 2,
-                    )
-                }
-            }
-            .systemGestureExclusion { Rect(Offset.Zero, it.size.toSize()) }
-            .anchoredDraggable(
-                enabled = enabled,
-                state = state.anchoredDraggableState,
-                orientation = Orientation.Horizontal,
-            )
-            .clickable(enabled = enabled, interactionSource = null, indication = null) {
-                scope.launch { state.toggleCurrentValue() }
-            }
+        modifier.resizable(tileState == Selected, resizingState).selectionBorder(
+            MaterialTheme.colorScheme.primary,
+            SelectedBorderWidth,
+        ) {
+            selectionBorderAlpha
+        }
     ) {
-        ResizingDot(enabled = enabled, modifier = Modifier.align(Alignment.Center))
-    }
-}
+        content()
 
-@Composable
-private fun ResizingDot(
-    enabled: Boolean,
-    modifier: Modifier = Modifier,
-    color: Color = MaterialTheme.colorScheme.primary,
-) {
-    val alpha by animateFloatAsState(if (enabled) 1f else 0f)
-    val radius by
-        animateDpAsState(
-            if (enabled) ResizingDotSize / 2 else 0.dp,
-            animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy),
-        )
-    Canvas(modifier = modifier.size(ResizingDotSize)) {
-        drawCircle(color = color, radius = radius.toPx(), alpha = alpha)
+        MinimumInteractiveSizeComponent(
+            angle = { decorationAngle },
+            offset = { decorationOffset },
+        ) {
+            Box(
+                Modifier.fillMaxSize()
+                    .drawBehind {
+                        drawRoundRect(
+                            color = decorationColor,
+                            topLeft = center - decorationSize.center,
+                            size = decorationSize,
+                            cornerRadius = CornerRadius(size.width / 2),
+                        )
+                    }
+                    .graphicsLayer { this.alpha = decorationAlpha }
+                    .anchoredDraggable(
+                        enabled = tileState == Selected,
+                        state = resizingState.anchoredDraggableState,
+                        orientation = Orientation.Horizontal,
+                    )
+                    .clickable(
+                        enabled = tileState != None,
+                        interactionSource = null,
+                        indication = null,
+                        onClickLabel = onClickLabel,
+                        onClick = onClick,
+                    )
+            ) {
+                Icon(
+                    Icons.Default.Remove,
+                    contentDescription = null,
+                    modifier =
+                        Modifier.size(
+                                width = { decorationSize.width.roundToInt() },
+                                height = { decorationSize.height.roundToInt() },
+                            )
+                            .align(Alignment.Center)
+                            .graphicsLayer { this.alpha = badgeIconAlpha },
+                )
+            }
+        }
     }
 }
 
 private fun Modifier.selectionBorder(
     selectionColor: Color,
+    selectionBorderWidth: Dp,
     selectionAlpha: () -> Float = { 0f },
 ): Modifier {
     return drawWithContent {
         drawContent()
+
+        // Draw the border on the inside of the tile
+        val borderWidth = selectionBorderWidth.toPx()
         drawRoundRect(
             SolidColor(selectionColor),
             cornerRadius = CornerRadius(InactiveCornerRadius.toPx()),
-            style = Stroke(SelectedBorderWidth.toPx()),
+            topLeft = Offset(borderWidth / 2, borderWidth / 2),
+            size = Size(size.width - borderWidth, size.height - borderWidth),
+            style = Stroke(borderWidth),
             alpha = selectionAlpha(),
         )
     }
 }
 
 @Composable
+fun StaticTileBadge(icon: ImageVector, contentDescription: String?, onClick: () -> Unit) {
+    val offset = with(LocalDensity.current) { Offset(BadgeXOffset.toPx(), BadgeYOffset.toPx()) }
+    MinimumInteractiveSizeComponent(angle = { BADGE_ANGLE_RAD }, offset = { offset }) {
+        Box(
+            Modifier.fillMaxSize()
+                .clickable(
+                    interactionSource = null,
+                    indication = null,
+                    onClickLabel = contentDescription,
+                    onClick = onClick,
+                )
+        ) {
+            val secondaryColor = MaterialTheme.colorScheme.secondary
+            Icon(
+                icon,
+                contentDescription = contentDescription,
+                modifier =
+                    Modifier.size(BadgeSize).align(Alignment.Center).drawBehind {
+                        drawCircle(secondaryColor)
+                    },
+            )
+        }
+    }
+}
+
+@Composable
+private fun MinimumInteractiveSizeComponent(
+    angle: () -> Float,
+    offset: () -> Offset,
+    content: @Composable BoxScope.() -> Unit,
+) {
+    // Use a higher zIndex than the tile to draw over it, and manually create the touch target
+    // as we're drawing over neighbor tiles as well.
+    val minTouchTargetSize = LocalMinimumInteractiveComponentSize.current
+    Box(
+        contentAlignment = Alignment.Center,
+        modifier =
+            Modifier.zIndex(2f)
+                .systemGestureExclusion { Rect(Offset.Zero, it.size.toSize()) }
+                .layout { measurable, constraints ->
+                    val size = minTouchTargetSize.roundToPx()
+                    val placeable = measurable.measure(Constraints.fixed(size, size))
+                    layout(placeable.width, placeable.height) {
+                        val radius = constraints.maxHeight / 2f
+                        val rotationCenter = Offset(constraints.maxWidth - radius, radius)
+                        val position = offsetForAngle(angle(), radius, rotationCenter) + offset()
+                        placeable.place(
+                            position.x.roundToInt() - placeable.width / 2,
+                            position.y.roundToInt() - placeable.height / 2,
+                        )
+                    }
+                },
+        content = content,
+    )
+}
+
+@Composable
 private fun Modifier.resizable(selected: Boolean, state: ResizingState): Modifier {
     if (!selected) return zIndex(1f)
 
@@ -165,7 +256,69 @@
     }
 }
 
+enum class TileState {
+    None,
+    Removable,
+    Selected,
+}
+
+@Composable
+private fun Transition<TileState>.animateColor(): State<Color> {
+    return animateColor { state ->
+        when (state) {
+            None -> Color.Transparent
+            Removable -> MaterialTheme.colorScheme.secondary
+            Selected -> MaterialTheme.colorScheme.primary
+        }
+    }
+}
+
+@Composable
+private fun Transition<TileState>.animateAngle(): State<Float> {
+    return animateFloat { state ->
+        if (state == Removable) BADGE_ANGLE_RAD else RESIZING_PILL_ANGLE_RAD
+    }
+}
+
+@Composable
+private fun Transition<TileState>.animateSize(): State<Size> {
+    return animateSize { state ->
+        with(LocalDensity.current) {
+            when (state) {
+                None -> Size.Zero
+                Removable -> Size(BadgeSize.toPx())
+                Selected -> Size(ResizingPillWidth.toPx(), ResizingPillHeight.toPx())
+            }
+        }
+    }
+}
+
+@Composable
+private fun Transition<TileState>.animateOffset(): State<Offset> {
+    return animateOffset { state ->
+        with(LocalDensity.current) {
+            when (state) {
+                None -> Offset.Zero
+                Removable -> Offset(BadgeXOffset.toPx(), BadgeYOffset.toPx())
+                Selected -> Offset(-SelectedBorderWidth.toPx(), 0f)
+            }
+        }
+    }
+}
+
+private fun Size(size: Float) = Size(size, size)
+
+private fun offsetForAngle(angle: Float, radius: Float, center: Offset): Offset {
+    return Offset(x = radius * cos(angle) + center.x, y = radius * sin(angle) + center.y)
+}
+
 private object SelectionDefaults {
-    val ResizingDotSize = 16.dp
     val SelectedBorderWidth = 2.dp
+    val BadgeSize = 24.dp
+    val BadgeXOffset = -4.dp
+    val BadgeYOffset = 4.dp
+    val ResizingPillWidth = 8.dp
+    val ResizingPillHeight = 16.dp
+    const val BADGE_ANGLE_RAD = -.8f
+    const val RESIZING_PILL_ANGLE_RAD = 0f
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/EditModeButton.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/EditModeButton.kt
index f3c06a4..dc02fbb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/EditModeButton.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/EditModeButton.kt
@@ -29,17 +29,12 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
-import com.android.systemui.lifecycle.rememberViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.toolbar.EditModeButtonViewModel
 import com.android.systemui.qs.ui.compose.borderOnFocus
 import com.android.systemui.res.R
 
 @Composable
-fun EditModeButton(
-    viewModelFactory: EditModeButtonViewModel.Factory,
-    modifier: Modifier = Modifier,
-) {
-    val viewModel = rememberViewModel(traceName = "EditModeButton") { viewModelFactory.create() }
+fun EditModeButton(viewModel: EditModeButtonViewModel, modifier: Modifier = Modifier) {
     CompositionLocalProvider(
         value = LocalContentColor provides MaterialTheme.colorScheme.onSurface
     ) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/Toolbar.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/Toolbar.kt
index 59c554c..360266a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/Toolbar.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/toolbar/Toolbar.kt
@@ -22,28 +22,32 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import com.android.systemui.compose.modifiers.sysuiResTag
-import com.android.systemui.lifecycle.rememberViewModel
 import com.android.systemui.qs.footer.ui.compose.IconButton
 import com.android.systemui.qs.panels.ui.viewmodel.toolbar.ToolbarViewModel
 
 @Composable
-fun Toolbar(toolbarViewModelFactory: ToolbarViewModel.Factory, modifier: Modifier = Modifier) {
-    val viewModel = rememberViewModel("Toolbar") { toolbarViewModelFactory.create() }
-
+fun Toolbar(viewModel: ToolbarViewModel, modifier: Modifier = Modifier) {
     Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
         viewModel.userSwitcherViewModel?.let {
-            IconButton(it, Modifier.sysuiResTag("multi_user_switch"))
+            IconButton(
+                it,
+                useModifierBasedExpandable = true,
+                Modifier.sysuiResTag("multi_user_switch"),
+            )
         }
 
-        EditModeButton(viewModel.editModeButtonViewModelFactory)
+        EditModeButton(viewModel.editModeButtonViewModel)
 
         IconButton(
             viewModel.settingsButtonViewModel,
+            useModifierBasedExpandable = true,
             Modifier.sysuiResTag("settings_button_container"),
         )
 
         Spacer(modifier = Modifier.weight(1f))
 
-        viewModel.powerButtonViewModel?.let { IconButton(it, Modifier.sysuiResTag("pm_lite")) }
+        viewModel.powerButtonViewModel?.let {
+            IconButton(it, useModifierBasedExpandable = true, Modifier.sysuiResTag("pm_lite"))
+        }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegate.kt
index cbece2c..d266600 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegate.kt
@@ -28,6 +28,7 @@
 import com.android.systemui.dialog.ui.composable.AlertDialogContent
 import com.android.systemui.qs.panels.domain.interactor.EditTilesResetInteractor
 import com.android.systemui.res.R
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.ComponentSystemUIDialog
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.phone.SystemUIDialogFactory
@@ -40,6 +41,7 @@
 @Inject
 constructor(
     private val sysuiDialogFactory: SystemUIDialogFactory,
+    private val shadeDialogContextInteractor: ShadeDialogContextInteractor,
     private val resetInteractor: EditTilesResetInteractor,
 ) : SystemUIDialog.Delegate {
     private var currentDialog: ComponentSystemUIDialog? = null
@@ -53,7 +55,9 @@
 
         currentDialog =
             sysuiDialogFactory
-                .create { ResetConfirmationDialog(it) }
+                .create(context = shadeDialogContextInteractor.context) {
+                    ResetConfirmationDialog(it)
+                }
                 .also {
                     it.lifecycle.addObserver(
                         object : DefaultLifecycleObserver {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
index fe5eec8..846e068 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
@@ -16,7 +16,6 @@
 
 package com.android.systemui.qs.panels.ui.viewmodel
 
-import androidx.compose.runtime.getValue
 import com.android.systemui.classifier.Classifier.QS_SWIPE_SIDE
 import com.android.systemui.classifier.domain.interactor.FalsingInteractor
 import com.android.systemui.development.ui.viewmodel.BuildNumberViewModel
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/toolbar/ToolbarViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/toolbar/ToolbarViewModel.kt
index 1a6653c..e54bfa2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/toolbar/ToolbarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/toolbar/ToolbarViewModel.kt
@@ -45,7 +45,7 @@
 class ToolbarViewModel
 @AssistedInject
 constructor(
-    val editModeButtonViewModelFactory: EditModeButtonViewModel.Factory,
+    editModeButtonViewModelFactory: EditModeButtonViewModel.Factory,
     private val footerActionsInteractor: FooterActionsInteractor,
     private val globalActionsDialogLiteProvider: Provider<GlobalActionsDialogLite>,
     private val falsingInteractor: FalsingInteractor,
@@ -83,6 +83,8 @@
                 ),
         )
 
+    val editModeButtonViewModel: EditModeButtonViewModel = editModeButtonViewModelFactory.create()
+
     override suspend fun onActivated(): Nothing {
         coroutineScope {
             launch {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt
index d0f2580..76ff885 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt
@@ -16,7 +16,6 @@
 
 package com.android.systemui.qs.tiles.impl.saver.domain
 
-import android.content.Context
 import android.content.DialogInterface
 import android.content.SharedPreferences
 import android.os.Bundle
@@ -24,7 +23,7 @@
 import com.android.internal.R
 import com.android.systemui.coroutines.newTracingContext
 import com.android.systemui.qs.tiles.impl.saver.domain.interactor.DataSaverTileUserActionInteractor
-import com.android.systemui.shade.ShadeDisplayAware
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.policy.DataSaverController
 import kotlin.coroutines.CoroutineContext
@@ -32,13 +31,13 @@
 
 class DataSaverDialogDelegate(
     private val sysuiDialogFactory: SystemUIDialog.Factory,
-    @ShadeDisplayAware private val context: Context,
+    private val contextInteractor: ShadeDialogContextInteractor,
     private val backgroundContext: CoroutineContext,
     private val dataSaverController: DataSaverController,
     private val sharedPreferences: SharedPreferences,
 ) : SystemUIDialog.Delegate {
     override fun createDialog(): SystemUIDialog {
-        return sysuiDialogFactory.create(this, context)
+        return sysuiDialogFactory.create(this, contextInteractor.context)
     }
 
     override fun beforeCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractor.kt
index 05bdf0a..63a9f59 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileUserActionInteractor.kt
@@ -22,7 +22,6 @@
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.systemui.animation.DialogCuj
 import com.android.systemui.animation.DialogTransitionAnimator
-import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
@@ -33,6 +32,7 @@
 import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction
 import com.android.systemui.settings.UserFileManager
 import com.android.systemui.shade.ShadeDisplayAware
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.SystemUIDialog
 import com.android.systemui.statusbar.policy.DataSaverController
 import javax.inject.Inject
@@ -44,6 +44,7 @@
 @Inject
 constructor(
     @ShadeDisplayAware private val context: Context,
+    private val contextInteractor: ShadeDialogContextInteractor,
     @Main private val coroutineContext: CoroutineContext,
     @Background private val backgroundContext: CoroutineContext,
     private val dataSaverController: DataSaverController,
@@ -79,18 +80,19 @@
                         val dialogDelegate =
                             DataSaverDialogDelegate(
                                 systemUIDialogFactory,
-                                context,
+                                contextInteractor,
                                 backgroundContext,
                                 dataSaverController,
-                                sharedPreferences
+                                sharedPreferences,
                             )
-                        val dialog = systemUIDialogFactory.create(dialogDelegate, context)
+                        val dialog =
+                            systemUIDialogFactory.create(dialogDelegate, contextInteractor.context)
 
                         action.expandable
                             ?.dialogTransitionController(
                                 DialogCuj(
                                     InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
-                                    INTERACTION_JANK_TAG
+                                    INTERACTION_JANK_TAG,
                                 )
                             )
                             ?.let { controller ->
@@ -101,7 +103,7 @@
                 is QSTileUserAction.LongClick -> {
                     qsTileIntentUserActionHandler.handle(
                         action.expandable,
-                        Intent(Settings.ACTION_DATA_SAVER_SETTINGS)
+                        Intent(Settings.ACTION_DATA_SAVER_SETTINGS),
                     )
                 }
                 is QSTileUserAction.ToggleClick -> {}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
index 68fd2f5..f9b1a36 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
@@ -20,6 +20,10 @@
 import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
 import com.android.systemui.lifecycle.ExclusiveActivatable
 import com.android.systemui.lifecycle.Hydrator
+import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
+import com.android.systemui.media.controls.ui.controller.MediaCarouselController
+import com.android.systemui.media.controls.ui.view.MediaHost
+import com.android.systemui.media.dagger.MediaModule
 import com.android.systemui.qs.panels.ui.viewmodel.DetailsViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.EditModeViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.TileGridViewModel
@@ -29,6 +33,7 @@
 import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
+import javax.inject.Named
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.map
@@ -41,10 +46,14 @@
     shadeHeaderViewModelFactory: ShadeHeaderViewModel.Factory,
     tileGridViewModelFactory: TileGridViewModel.Factory,
     @Assisted supportsBrightnessMirroring: Boolean,
+    @Assisted private val expansion: Float?,
     val editModeViewModel: EditModeViewModel,
     val detailsViewModel: DetailsViewModel,
-    val toolbarViewModelFactory: ToolbarViewModel.Factory,
+    toolbarViewModelFactory: ToolbarViewModel.Factory,
     shadeModeInteractor: ShadeModeInteractor,
+    mediaCarouselInteractor: MediaCarouselInteractor,
+    val mediaCarouselController: MediaCarouselController,
+    @Named(MediaModule.QS_PANEL) val mediaHost: MediaHost,
 ) : ExclusiveActivatable() {
 
     private val hydrator = Hydrator("QuickSettingsContainerViewModel.hydrator")
@@ -52,6 +61,8 @@
     val brightnessSliderViewModel =
         brightnessSliderViewModelFactory.create(supportsBrightnessMirroring)
 
+    val toolbarViewModel = toolbarViewModelFactory.create()
+
     val shadeHeaderViewModel = shadeHeaderViewModelFactory.create()
 
     val tileGridViewModel = tileGridViewModelFactory.create()
@@ -63,10 +74,18 @@
             source = shadeModeInteractor.isShadeLayoutWide.map { !it },
         )
 
+    val showMedia: Boolean by
+        hydrator.hydratedStateOf(
+            traceName = "showMedia",
+            source = mediaCarouselInteractor.hasActiveMediaOrRecommendation,
+        )
+
     override suspend fun onActivated(): Nothing {
         coroutineScope {
+            expansion?.let { mediaHost.expansion = it }
             launch { hydrator.activate() }
             launch { brightnessSliderViewModel.activate() }
+            launch { toolbarViewModel.activate() }
             launch { shadeHeaderViewModel.activate() }
             launch { tileGridViewModel.activate() }
             awaitCancellation()
@@ -75,6 +94,9 @@
 
     @AssistedFactory
     interface Factory {
-        fun create(supportsBrightnessMirroring: Boolean): QuickSettingsContainerViewModel
+        fun create(
+            supportsBrightnessMirroring: Boolean,
+            expansion: Float? = null,
+        ): QuickSettingsContainerViewModel
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt b/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt
index 862dba1..e775231 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt
@@ -65,8 +65,7 @@
      * [userDetailViewAdapterProvider] and show it as launched from [expandable].
      */
     fun showDialog(expandable: Expandable) {
-        val context = shadeDialogContextInteractor.context
-        with(dialogFactory.create(context)) {
+        with(dialogFactory.create(shadeDialogContextInteractor.context)) {
             setShowForAllUsers(true)
             setCanceledOnTouchOutside(true)
 
diff --git a/packages/SystemUI/src/com/android/systemui/rotationlock/DeviceStateAutoRotateModule.kt b/packages/SystemUI/src/com/android/systemui/rotationlock/DeviceStateAutoRotateModule.kt
new file mode 100644
index 0000000..6282802
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/rotationlock/DeviceStateAutoRotateModule.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.rotationlock
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.policy.DeviceStateRotationLockSettingController
+import com.android.window.flags.Flags
+import dagger.Module
+import dagger.Provides
+import java.util.Optional
+import javax.inject.Provider
+import javax.inject.Qualifier
+
+@Module
+class DeviceStateAutoRotateModule {
+    /** Qualifier for dependencies to be bound with [DeviceStateAutoRotateModule]. */
+    @Qualifier
+    @MustBeDocumented
+    @Retention(AnnotationRetention.RUNTIME)
+    annotation class BoundsDeviceStateAutoRotateModule
+
+    /**
+     * Provides an instance of [DeviceStateRotationLockSettingController].
+     *
+     * @param controllerProvider The provider for [DeviceStateRotationLockSettingController].
+     * @return An [Optional] containing the [DeviceStateRotationLockSettingController] instance if
+     *   the `Flags.enableDeviceStateAutoRotateSettingRefactor()` flag is disabled, or an empty
+     *   [Optional] otherwise.
+     */
+    @Provides
+    @BoundsDeviceStateAutoRotateModule
+    @SysUISingleton
+    fun provideDeviceStateRotationLockSettingController(
+        controllerProvider: Provider<DeviceStateRotationLockSettingController>
+    ): Optional<DeviceStateRotationLockSettingController> =
+        if (Flags.enableDeviceStateAutoRotateSettingRefactor()) {
+            Optional.empty()
+        } else {
+            Optional.of(controllerProvider.get())
+        }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractor.kt
index 186bfcb..a4de1d67 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractor.kt
@@ -17,11 +17,19 @@
 package com.android.systemui.shade.domain.interactor
 
 import android.content.Intent
+import android.content.IntentFilter
+import android.os.UserHandle
 import android.provider.AlarmClock
+import com.android.systemui.broadcast.BroadcastDispatcher
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.shade.data.repository.ShadeHeaderClockRepository
+import com.android.systemui.util.kotlin.emitOnStart
+import com.android.systemui.util.time.SystemClock
+import java.util.Date
 import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
 
 @SysUISingleton
 class ShadeHeaderClockInteractor
@@ -29,7 +37,20 @@
 constructor(
     private val repository: ShadeHeaderClockRepository,
     private val activityStarter: ActivityStarter,
+    private val broadcastDispatcher: BroadcastDispatcher,
+    private val systemClock: SystemClock,
 ) {
+    /** [Flow] that emits `Unit` whenever the timezone or locale has changed. */
+    val onTimezoneOrLocaleChanged: Flow<Unit> =
+        broadcastFlowForActions(Intent.ACTION_TIMEZONE_CHANGED, Intent.ACTION_LOCALE_CHANGED)
+            .emitOnStart()
+
+    /** [Flow] that emits the current `Date` every minute, or when the system time has changed. */
+    val currentTime: Flow<Date> =
+        broadcastFlowForActions(Intent.ACTION_TIME_TICK, Intent.ACTION_TIME_CHANGED)
+            .emitOnStart()
+            .map { Date(systemClock.currentTimeMillis()) }
+
     /** Launch the clock activity. */
     fun launchClockActivity() {
         val nextAlarmIntent = repository.nextAlarmIntent
@@ -38,8 +59,22 @@
         } else {
             activityStarter.postStartActivityDismissingKeyguard(
                 Intent(AlarmClock.ACTION_SHOW_ALARMS),
-                0
+                0,
             )
         }
     }
+
+    /**
+     * Returns a `Flow` that, when collected, emits `Unit` whenever a broadcast matching one of the
+     * given [actionsToFilter] is received.
+     */
+    private fun broadcastFlowForActions(
+        vararg actionsToFilter: String,
+        user: UserHandle = UserHandle.SYSTEM,
+    ): Flow<Unit> {
+        return broadcastDispatcher.broadcastFlow(
+            filter = IntentFilter().apply { actionsToFilter.forEach(::addAction) },
+            user = user,
+        )
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
index 8c38d2e..4adc1a5 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
@@ -18,16 +18,13 @@
 
 import android.content.Context
 import android.content.Intent
-import android.content.IntentFilter
 import android.icu.text.DateFormat
 import android.icu.text.DisplayContext
-import android.os.UserHandle
 import android.provider.Settings
 import android.view.ViewGroup
 import androidx.compose.runtime.getValue
 import com.android.app.tracing.coroutines.launchTraced as launch
 import com.android.systemui.battery.BatteryMeterViewController
-import com.android.systemui.broadcast.BroadcastDispatcher
 import com.android.systemui.lifecycle.ExclusiveActivatable
 import com.android.systemui.lifecycle.Hydrator
 import com.android.systemui.plugins.ActivityStarter
@@ -42,7 +39,6 @@
 import com.android.systemui.shade.domain.interactor.ShadeHeaderClockInteractor
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
-import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
 import com.android.systemui.statusbar.phone.StatusBarLocation
 import com.android.systemui.statusbar.phone.ui.StatusBarIconController
 import com.android.systemui.statusbar.phone.ui.TintedIconManager
@@ -50,18 +46,18 @@
 import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
-import java.util.Date
 import java.util.Locale
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.asStateFlow
-import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.flow.mapLatest
 
 /** Models UI state for the shade header. */
+@OptIn(ExperimentalCoroutinesApi::class)
 class ShadeHeaderViewModel
 @AssistedInject
 constructor(
@@ -70,16 +66,15 @@
     private val sceneInteractor: SceneInteractor,
     private val shadeInteractor: ShadeInteractor,
     private val shadeModeInteractor: ShadeModeInteractor,
-    private val mobileIconsInteractor: MobileIconsInteractor,
+    mobileIconsInteractor: MobileIconsInteractor,
     val mobileIconsViewModel: MobileIconsViewModel,
     private val privacyChipInteractor: PrivacyChipInteractor,
     private val clockInteractor: ShadeHeaderClockInteractor,
     private val tintedIconManagerFactory: TintedIconManager.Factory,
     private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
     val statusBarIconController: StatusBarIconController,
-    val notificationIconContainerStatusBarViewBinder: NotificationIconContainerStatusBarViewBinder,
-    private val broadcastDispatcher: BroadcastDispatcher,
 ) : ExclusiveActivatable() {
+
     private val hydrator = Hydrator("ShadeHeaderViewModel.hydrator")
 
     val createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager =
@@ -127,9 +122,16 @@
     /** True if there is exactly one mobile connection. */
     val isSingleCarrier: StateFlow<Boolean> = mobileIconsInteractor.isSingleCarrier
 
-    private val _mobileSubIds = MutableStateFlow(emptyList<Int>())
     /** The list of subscription Ids for current mobile connections. */
-    val mobileSubIds: StateFlow<List<Int>> = _mobileSubIds.asStateFlow()
+    val mobileSubIds: List<Int> by
+        hydrator.hydratedStateOf(
+            traceName = "mobileSubIds",
+            initialValue = emptyList(),
+            source =
+                mobileIconsInteractor.filteredSubscriptions.map { list ->
+                    list.map { it.subscriptionId }
+                },
+        )
 
     /** The list of PrivacyItems to be displayed by the privacy chip. */
     val privacyItems: StateFlow<List<PrivacyItem>> = privacyChipInteractor.privacyItems
@@ -150,45 +152,34 @@
 
     private val longerPattern = context.getString(R.string.abbrev_wday_month_day_no_year_alarm)
     private val shorterPattern = context.getString(R.string.abbrev_month_day_no_year)
-    private val longerDateFormat = MutableStateFlow(getFormatFromPattern(longerPattern))
-    private val shorterDateFormat = MutableStateFlow(getFormatFromPattern(shorterPattern))
 
-    private val _shorterDateText: MutableStateFlow<String> = MutableStateFlow("")
-    val shorterDateText: StateFlow<String> = _shorterDateText.asStateFlow()
+    private val longerDateFormat: Flow<DateFormat> =
+        clockInteractor.onTimezoneOrLocaleChanged.mapLatest { getFormatFromPattern(longerPattern) }
+    private val shorterDateFormat: Flow<DateFormat> =
+        clockInteractor.onTimezoneOrLocaleChanged.mapLatest { getFormatFromPattern(shorterPattern) }
 
-    private val _longerDateText: MutableStateFlow<String> = MutableStateFlow("")
-    val longerDateText: StateFlow<String> = _longerDateText.asStateFlow()
+    val longerDateText: String by
+        hydrator.hydratedStateOf(
+            traceName = "longerDateText",
+            initialValue = "",
+            source =
+                combine(longerDateFormat, clockInteractor.currentTime) { format, time ->
+                    format.format(time)
+                },
+        )
+
+    val shorterDateText: String by
+        hydrator.hydratedStateOf(
+            traceName = "shorterDateText",
+            initialValue = "",
+            source =
+                combine(shorterDateFormat, clockInteractor.currentTime) { format, time ->
+                    format.format(time)
+                },
+        )
 
     override suspend fun onActivated(): Nothing {
         coroutineScope {
-            launch {
-                broadcastDispatcher
-                    .broadcastFlow(
-                        filter =
-                            IntentFilter().apply {
-                                addAction(Intent.ACTION_TIME_TICK)
-                                addAction(Intent.ACTION_TIME_CHANGED)
-                                addAction(Intent.ACTION_TIMEZONE_CHANGED)
-                                addAction(Intent.ACTION_LOCALE_CHANGED)
-                            },
-                        user = UserHandle.SYSTEM,
-                        map = { intent, _ ->
-                            intent.action == Intent.ACTION_TIMEZONE_CHANGED ||
-                                intent.action == Intent.ACTION_LOCALE_CHANGED
-                        },
-                    )
-                    .onEach { invalidateFormats -> updateDateTexts(invalidateFormats) }
-                    .launchIn(this)
-            }
-
-            launch { updateDateTexts(false) }
-
-            launch {
-                mobileIconsInteractor.filteredSubscriptions
-                    .map { list -> list.map { it.subscriptionId } }
-                    .collect { _mobileSubIds.value = it }
-            }
-
             launch { hydrator.activate() }
 
             awaitCancellation()
@@ -260,26 +251,9 @@
         data object Strong : HeaderChipHighlight
     }
 
-    private fun updateDateTexts(invalidateFormats: Boolean) {
-        if (invalidateFormats) {
-            longerDateFormat.value = getFormatFromPattern(longerPattern)
-            shorterDateFormat.value = getFormatFromPattern(shorterPattern)
-        }
-
-        val currentTime = Date()
-
-        _longerDateText.value = longerDateFormat.value.format(currentTime)
-        _shorterDateText.value = shorterDateFormat.value.format(currentTime)
-    }
-
     private fun getFormatFromPattern(pattern: String?): DateFormat {
-        val l = Locale.getDefault()
-        val format = DateFormat.getInstanceForSkeleton(pattern, l)
-        // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
-        // CAPITALIZATION_FOR_STANDALONE is to address
-        // https://unicode-org.atlassian.net/browse/ICU-21631
-        // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
-        format.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE)
+        val format = DateFormat.getInstanceForSkeleton(pattern, Locale.getDefault())
+        format.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE)
         return format
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index 97de619..7dc2ae7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -58,7 +58,6 @@
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.WindowInsetsController.Appearance;
 import android.view.WindowInsetsController.Behavior;
-import android.view.accessibility.Flags;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
@@ -987,13 +986,7 @@
 
     @Override
     public void addQsTile(ComponentName tile) {
-        if (Flags.a11yQsShortcut()) {
-            addQsTileToFrontOrEnd(tile, false);
-        } else {
-            synchronized (mLock) {
-                mHandler.obtainMessage(MSG_ADD_QS_TILE, tile).sendToTarget();
-            }
-        }
+        addQsTileToFrontOrEnd(tile, false);
     }
 
     /**
@@ -1003,13 +996,11 @@
      */
     @Override
     public void addQsTileToFrontOrEnd(ComponentName tile, boolean end) {
-        if (Flags.a11yQsShortcut()) {
-            synchronized (mLock) {
-                SomeArgs args = SomeArgs.obtain();
-                args.arg1 = tile;
-                args.arg2 = end;
-                mHandler.obtainMessage(MSG_ADD_QS_TILE, args).sendToTarget();
-            }
+        synchronized (mLock) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = tile;
+            args.arg2 = end;
+            mHandler.obtainMessage(MSG_ADD_QS_TILE, args).sendToTarget();
         }
     }
 
@@ -1692,18 +1683,12 @@
                     }
                     break;
                 case MSG_ADD_QS_TILE: {
-                    if (Flags.a11yQsShortcut()) {
-                        SomeArgs someArgs = (SomeArgs) msg.obj;
-                        for (int i = 0; i < mCallbacks.size(); i++) {
-                            mCallbacks.get(i).addQsTileToFrontOrEnd(
-                                    (ComponentName) someArgs.arg1, (boolean) someArgs.arg2);
-                        }
-                        someArgs.recycle();
-                    } else {
-                        for (int i = 0; i < mCallbacks.size(); i++) {
-                            mCallbacks.get(i).addQsTile((ComponentName) msg.obj);
-                        }
+                    SomeArgs someArgs = (SomeArgs) msg.obj;
+                    for (int i = 0; i < mCallbacks.size(); i++) {
+                        mCallbacks.get(i).addQsTileToFrontOrEnd(
+                                (ComponentName) someArgs.arg1, (boolean) someArgs.arg2);
                     }
+                    someArgs.recycle();
                     break;
                 }
                 case MSG_REMOVE_QS_TILE:
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java
index 79a872e..bfd512f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyboardShortcutListSearch.java
@@ -607,13 +607,6 @@
                         context.getString(R.string.group_system_lock_screen),
                         Arrays.asList(
                                 Pair.create(KeyEvent.KEYCODE_L, KeyEvent.META_META_ON))),
-                /* Pull up Notes app for quick memo: Meta + Ctrl + N */
-                new ShortcutKeyGroupMultiMappingInfo(
-                        context.getString(R.string.group_system_quick_memo),
-                        Arrays.asList(
-                                Pair.create(
-                                        KeyEvent.KEYCODE_N,
-                                        KeyEvent.META_META_ON | KeyEvent.META_CTRL_ON))),
                 /* Access system settings: Meta + I */
                 new ShortcutKeyGroupMultiMappingInfo(
                         context.getString(R.string.group_system_access_system_settings),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index 10f61c6..5b5058f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -798,6 +798,7 @@
                 initialTouchY = y
                 initialTouchX = x
             }
+
             MotionEvent.ACTION_MOVE -> {
                 val h = y - initialTouchY
                 // Adjust the touch slop if another gesture may be being performed.
@@ -852,6 +853,7 @@
                 }
                 return true
             }
+
             MotionEvent.ACTION_UP ->
                 if (
                     !falsingManager.isUnlockingDisabled &&
@@ -871,6 +873,7 @@
                     stopDragging()
                     return false
                 }
+
             MotionEvent.ACTION_CANCEL -> {
                 stopDragging()
                 return false
@@ -910,7 +913,7 @@
             overshoot *= 1 - RUBBERBAND_FACTOR_STATIC
             rubberband -= overshoot
         }
-        child.actualHeight = (child.collapsedHeight + rubberband).toInt()
+        child.setFinalActualHeight((child.collapsedHeight + rubberband).toInt())
     }
 
     @VisibleForTesting
@@ -927,7 +930,7 @@
         anim.duration = animationDuration
         anim.addUpdateListener { animation: ValueAnimator ->
             // don't use reflection, because the `actualHeight` field may be obfuscated
-            child.actualHeight = animation.animatedValue as Int
+            child.setFinalActualHeight(animation.animatedValue as Int)
         }
         anim.addListener(
             object : AnimatorListenerAdapter() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
index 85b8bf9..3be7682 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
@@ -140,8 +140,8 @@
 
     private fun canHandleMotionEvent(): Boolean {
         return wakeUpCoordinator.canShowPulsingHuns &&
-            !shadeInteractor.isQsExpanded.value &&
-            !bouncerShowing
+                !shadeInteractor.isQsExpanded.value &&
+                !bouncerShowing
     }
 
     private fun startExpansion(event: MotionEvent): Boolean {
@@ -194,7 +194,7 @@
     override fun onTouchEvent(event: MotionEvent): Boolean {
         val finishExpanding =
             (event.action == MotionEvent.ACTION_CANCEL || event.action == MotionEvent.ACTION_UP) &&
-                isExpanding
+                    isExpanding
 
         val isDraggingNotificationOrCanBypass =
             mStartingChild?.showingPulsing() == true || bypassController.canBypass()
@@ -218,8 +218,8 @@
                 velocityTracker!!.computeCurrentVelocity(/* units= */ 1000)
                 val canExpand =
                     moveDistance > 0 &&
-                        velocityTracker!!.getYVelocity() > -1000 &&
-                        statusBarStateController.state != StatusBarState.SHADE
+                            velocityTracker!!.getYVelocity() > -1000 &&
+                            statusBarStateController.state != StatusBarState.SHADE
                 if (!falsingManager.isUnlockingDisabled && !isFalseTouch && canExpand) {
                     finishExpansion()
                 } else {
@@ -266,11 +266,11 @@
             val child = mStartingChild!!
             val newHeight =
                 Math.min((child.collapsedHeight + expansionHeight).toInt(), child.maxContentHeight)
-            child.actualHeight = newHeight
+            child.setFinalActualHeight(newHeight)
         } else {
             wakeUpCoordinator.setNotificationsVisibleForExpansion(
                 height >
-                    lockscreenShadeTransitionController.distanceUntilShowingPulsingNotifications,
+                        lockscreenShadeTransitionController.distanceUntilShowingPulsingNotifications,
                 /*animate= */ true,
                 /*increaseSpeed= */ true,
             )
@@ -301,7 +301,7 @@
         anim.duration = animationDuration
         anim.addUpdateListener { animation: ValueAnimator ->
             // don't use reflection, because the `actualHeight` field may be obfuscated
-            child.actualHeight = animation.animatedValue as Int
+            child.setFinalActualHeight(animation.animatedValue as Int)
         }
         anim.addListener(
             object : AnimatorListenerAdapter() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
index 11e9fd5..994357f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
@@ -161,17 +161,17 @@
             )
         }
 
-        when (this.promotedContent.time.mode) {
-            PromotedNotificationContentModel.When.Mode.BasicTime -> {
+        when (this.promotedContent.time) {
+            is PromotedNotificationContentModel.When.Time -> {
                 return if (
-                    this.promotedContent.time.time >=
+                    this.promotedContent.time.currentTimeMillis >=
                         systemClock.currentTimeMillis() + FUTURE_TIME_THRESHOLD_MILLIS
                 ) {
                     OngoingActivityChipModel.Active.ShortTimeDelta(
                         this.key,
                         icon,
                         colors,
-                        time = this.promotedContent.time.time,
+                        time = this.promotedContent.time.currentTimeMillis,
                         onClickListenerLegacy,
                         clickBehavior,
                     )
@@ -193,23 +193,13 @@
                     )
                 }
             }
-            PromotedNotificationContentModel.When.Mode.CountUp -> {
+            is PromotedNotificationContentModel.When.Chronometer -> {
+                // TODO(b/364653005): Check isCountDown and support CountDown.
                 return OngoingActivityChipModel.Active.Timer(
                     this.key,
                     icon,
                     colors,
-                    startTimeMs = this.promotedContent.time.time,
-                    onClickListenerLegacy,
-                    clickBehavior,
-                )
-            }
-            PromotedNotificationContentModel.When.Mode.CountDown -> {
-                // TODO(b/364653005): Support CountDown.
-                return OngoingActivityChipModel.Active.Timer(
-                    this.key,
-                    icon,
-                    colors,
-                    startTimeMs = this.promotedContent.time.time,
+                    startTimeMs = this.promotedContent.time.elapsedRealtimeMillis,
                     onClickListenerLegacy,
                     clickBehavior,
                 )
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
index 6cb8a53..cf0342b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
@@ -128,7 +128,10 @@
             override val key: String,
             override val icon: ChipIcon,
             override val colors: ColorsModel,
-            /** The time of the event that this chip represents. */
+            /**
+             * The time of the event that this chip represents, relative to
+             * [com.android.systemui.util.time.SystemClock.currentTimeMillis].
+             */
             val time: Long,
             override val onClickListenerLegacy: View.OnClickListener?,
             override val clickBehavior: ClickBehavior,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiIcons.java
index dbcda41..cfc0055 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiIcons.java
@@ -32,12 +32,16 @@
      */
     private static int[] getIconsBasedOnFlag() {
         if (newStatusBarIcons()) {
+            // TODO(b/396664075):
+            // The new wifi icons only define a range of [0, 3]. Since this array is indexed on
+            // level, we can simulate the range squash by mapping both level 3 to drawn-level 2, and
+            // level 4 to drawn-level 3
             return new int[] {
                 R.drawable.ic_wifi_0,
                 R.drawable.ic_wifi_1,
                 R.drawable.ic_wifi_2,
-                R.drawable.ic_wifi_3,
-                R.drawable.ic_wifi_4
+                R.drawable.ic_wifi_2,
+                R.drawable.ic_wifi_3
             };
         } else {
             return new int[] {
@@ -54,12 +58,13 @@
 
     private static int [] getErrorIconsBasedOnFlag() {
         if (newStatusBarIcons()) {
+            // See above note, new wifi icons only have 3 bars, so levels 2 and 3 are the same
             return new int[] {
                 R.drawable.ic_wifi_0_error,
                 R.drawable.ic_wifi_1_error,
                 R.drawable.ic_wifi_2_error,
+                R.drawable.ic_wifi_2_error,
                 R.drawable.ic_wifi_3_error,
-                R.drawable.ic_wifi_4_error
             };
         } else {
             return new int[] {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
index 7b5f5f6..e6dd09b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
@@ -97,7 +97,7 @@
     private val secureSettings: SecureSettings,
     private val userTracker: UserTracker,
     private val contentResolver: ContentResolver,
-    private val configurationController: ConfigurationController,
+    @ShadeDisplayAware private val configurationController: ConfigurationController,
     private val statusBarStateController: StatusBarStateController,
     private val deviceProvisionedController: DeviceProvisionedController,
     private val bypassController: KeyguardBypassController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
index eb1be67..c6775d6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationUtils.java
@@ -24,6 +24,7 @@
 
 import com.android.internal.util.ContrastColorUtil;
 import com.android.systemui.res.R;
+import com.android.systemui.statusbar.notification.collection.EntryAdapter;
 import com.android.systemui.statusbar.notification.collection.ListEntry;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.util.Compile;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimator.kt
new file mode 100644
index 0000000..74faf25
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/PhysicsPropertyAnimator.kt
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.systemui.statusbar.notification
+
+import android.util.Property
+import android.view.View
+import androidx.dynamicanimation.animation.DynamicAnimation
+import androidx.dynamicanimation.animation.FloatPropertyCompat
+import androidx.dynamicanimation.animation.SpringAnimation
+import androidx.dynamicanimation.animation.SpringForce
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.createDefaultSpring
+import com.android.systemui.statusbar.notification.stack.AnimationProperties
+
+/**
+ * A physically animatable property of a view.
+ *
+ * @param tag the view tag to safe this property in
+ * @param property the property to animate.
+ */
+data class PhysicsProperty(val tag: Int, val property: Property<View, Float>) {
+    val offsetProperty =
+        object : FloatPropertyCompat<View>(property.name) {
+            override fun getValue(view: View): Float {
+                return property.get(view)
+            }
+
+            override fun setValue(view: View, offset: Float) {
+                val propertyData = view.getTag(tag) as PropertyData? ?: return
+                propertyData.offset = offset
+                property.set(view, propertyData.finalValue + offset)
+            }
+        }
+
+    fun setFinalValue(view: View, finalValue: Float) {
+        val propertyData = obtainPropertyData(view, this)
+        val previousValue = propertyData.finalValue
+        if (previousValue != finalValue) {
+            propertyData.finalValue = finalValue
+            property.set(view, propertyData.finalValue + propertyData.offset)
+        }
+    }
+}
+
+/** The propertyData associated with each animation running */
+data class PropertyData(
+    var finalValue: Float = 0f,
+    var offset: Float = 0f,
+    var animator: SpringAnimation? = null,
+    var delayRunnable: Runnable? = null,
+)
+
+/**
+ * A utility that can run physics based animations in a simple way. It properly handles overlapping
+ * calls where sometimes a property can be set without animation, while also having instances where
+ * it's supposed to start animations.
+ *
+ * This overall helps making sure that physics based animations complete and don't constantly start
+ * new transitions which can lead to a feeling of lagging behind.
+ *
+ * Overall it is achieved by starting offset animations to an end value as soon as an animation is
+ * requested and updating the end value immediately when no animation is needed. With the offset
+ * always going to 0, this ensures that animations complete within a short time after an animation
+ * has been requested.
+ */
+class PhysicsPropertyAnimator {
+    companion object {
+        @JvmField val TAG_ANIMATOR_TRANSLATION_Y = R.id.translation_y_animator_tag
+
+        @JvmField
+        val Y_TRANSLATION: PhysicsProperty =
+            PhysicsProperty(TAG_ANIMATOR_TRANSLATION_Y, View.TRANSLATION_Y)
+
+        // Uses the standard spatial material spring by default
+        @JvmStatic
+        fun createDefaultSpring(): SpringForce {
+            return SpringForce()
+                .setStiffness(380f) // MEDIUM LOW STIFFNESS
+                .setDampingRatio(SpringForce.DAMPING_RATIO_LOW_BOUNCY) // LOW BOUNCINESS
+        }
+
+        @JvmStatic
+        @JvmOverloads
+        /**
+         * Set a property on a view, updating its value, even if it's already animating. The @param
+         * animated can be used to request an animation. If the view isn't animated, this utility
+         * will update the current animation if existent, such that the end value will point
+         * to @param newEndValue or apply it directly if there's no animation.
+         */
+        fun setProperty(
+            view: View,
+            animatableProperty: PhysicsProperty,
+            newEndValue: Float,
+            properties: AnimationProperties? = null,
+            animated: Boolean = false,
+            endListener: DynamicAnimation.OnAnimationEndListener? = null,
+        ) {
+            if (animated) {
+                startAnimation(view, animatableProperty, newEndValue, properties, endListener)
+            } else {
+                animatableProperty.setFinalValue(view, newEndValue)
+            }
+        }
+
+        fun isAnimating(view: View, property: PhysicsProperty): Boolean {
+            val (_, _, animator, _) = obtainPropertyData(view, property)
+            return animator?.isRunning ?: false
+        }
+    }
+}
+
+private fun startAnimation(
+    view: View,
+    animatableProperty: PhysicsProperty,
+    newEndValue: Float,
+    properties: AnimationProperties?,
+    endListener: DynamicAnimation.OnAnimationEndListener?,
+) {
+    val property = animatableProperty.property
+    val propertyData = obtainPropertyData(view, animatableProperty)
+    val previousEndValue = propertyData.finalValue
+    if (previousEndValue == newEndValue) {
+        return
+    }
+    propertyData.finalValue = newEndValue
+    var animator = propertyData.animator
+    if (animator == null) {
+        animator = SpringAnimation(view, animatableProperty.offsetProperty)
+        propertyData.animator = animator
+        animator.setSpring(createDefaultSpring())
+        val listener = properties?.getAnimationEndListener(animatableProperty.property)
+        if (listener != null) {
+            animator.addEndListener(listener)
+            // We always notify things as started even if we have a delay
+            properties.getAnimationStartListener(animatableProperty.property)?.accept(animator)
+        }
+        // remove the tag when the animation is finished
+        animator.addEndListener { _, _, _, _ -> propertyData.animator = null }
+    }
+    // TODO(b/393581344): look at custom spring
+    endListener?.let { animator.addEndListener(it) }
+    val newOffset = previousEndValue - newEndValue + propertyData.offset
+
+    // Immedialely set the new offset that compensates for the immediate end value change
+    propertyData.offset = newOffset
+    property.set(view, newEndValue + newOffset)
+
+    // cancel previous starters still pending
+    view.removeCallbacks(propertyData.delayRunnable)
+    animator.setStartValue(newOffset)
+    val startRunnable = Runnable {
+        animator.animateToFinalPosition(0f)
+        propertyData.delayRunnable = null
+    }
+    if (properties != null && properties.delay > 0 && !animator.isRunning) {
+        propertyData.delayRunnable = startRunnable
+        view.postDelayed(propertyData.delayRunnable, properties.delay)
+    } else {
+        startRunnable.run()
+    }
+}
+
+private fun obtainPropertyData(view: View, animatableProperty: PhysicsProperty): PropertyData {
+    var propertyData = view.getTag(animatableProperty.tag) as PropertyData?
+    if (propertyData == null) {
+        propertyData =
+            PropertyData(finalValue = animatableProperty.property.get(view), offset = 0f, null)
+        view.setTag(animatableProperty.tag, propertyData)
+    }
+    return propertyData
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
index dba8a9a..867db8e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
@@ -163,6 +163,7 @@
             if (entry in nextMap) nextMap.remove(entry)
             if (entry in nextList) nextList.remove(entry)
 
+            outcome = "add next"
             addToNext(entry, runnable)
 
             // Shorten headsUpEntryShowing display time
@@ -174,7 +175,7 @@
                 headsUpEntryShowing!!.updateEntry(
                     /* updatePostTime= */ false,
                     /* updateEarliestRemovalTime= */ false,
-                    /* reason= */ "avalanche duration update",
+                    /* reason= */ "shorten duration of previously-last HUN",
                 )
             }
         }
@@ -269,8 +270,10 @@
         }
         nextList.sort()
         val entryList = showingList + nextList
+        val thisKey = getKey(entry)
         if (entryList.isEmpty()) {
-            log { "No avalanche HUNs, use default ms: $autoDismissMs" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, autoDismissMs, "No avalanche HUNs, use default", nextKey = "")
             return autoDismissMs
         }
         // entryList.indexOf(entry) returns -1 even when the entry is in entryList
@@ -281,27 +284,29 @@
             }
         }
         if (thisEntryIndex == -1) {
-            log { "Untracked entry, use default ms: $autoDismissMs" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, autoDismissMs, "Untracked entry, use default", nextKey = "")
             return autoDismissMs
         }
         val nextEntryIndex = thisEntryIndex + 1
-
-        // If last entry, use default duration
         if (nextEntryIndex >= entryList.size) {
-            log { "Last entry, use default ms: $autoDismissMs" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, autoDismissMs, "Last entry, use default", nextKey = "")
             return autoDismissMs
         }
         val nextEntry = entryList[nextEntryIndex]
+        val nextKey = getKey(nextEntry)
         if (nextEntry.compareNonTimeFields(entry) == -1) {
-            // Next entry is higher priority
-            log { "Next entry is higher priority: 500ms" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, 500, "LOWER priority than next: ", nextKey)
             return 500
         } else if (nextEntry.compareNonTimeFields(entry) == 0) {
-            // Next entry is same priority
-            log { "Next entry is same priority: 1000ms" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, 1000, "SAME priority as next: ", nextKey)
             return 1000
         } else {
-            log { "Next entry is lower priority, use default ms: $autoDismissMs" }
+            headsUpManagerLogger.logAvalancheDuration(
+                thisKey, autoDismissMs, "HIGHER priority than next: ", nextKey)
             return autoDismissMs
         }
     }
@@ -355,25 +360,28 @@
     }
 
     private fun showNow(entry: HeadsUpEntry, runnableList: MutableList<Runnable>) {
-        log { "SHOW: " + getKey(entry) }
-
+        headsUpManagerLogger.logAvalancheStage("show", getKey(entry))
         uiEventLogger.log(ThrottleEvent.AVALANCHE_THROTTLING_HUN_SHOWN)
         headsUpEntryShowing = entry
 
-        runnableList.forEach {
-            if (it in debugRunnableLabelMap) {
-                log { "RUNNABLE: ${debugRunnableLabelMap[it]}" }
+        runnableList.forEach { runnable ->
+            if (debug) {
+                debugRunnableLabelMap[runnable]?.let { label ->
+                    headsUpManagerLogger.logAvalancheStage("run", label)
+                    // Remove label after logging to avoid memory leak
+                    debugRunnableLabelMap.remove(runnable)
+                }
             }
-            it.run()
+            runnable.run()
         }
     }
 
     private fun showNext() {
-        log { "SHOW NEXT" }
+        headsUpManagerLogger.logAvalancheStage("show next",  key = "")
         headsUpEntryShowing = null
 
         if (nextList.isEmpty()) {
-            log { "NO MORE TO SHOW" }
+            headsUpManagerLogger.logAvalancheStage("no more",  key = "")
             previousHunKey = ""
             return
         }
@@ -395,11 +403,7 @@
                     debugRunnableLabelMap.remove(r)
                 }
             }
-            val queue = ArrayList<String>()
-            for (entry in listToDrop) {
-                queue.add("[${getKey(entry)}]")
-            }
-            val dropList = java.lang.String.join("\n", queue)
+            val dropList = listToDrop.joinToString("\n ") { getKey(it) }
             headsUpManagerLogger.logDroppedHuns(dropList)
         }
         clearNext()
@@ -424,38 +428,24 @@
 
     // Methods below are for logging only ==========================================================
 
-    private inline fun log(s: () -> String) {
-        if (debug) {
-            Log.d(tag, s())
-        }
-    }
-
     private fun getStateStr(): String {
-        return "\navalanche state:" +
-            "\n\tshowing: [${getKey(headsUpEntryShowing)}]" +
-            "\n\tprevious: [$previousHunKey]" +
-            "\n\tnext list: $nextListStr" +
-            "\n\tnext map: $nextMapStr" +
-            "\nBHUM.mHeadsUpEntryMap: " +
-            baseEntryMapStr()
+        return "\n[AC state]" +
+                "\nshow: ${getKey(headsUpEntryShowing)}" +
+                "\nprevious: $previousHunKey" +
+                "\n$nextStr" +
+                "\n[HeadsUpManagerImpl.mHeadsUpEntryMap] " + baseEntryMapStr() + "\n"
     }
 
-    private val nextListStr: String
+    private val nextStr: String
         get() {
-            val queue = ArrayList<String>()
-            for (entry in nextList) {
-                queue.add("[${getKey(entry)}]")
+            val nextListStr = nextList.joinToString("\n ") { getKey(it) }
+            if (nextList.toSet() == nextMap.keys.toSet()) {
+                return "next (${nextList.size}):\n $nextListStr"
             }
-            return java.lang.String.join("\n", queue)
-        }
-
-    private val nextMapStr: String
-        get() {
-            val queue = ArrayList<String>()
-            for (entry in nextMap.keys) {
-                queue.add("[${getKey(entry)}]")
-            }
-            return java.lang.String.join("\n", queue)
+            // This should never happen
+            val nextMapStr = nextMap.keys.joinToString("\n ") { getKey(it) }
+            return "next list (${nextList.size}):\n $nextListStr" +
+                    "\nnext map (${nextMap.size}):\n $nextMapStr"
         }
 
     fun getKey(entry: HeadsUpEntry?): String {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java
index 7d74a49..87b9bf8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java
@@ -856,11 +856,11 @@
 
     private String getEntryMapStr() {
         if (mHeadsUpEntryMap.isEmpty()) {
-            return "EMPTY";
+            return "";
         }
         StringBuilder entryMapStr = new StringBuilder();
         for (HeadsUpEntry entry: mHeadsUpEntryMap.values()) {
-            entryMapStr.append("\n\t").append(
+            entryMapStr.append("\n ").append(
                     entry.mEntry == null ? "null" : entry.mEntry.getKey());
         }
         return entryMapStr.toString();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
index 65fb9ca..388d357 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
@@ -71,7 +71,7 @@
                 str3 = outcome
                 bool1 = isEnabled
             },
-            { "$str1\n\t=> AC[isEnabled:$bool1] update: $str2\n\t=> $str3" },
+            { "$str1\n=> AC[enabled:$bool1] update: $str2\n=> $str3" },
         )
     }
 
@@ -90,7 +90,33 @@
                 str3 = outcome
                 bool1 = isEnabled
             },
-            { "$str1\n\t=> AC[isEnabled:$bool1] delete: $str2\n\t=> $str3" },
+            { "$str1\n=> AC[enabled:$bool1] delete: $str2\n=> $str3" },
+        )
+    }
+
+    fun logAvalancheStage(stage: String, key: String) {
+        buffer.log(
+            TAG,
+            INFO,
+            {
+                str1 = stage
+                str2 = key
+            },
+            { "[AC] $str1 $str2" },
+        )
+    }
+
+    fun logAvalancheDuration(thisKey: String, duration: Int, reason: String, nextKey: String) {
+        buffer.log(
+            TAG,
+            INFO,
+            {
+                str1 = thisKey
+                int1 = duration
+                str2 = reason
+                str3 = nextKey
+            },
+            { "[AC] $str1 | $int1 ms | $str2 $str3" },
         )
     }
 
@@ -325,7 +351,7 @@
     }
 
     fun logDroppedHuns(entryList: String) {
-        buffer.log(TAG, VERBOSE, { str1 = entryList }, { "[AC] Drop HUNs: $str1" })
+        buffer.log(TAG, VERBOSE, { str1 = entryList }, { "[AC] dropped:\n $str1" })
     }
 }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
index 893570b..9aa5a2e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
@@ -386,24 +386,21 @@
         setTextViewColor(time, SecondaryText)
         setTextViewColor(chronometer, SecondaryText)
 
-        val timeValue = content.time
-
-        if (timeValue == null) {
-            time?.visibility = GONE
-            chronometer?.visibility = GONE
-        } else if (timeValue.mode == When.Mode.BasicTime) {
-            time?.visibility = VISIBLE
-            time?.setTime(timeValue.time)
-            chronometer?.visibility = GONE
-        } else {
-            inflateChronometer()
-
-            time?.visibility = GONE
-            chronometer?.visibility = VISIBLE
-            chronometer?.base = timeValue.time
-            chronometer?.isCountDown = (timeValue.mode == When.Mode.CountDown)
-            chronometer?.setStarted(true)
+        if (content.time is When.Time) {
+            time?.setTime(content.time.currentTimeMillis)
         }
+
+        if (content.time is When.Chronometer) {
+            inflateChronometer()
+            chronometer?.base = content.time.elapsedRealtimeMillis
+            chronometer?.isCountDown = content.time.isCountDown
+            chronometer?.setStarted(true)
+        } else {
+            chronometer?.stop()
+        }
+
+        time?.isVisible = (content.time is When.Time)
+        chronometer?.isVisible = (content.time is When.Chronometer)
     }
 
     private fun updateSmallIcon(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
index 39c7df0..2aafe8c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
@@ -48,6 +48,7 @@
 import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass.MediumSquare
 import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass.SmallSquare
 import com.android.systemui.statusbar.notification.row.shared.SkeletonImageTransform
+import com.android.systemui.util.time.SystemClock
 import javax.inject.Inject
 
 interface PromotedNotificationContentExtractor {
@@ -64,6 +65,7 @@
 constructor(
     @ShadeDisplayAware private val context: Context,
     private val skeletonImageTransform: SkeletonImageTransform,
+    private val systemClock: SystemClock,
     private val logger: PromotedNotificationLogger,
 ) : PromotedNotificationContentExtractor {
     override fun extractContent(
@@ -168,15 +170,17 @@
         extras?.getBoolean(EXTRA_PROGRESS_INDETERMINATE)
 
     private fun Notification.extractWhen(): When? {
-        val time = `when`
-        val showsTime = showsTime()
-        val showsChronometer = showsChronometer()
-        val countDown = chronometerCountDown()
-
         return when {
-            showsTime -> When(time, When.Mode.BasicTime)
-            showsChronometer ->
-                When(time, if (countDown) When.Mode.CountDown else When.Mode.CountUp)
+            showsChronometer() -> {
+                When.Chronometer(
+                    elapsedRealtimeMillis =
+                        `when` + systemClock.elapsedRealtime() - systemClock.currentTimeMillis(),
+                    isCountDown = chronometerCountDown(),
+                )
+            }
+
+            showsTime() -> When.Time(currentTimeMillis = `when`)
+
             else -> null
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
index 38d41e3..0c2859f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
@@ -16,7 +16,9 @@
 
 package com.android.systemui.statusbar.notification.promoted.shared.model
 
+import android.annotation.CurrentTimeMillisLong
 import android.annotation.DrawableRes
+import android.annotation.ElapsedRealtimeLong
 import android.app.Notification
 import android.app.Notification.FLAG_PROMOTED_ONGOING
 import androidx.annotation.ColorInt
@@ -120,16 +122,18 @@
     data class Identity(val key: String, val style: Style)
 
     /** The timestamp associated with a notification, along with the mode used to display it. */
-    data class When(val time: Long, val mode: Mode) {
-        /** The mode used to display a notification's `when` value. */
-        enum class Mode {
-            /** No custom mode requested by the notification. */
-            BasicTime,
-            /** Show the notification's time as a chronometer that counts down to [time]. */
-            CountDown,
-            /** Show the notification's time as a chronometer that counts up from [time]. */
-            CountUp,
-        }
+    sealed class When {
+        /** Show the notification's time as a timestamp. */
+        data class Time(@CurrentTimeMillisLong val currentTimeMillis: Long) : When()
+
+        /**
+         * Show the notification's time as a chronometer that counts up or down (based on
+         * [isCountDown]) to [elapsedRealtimeMillis].
+         */
+        data class Chronometer(
+            @ElapsedRealtimeLong val elapsedRealtimeMillis: Long,
+            val isCountDown: Boolean,
+        ) : When()
     }
 
     /** The colors used to display the notification. */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
index b4092cd..b077327 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.notification.row;
 
 import static com.android.systemui.Flags.notificationBackgroundTintOptimization;
+import static com.android.systemui.Flags.notificationRowTransparency;
 import static com.android.systemui.statusbar.notification.row.ExpandableView.ClipSide.BOTTOM;
 import static com.android.systemui.statusbar.notification.row.ExpandableView.ClipSide.TOP;
 
@@ -38,6 +39,7 @@
 import com.android.internal.jank.InteractionJankMonitor;
 import com.android.internal.jank.InteractionJankMonitor.Configuration;
 import com.android.systemui.Gefingerpoken;
+import com.android.systemui.common.shared.colors.SurfaceEffectColors;
 import com.android.systemui.res.R;
 import com.android.systemui.shade.TouchLogger;
 import com.android.systemui.statusbar.NotificationShelf;
@@ -122,8 +124,12 @@
     }
 
     private void updateColors() {
-        mNormalColor = mContext.getColor(
-                com.android.internal.R.color.materialColorSurfaceContainerHigh);
+        if (notificationRowTransparency()) {
+            mNormalColor = SurfaceEffectColors.surfaceEffect1(getResources());
+        } else {
+            mNormalColor = mContext.getColor(
+                    com.android.internal.R.color.materialColorSurfaceContainerHigh);
+        }
         mTintedRippleColor = mContext.getColor(
                 R.color.notification_ripple_tinted_color);
         mNormalRippleColor = mContext.getColor(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index d383bee..64cd617 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -21,7 +21,9 @@
 import static android.service.notification.NotificationListenerService.REASON_CANCEL;
 
 import static com.android.systemui.Flags.notificationsPinnedHunInShade;
+import static com.android.systemui.Flags.notificationRowTransparency;
 import static com.android.systemui.flags.Flags.ENABLE_NOTIFICATIONS_SIMULATE_SLOW_MEASURE;
+import static com.android.systemui.statusbar.notification.NotificationUtils.logKey;
 import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.PARENT_DISMISSED;
 import static com.android.systemui.statusbar.notification.row.NotificationContentView.VISIBLE_TYPE_HEADSUP;
 import static com.android.systemui.statusbar.policy.RemoteInputView.FOCUS_ANIMATION_MIN_SCALE;
@@ -525,6 +527,10 @@
         return mPublicLayout;
     }
 
+    public String getLoggingKey() {
+        return mLoggingKey;
+    }
+
     /**
      * Sets animations running in the layouts of this row, including public, private, and children.
      *
@@ -1631,6 +1637,12 @@
         if (view != null) {
             view.setBackgroundTintColor(color);
         }
+        if (notificationRowTransparency()
+                && (mBackgroundNormal != null)
+                && (mEntry != null)) {
+            mBackgroundNormal.setBgIsColorized(
+                    mEntry.getSbn().getNotification().isColorized());
+        }
     }
 
     public void closeRemoteInput() {
@@ -1917,15 +1929,15 @@
          * Called when a notification which was previously kept in its parent for the
          * dismiss animation is finally detached from its parent.
          */
-        void logKeepInParentChildDetached(NotificationEntry child, NotificationEntry oldParent);
+        void logKeepInParentChildDetached(String child, String oldParent);
 
         /**
          * Called when we want to attach a notification to a new parent,
          * but it still has the keepInParent flag set, so we skip it.
          */
         void logSkipAttachingKeepInParentChild(
-                NotificationEntry child,
-                NotificationEntry newParent
+                String child,
+                String newParent
         );
 
         /**
@@ -1933,8 +1945,8 @@
          * NotificationChildrenContainer
          */
         void logRemoveTransientFromContainer(
-                NotificationEntry childEntry,
-                NotificationEntry containerEntry
+                String childEntry,
+                String containerEntry
         );
 
         /**
@@ -1942,7 +1954,7 @@
          * NotificationStackScrollLayout
          */
         void logRemoveTransientFromNssl(
-                NotificationEntry childEntry
+                String childEntry
         );
 
         /**
@@ -1950,7 +1962,7 @@
          * is not NotificationChildrenContainer or NotificationStackScrollLayout
          */
         void logRemoveTransientFromViewGroup(
-                NotificationEntry childEntry,
+                String childEntry,
                 ViewGroup containerView
         );
 
@@ -1959,8 +1971,8 @@
          * ExpandableNotificationRow
          */
         void logAddTransientRow(
-                NotificationEntry childEntry,
-                NotificationEntry containerEntry,
+                String childEntry,
+                String containerEntry,
                 int index
         );
 
@@ -1969,39 +1981,39 @@
          * ExpandableNotificationRow
          */
         void logRemoveTransientRow(
-                NotificationEntry childEntry,
-                NotificationEntry containerEntry
+                String childEntry,
+                String containerEntry
         );
 
         /**
          * Called when resetting the alpha value for content views
          */
         void logResetAllContentAlphas(
-                NotificationEntry entry
+                String entry
         );
 
         /**
          * Called when resetting the alpha value for content views is skipped
          */
         void logSkipResetAllContentAlphas(
-                NotificationEntry entry
+                String entry
         );
 
         /** Called when we start an appear animation. */
-        void logStartAppearAnimation(NotificationEntry entry, boolean isAppear);
+        void logStartAppearAnimation(String entry, boolean isAppear);
 
         /** Called when we cancel the running appear animation. */
-        void logCancelAppearDrawing(NotificationEntry entry, boolean wasDrawing);
+        void logCancelAppearDrawing(String entry, boolean wasDrawing);
 
         /** Called when the animator of the appear animation is started. */
-        void logAppearAnimationStarted(NotificationEntry entry, boolean isAppear);
+        void logAppearAnimationStarted(String entry, boolean isAppear);
 
         /** Called when we prepared an appear animation, but the animator was never started. */
-        void logAppearAnimationSkipped(NotificationEntry entry, boolean isAppear);
+        void logAppearAnimationSkipped(String entry, boolean isAppear);
 
         /** Called when the animator of the appear animation is finished. */
         void logAppearAnimationFinished(
-                NotificationEntry entry,
+                String entry,
                 boolean isAppear,
                 boolean cancelled
         );
@@ -2080,7 +2092,7 @@
             NotificationEntry entry,
             RemoteInputViewSubcomponent.Factory rivSubcomponentFactory,
             String appName,
-            String notificationKey,
+            @NonNull String notificationKey,
             ExpandableNotificationRowLogger logger,
             KeyguardBypassController bypassController,
             GroupMembershipManager groupMembershipManager,
@@ -2120,7 +2132,7 @@
             mMenuRow.setAppName(mAppName);
         }
         mLogger = logger;
-        mLoggingKey = notificationKey;
+        mLoggingKey = logKey(notificationKey);
         mBypassController = bypassController;
         mGroupMembershipManager = groupMembershipManager;
         mGroupExpansionManager = groupExpansionManager;
@@ -2745,7 +2757,7 @@
             top = params.getTop();
         }
         int actualHeight = params.getBottom() - top;
-        setActualHeight(actualHeight);
+        setFinalActualHeight(actualHeight);
 
         int notificationStackTop = params.getNotificationParentTop();
         top -= notificationStackTop;
@@ -3304,7 +3316,7 @@
                 }
                 resetAllContentAlphas();
             } else {
-                mLogger.logSkipResetAllContentAlphas(getEntry());
+                mLogger.logSkipResetAllContentAlphas(mLoggingKey);
             }
             mPublicLayout.setVisibility(mShowingPublic ? View.VISIBLE : View.INVISIBLE);
             updateChildrenVisibility();
@@ -3458,7 +3470,7 @@
     @Override
     public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear,
             Runnable onFinishRunnable) {
-        mLogger.logStartAppearAnimation(getEntry(), /* isAppear = */ true);
+        mLogger.logStartAppearAnimation(mLoggingKey, /* isAppear = */ true);
         super.performAddAnimation(delay, duration, isHeadsUpAppear, onFinishRunnable);
     }
 
@@ -3471,7 +3483,7 @@
             Runnable onStartedRunnable,
             Runnable onFinishedRunnable,
             AnimatorListenerAdapter animationListener, ClipSide clipSide) {
-        mLogger.logStartAppearAnimation(getEntry(), /* isAppear = */ false);
+        mLogger.logStartAppearAnimation(mLoggingKey, /* isAppear = */ false);
         if (mMenuRow != null && mMenuRow.isMenuVisible()) {
             Animator anim = getTranslateViewAnimator(0f, null /* listener */);
             if (anim != null) {
@@ -3501,20 +3513,20 @@
 
     @Override
     protected void onAppearAnimationStarted(boolean isAppear) {
-        mLogger.logAppearAnimationStarted(getEntry(), /* isAppear = */ isAppear);
+        mLogger.logAppearAnimationStarted(mLoggingKey, /* isAppear = */ isAppear);
         super.onAppearAnimationStarted(isAppear);
     }
 
     @Override
     protected void onAppearAnimationSkipped(boolean isAppear) {
-        mLogger.logAppearAnimationSkipped(getEntry(),  /* isAppear = */ isAppear);
+        mLogger.logAppearAnimationSkipped(mLoggingKey,  /* isAppear = */ isAppear);
         super.onAppearAnimationSkipped(isAppear);
     }
 
     @Override
     protected void onAppearAnimationFinished(boolean wasAppearing, boolean cancelled) {
         mLogger.logAppearAnimationFinished(
-                /* entry = */ getEntry(),
+                /* entry = */ mLoggingKey,
                 /* isAppear = */ wasAppearing,
                 /* cancelled = */ cancelled
         );
@@ -3535,13 +3547,13 @@
 
     @Override
     public void cancelAppearDrawing() {
-        mLogger.logCancelAppearDrawing(getEntry(), isDrawingAppearAnimation());
+        mLogger.logCancelAppearDrawing(mLoggingKey, isDrawingAppearAnimation());
         super.cancelAppearDrawing();
     }
 
     @Override
     public void resetAllContentAlphas() {
-        mLogger.logResetAllContentAlphas(getEntry());
+        mLogger.logResetAllContentAlphas(mLoggingKey);
         mPrivateLayout.setAlpha(1f);
         mPrivateLayout.setLayerType(LAYER_TYPE_NONE, null);
         mPublicLayout.setAlpha(1f);
@@ -4313,13 +4325,13 @@
 
     private void logKeepInParentChildDetached(ExpandableNotificationRow child) {
         if (mLogger != null) {
-            mLogger.logKeepInParentChildDetached(child.getEntry(), getEntry());
+            mLogger.logKeepInParentChildDetached(child.getLoggingKey(), mLoggingKey);
         }
     }
 
     private void logSkipAttachingKeepInParentChild(ExpandableNotificationRow child) {
         if (mLogger != null) {
-            mLogger.logSkipAttachingKeepInParentChild(child.getEntry(), getEntry());
+            mLogger.logSkipAttachingKeepInParentChild(child.getLoggingKey(), mLoggingKey);
         }
     }
 
@@ -4375,17 +4387,17 @@
         }
         if (transientContainer instanceof NotificationChildrenContainer) {
             mLogger.logRemoveTransientFromContainer(
-                    /* childEntry = */ getEntry(),
+                    /* childEntry = */ mLoggingKey,
                     /* containerEntry = */ ((NotificationChildrenContainer) transientContainer)
-                            .getContainingNotification().getEntry()
+                            .getContainingNotification().getLoggingKey()
             );
         } else if (transientContainer instanceof NotificationStackScrollLayout) {
             mLogger.logRemoveTransientFromNssl(
-                    /* childEntry = */ getEntry()
+                    /* childEntry = */ mLoggingKey
             );
         } else {
             mLogger.logRemoveTransientFromViewGroup(
-                    /* childEntry = */ getEntry(),
+                    /* childEntry = */ mLoggingKey,
                     /* containerView = */ transientContainer
             );
         }
@@ -4403,7 +4415,7 @@
         if (mLogger == null) {
             return;
         }
-        mLogger.logAddTransientRow(row.getEntry(), getEntry(), index);
+        mLogger.logAddTransientRow(row.getLoggingKey(), mLoggingKey, index);
     }
 
     @Override
@@ -4418,6 +4430,6 @@
         if (mLogger == null) {
             return;
         }
-        mLogger.logRemoveTransientRow(row.getEntry(), getEntry());
+        mLogger.logRemoveTransientRow(row.getLoggingKey(), mLoggingKey);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
index 6262303..b43a387 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
@@ -56,6 +56,7 @@
 import com.android.systemui.statusbar.notification.row.dagger.AppName;
 import com.android.systemui.statusbar.notification.row.dagger.NotificationKey;
 import com.android.systemui.statusbar.notification.row.dagger.NotificationRowScope;
+import com.android.systemui.statusbar.notification.shared.NotificationBundleUi;
 import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainerLogger;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.notification.stack.ui.view.NotificationRowStatsLogger;
@@ -145,38 +146,38 @@
 
                 @Override
                 public void logKeepInParentChildDetached(
-                        NotificationEntry child,
-                        NotificationEntry oldParent
+                        String child,
+                        String oldParent
                 ) {
                     mLogBufferLogger.logKeepInParentChildDetached(child, oldParent);
                 }
 
                 @Override
                 public void logSkipAttachingKeepInParentChild(
-                        NotificationEntry child,
-                        NotificationEntry newParent
+                        String child,
+                        String newParent
                 ) {
                     mLogBufferLogger.logSkipAttachingKeepInParentChild(child, newParent);
                 }
 
                 @Override
                 public void logRemoveTransientFromContainer(
-                        NotificationEntry childEntry,
-                        NotificationEntry containerEntry
+                        String childEntry,
+                        String containerEntry
                 ) {
                     mLogBufferLogger.logRemoveTransientFromContainer(childEntry, containerEntry);
                 }
 
                 @Override
                 public void logRemoveTransientFromNssl(
-                        NotificationEntry childEntry
+                        String childEntry
                 ) {
                     mLogBufferLogger.logRemoveTransientFromNssl(childEntry);
                 }
 
                 @Override
                 public void logRemoveTransientFromViewGroup(
-                        NotificationEntry childEntry,
+                        String childEntry,
                         ViewGroup containerView
                 ) {
                     mLogBufferLogger.logRemoveTransientFromViewGroup(childEntry, containerView);
@@ -184,8 +185,8 @@
 
                 @Override
                 public void logAddTransientRow(
-                        NotificationEntry childEntry,
-                        NotificationEntry containerEntry,
+                        String childEntry,
+                        String containerEntry,
                         int index
                 ) {
                     mLogBufferLogger.logAddTransientRow(childEntry, containerEntry, index);
@@ -193,48 +194,48 @@
 
                 @Override
                 public void logRemoveTransientRow(
-                        NotificationEntry childEntry,
-                        NotificationEntry containerEntry
+                        String childEntry,
+                        String containerEntry
                 ) {
                     mLogBufferLogger.logRemoveTransientRow(childEntry, containerEntry);
                 }
 
                 @Override
                 public void logResetAllContentAlphas(
-                        NotificationEntry entry
+                        String entry
                 ) {
                     mLogBufferLogger.logResetAllContentAlphas(entry);
                 }
 
                 @Override
                 public void logSkipResetAllContentAlphas(
-                        NotificationEntry entry
+                        String entry
                 ) {
                     mLogBufferLogger.logSkipResetAllContentAlphas(entry);
                 }
 
                 @Override
-                public void logStartAppearAnimation(NotificationEntry entry, boolean isAppear) {
+                public void logStartAppearAnimation(String entry, boolean isAppear) {
                     mLogBufferLogger.logStartAppearAnimation(entry, isAppear);
                 }
 
                 @Override
-                public void logCancelAppearDrawing(NotificationEntry entry, boolean wasDrawing) {
+                public void logCancelAppearDrawing(String entry, boolean wasDrawing) {
                     mLogBufferLogger.logCancelAppearDrawing(entry, wasDrawing);
                 }
 
                 @Override
-                public void logAppearAnimationStarted(NotificationEntry entry, boolean isAppear) {
+                public void logAppearAnimationStarted(String entry, boolean isAppear) {
                     mLogBufferLogger.logAppearAnimationStarted(entry, isAppear);
                 }
 
                 @Override
-                public void logAppearAnimationSkipped(NotificationEntry entry, boolean isAppear) {
+                public void logAppearAnimationSkipped(String entry, boolean isAppear) {
                     mLogBufferLogger.logAppearAnimationSkipped(entry, isAppear);
                 }
 
                 @Override
-                public void logAppearAnimationFinished(NotificationEntry entry, boolean isAppear,
+                public void logAppearAnimationFinished(String entry, boolean isAppear,
                         boolean cancelled) {
                     mLogBufferLogger.logAppearAnimationFinished(entry, isAppear, cancelled);
                 }
@@ -405,7 +406,7 @@
     @Override
     @NonNull
     public String getNodeLabel() {
-        return logKey(mView.getEntry());
+        return NotificationBundleUi.isEnabled() ? mView.getLoggingKey() : logKey(mView.getEntry());
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
index 2bc4874..da664f8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.notification.row;
 
 import static com.android.systemui.Flags.notificationColorUpdateLogger;
+import static com.android.systemui.Flags.physicalNotificationMovement;
 
 import android.animation.AnimatorListenerAdapter;
 import android.content.Context;
@@ -24,6 +25,7 @@
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.util.AttributeSet;
+import android.util.FloatProperty;
 import android.util.IndentingPrintWriter;
 import android.util.Log;
 import android.view.View;
@@ -41,6 +43,7 @@
 import com.android.systemui.Dumpable;
 import com.android.systemui.res.R;
 import com.android.systemui.statusbar.StatusBarIconView;
+import com.android.systemui.statusbar.notification.PhysicsProperty;
 import com.android.systemui.statusbar.notification.Roundable;
 import com.android.systemui.statusbar.notification.RoundableState;
 import com.android.systemui.statusbar.notification.headsup.PinnedStatus;
@@ -58,6 +61,20 @@
  * An abstract view for expandable views.
  */
 public abstract class ExpandableView extends FrameLayout implements Dumpable, Roundable {
+    public static final int TAG_ANIMATOR_HEIGHT = R.id.height_animator_tag;
+    public static final PhysicsProperty HEIGHT_PROPERTY = new PhysicsProperty(TAG_ANIMATOR_HEIGHT,
+            new FloatProperty<>("ActualHeight") {
+
+                @Override
+                public Float get(View view) {
+                    return (float) ((ExpandableView) view).getActualHeight();
+                }
+
+                @Override
+                public void setValue(@NonNull View view, float value) {
+                    ((ExpandableView) view).setActualHeight((int) value);
+                }
+            });
     private static final String TAG = "ExpandableView";
     /** whether the dump() for this class should include verbose details */
     protected static final boolean DUMP_VERBOSE = Compile.IS_DEBUG
@@ -84,7 +101,8 @@
     protected float mContentTransformationAmount;
     protected boolean mIsLastChild;
     protected int mContentShift;
-    @NonNull private final ExpandableViewState mViewState;
+    @NonNull
+    private final ExpandableViewState mViewState;
     private float mContentTranslation;
     protected boolean mLastInSection;
     protected boolean mFirstInSection;
@@ -205,7 +223,7 @@
                             MeasureSpec.EXACTLY);
                 }
                 child.measure(getChildMeasureSpec(
-                        widthMeasureSpec, viewHorizontalPadding, layoutParams.width),
+                                widthMeasureSpec, viewHorizontalPadding, layoutParams.width),
                         childHeightSpec);
                 int childHeight = child.getMeasuredHeight();
                 maxChildHeight = Math.max(maxChildHeight, childHeight);
@@ -223,7 +241,7 @@
         // Now that we know our own height, measure the children that are MATCH_PARENT
         for (View child : mMatchParentViews) {
             child.measure(getChildMeasureSpec(
-                    widthMeasureSpec, viewHorizontalPadding, child.getLayoutParams().width),
+                            widthMeasureSpec, viewHorizontalPadding, child.getLayoutParams().width),
                     exactlyOwnHeightSpec);
         }
         mMatchParentViews.clear();
@@ -269,12 +287,29 @@
     }
 
     /**
+     * Sets the final value of the actual height, which is to be applied immediately without
+     * animation. This may be different than the current value if we're animating away an offset.
+     */
+    public void setFinalActualHeight(int childHeight) {
+        if (physicalNotificationMovement()) {
+            HEIGHT_PROPERTY.setFinalValue(this, childHeight);
+        } else {
+            setActualHeight(childHeight);
+        }
+    }
+
+    /**
+     * Once the physical notification movement flag is enabled, don't use
+     * this directly as a public method since it may not update the property values and misbehave
+     * during animations. Use #setFinalActualHeight instead.
+     *
      * Sets the actual height of this notification. This is different than the laid out
      * {@link View#getHeight()}, as we want to avoid layouting during scrolling and expanding.
      *
-     * @param actualHeight The height of this notification.
+     * @param actualHeight    The height of this notification.
      * @param notifyListeners Whether the listener should be informed about the change.
      */
+    @Deprecated
     public void setActualHeight(int actualHeight, boolean notifyListeners) {
         if (mActualHeight != actualHeight) {
             mActualHeight = actualHeight;
@@ -285,7 +320,7 @@
         }
     }
 
-    public void setActualHeight(int actualHeight) {
+    protected void setActualHeight(int actualHeight) {
         setActualHeight(actualHeight, true /* notifyListeners */);
     }
 
@@ -748,7 +783,8 @@
      *
      * @return the ExpandableView's view state.
      */
-    @NonNull public ExpandableViewState getViewState() {
+    @NonNull
+    public ExpandableViewState getViewState() {
         return mViewState;
     }
 
@@ -840,9 +876,10 @@
      * Set how much this notification is transformed into the shelf.
      *
      * @param contentTransformationAmount A value from 0 to 1 indicating how much we are transformed
-     *                                 to the content away
-     * @param isLastChild is this the last child in the list. If true, then the transformation is
-     *                    different since its content fades out.
+     *                                    to the content away
+     * @param isLastChild                 is this the last child in the list. If true, then the
+     *                                    transformation is
+     *                                    different since its content fades out.
      */
     public void setContentTransformationAmount(float contentTransformationAmount,
             boolean isLastChild) {
@@ -971,8 +1008,9 @@
     public interface OnHeightChangedListener {
 
         /**
-         * @param view the view for which the height changed, or {@code null} if just the top
-         *             padding or the padding between the elements changed
+         * @param view           the view for which the height changed, or {@code null} if just the
+         *                       top
+         *                       padding or the padding between the elements changed
          * @param needsAnimation whether the view height needs to be animated
          */
         void onHeightChanged(ExpandableView view, boolean needsAnimation);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
index dd3a9c9..33c36d8c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar.notification.row;
 
+import static com.android.systemui.Flags.notificationRowTransparency;
 import static com.android.systemui.util.ColorUtilKt.hexColorString;
 
 import android.content.Context;
@@ -23,6 +24,7 @@
 import android.graphics.Canvas;
 import android.graphics.Path;
 import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
@@ -34,8 +36,10 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.internal.graphics.ColorUtils;
 import com.android.internal.util.ContrastColorUtil;
 import com.android.systemui.Dumpable;
+import com.android.systemui.common.shared.colors.SurfaceEffectColors;
 import com.android.systemui.res.R;
 import com.android.systemui.statusbar.notification.shared.NotificationAddXOnHoverToDismiss;
 import com.android.systemui.util.DrawableDumpKt;
@@ -69,6 +73,7 @@
     private final ColorStateList mLightColoredStatefulColors;
     private final ColorStateList mDarkColoredStatefulColors;
     private final int mNormalColor;
+    private boolean mBgIsColorized = false;
     private final int convexR = 9;
     private final int concaveR = 22;
 
@@ -82,8 +87,12 @@
                 R.color.notification_state_color_light);
         mDarkColoredStatefulColors = getResources().getColorStateList(
                 R.color.notification_state_color_dark);
-        mNormalColor = mContext.getColor(
-                com.android.internal.R.color.materialColorSurfaceContainerHigh);
+        if (notificationRowTransparency()) {
+            mNormalColor = SurfaceEffectColors.surfaceEffect1(getResources());
+        } else  {
+            mNormalColor = mContext.getColor(
+                    com.android.internal.R.color.materialColorSurfaceContainerHigh);
+        }
         mFocusOverlayStroke = getResources().getDimension(R.dimen.notification_focus_stroke_width);
     }
 
@@ -132,6 +141,21 @@
         }
     }
 
+    /**
+     * A way to tell whether the background has been colorized.
+     */
+    public boolean isColorized() {
+        return mBgIsColorized;
+    }
+
+    /**
+     * A way to inform this class whether the background has been colorized.
+     * We need to know this, in order to *not* override that color.
+     */
+    public void setBgIsColorized(boolean b) {
+        mBgIsColorized = b;
+    }
+
     private Path calculateDismissButtonCutoutPath(Rect backgroundBounds) {
         // TODO(b/365585705): Adapt to RTL after the UX design is finalized.
 
@@ -280,7 +304,7 @@
         setCustomBackground(d);
     }
 
-    private Drawable getBaseBackgroundLayer() {
+    public Drawable getBaseBackgroundLayer() {
         return ((LayerDrawable) mBackground).getDrawable(0);
     }
 
@@ -288,11 +312,27 @@
         return ((LayerDrawable) mBackground).getDrawable(1);
     }
 
+    private void updateBaseLayerColor() {
+        // BG base layer being a drawable, there isn't a method like setColor() to color it.
+        // Instead, we set a color filter that essentially replaces every pixel of the drawable.
+        // For non-colorized notifications, this function specifies a new color token.
+        // For colorized notifications, this uses a color that matches the tint color at 90% alpha.
+        getBaseBackgroundLayer().setColorFilter(
+                new PorterDuffColorFilter(
+                        isColorized()
+                                ? ColorUtils.setAlphaComponent(mTintColor, (int) (255 * 0.9f))
+                                : SurfaceEffectColors.surfaceEffect1(getResources()),
+                        PorterDuff.Mode.SRC)); // SRC operator discards the drawable's color+alpha
+    }
+
     public void setTint(int tintColor) {
         Drawable baseLayer = getBaseBackgroundLayer();
         baseLayer.mutate().setTintMode(PorterDuff.Mode.SRC_ATOP);
         baseLayer.setTint(tintColor);
         mTintColor = tintColor;
+        if (notificationRowTransparency()) {
+            updateBaseLayerColor();
+        }
         setStatefulColors();
         invalidate();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index 0c1dd2e..c31f4ad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -247,7 +247,7 @@
                                 entry.getRanking().getSummarization());
             } else {
                 result.mPublicInflatedSingleLineViewModel =
-                        SingleLineViewInflater.inflateRedactedSingleLineViewModel(
+                        SingleLineViewInflater.inflatePublicSingleLineViewModel(
                                 row.getContext(),
                                 isConversation
                         );
@@ -509,7 +509,7 @@
                 new Notification.Builder(packageContext, original.getChannelId());
         redacted.setContentTitle(original.extras.getCharSequence(Notification.EXTRA_TITLE));
         CharSequence redactedMessage = systemUiContext.getString(
-                R.string.redacted_notification_single_line_text
+                R.string.redacted_otp_notification_single_line_text
         );
         redacted.setWhen(original.getWhen());
 
@@ -1362,7 +1362,7 @@
                             );
                 } else {
                     result.mPublicInflatedSingleLineViewModel =
-                            SingleLineViewInflater.inflateRedactedSingleLineViewModel(
+                            SingleLineViewInflater.inflatePublicSingleLineViewModel(
                                     mContext,
                                     isConversation
                             );
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
index 761d3fe..b9a3594 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
@@ -754,7 +754,7 @@
                             summarization = null,
                         )
                     } else {
-                        SingleLineViewInflater.inflateRedactedSingleLineViewModel(
+                        SingleLineViewInflater.inflatePublicSingleLineViewModel(
                             systemUiContext,
                             entry.ranking.isConversation,
                         )
@@ -792,7 +792,7 @@
             val redacted = Notification.Builder(packageContext, original.channelId)
             redacted.setContentTitle(original.extras.getCharSequence(Notification.EXTRA_TITLE))
             val redactedMessage =
-                sysUiContext.getString(R.string.redacted_notification_single_line_text)
+                sysUiContext.getString(R.string.redacted_otp_notification_single_line_text)
 
             if (originalStyle is MessagingStyle) {
                 val newStyle = MessagingStyle(originalStyle.user)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
index 9e1c974..dad57a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
@@ -22,8 +22,6 @@
 import com.android.systemui.log.core.LogLevel
 import com.android.systemui.log.dagger.NotificationLog
 import com.android.systemui.log.dagger.NotificationRenderLog
-import com.android.systemui.statusbar.notification.collection.NotificationEntry
-import com.android.systemui.statusbar.notification.logKey
 import com.android.systemui.statusbar.notification.stack.MagneticNotificationRowManagerImpl
 import javax.inject.Inject
 
@@ -33,60 +31,60 @@
     @NotificationLog private val buffer: LogBuffer,
     @NotificationRenderLog private val notificationRenderBuffer: LogBuffer,
 ) {
-    fun logKeepInParentChildDetached(child: NotificationEntry, oldParent: NotificationEntry?) {
+    fun logKeepInParentChildDetached(child: String, oldParent: String?) {
         buffer.log(
             TAG,
             LogLevel.DEBUG,
             {
-                str1 = child.logKey
-                str2 = oldParent.logKey
+                str1 = child
+                str2 = oldParent
             },
             { "Detach child $str1 kept in parent $str2" },
         )
     }
 
-    fun logSkipAttachingKeepInParentChild(child: NotificationEntry, newParent: NotificationEntry?) {
+    fun logSkipAttachingKeepInParentChild(child: String, newParent: String?) {
         buffer.log(
             TAG,
             LogLevel.WARNING,
             {
-                str1 = child.logKey
-                str2 = newParent.logKey
+                str1 = child
+                str2 = newParent
             },
             { "Skipping to attach $str1 to $str2, because it still flagged to keep in parent" },
         )
     }
 
     fun logRemoveTransientFromContainer(
-        childEntry: NotificationEntry,
-        containerEntry: NotificationEntry,
+        childEntry: String,
+        containerEntry: String,
     ) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.INFO,
             {
-                str1 = childEntry.logKey
-                str2 = containerEntry.logKey
+                str1 = childEntry
+                str2 = containerEntry
             },
             { "RemoveTransientRow from ChildrenContainer: childKey: $str1 -- containerKey: $str2" },
         )
     }
 
-    fun logRemoveTransientFromNssl(childEntry: NotificationEntry) {
+    fun logRemoveTransientFromNssl(childEntry: String) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.INFO,
-            { str1 = childEntry.logKey },
+            { str1 = childEntry },
             { "RemoveTransientRow from Nssl: childKey: $str1" },
         )
     }
 
-    fun logRemoveTransientFromViewGroup(childEntry: NotificationEntry, containerView: ViewGroup) {
+    fun logRemoveTransientFromViewGroup(childEntry: String, containerView: ViewGroup) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.WARNING,
             {
-                str1 = childEntry.logKey
+                str1 = childEntry
                 str2 = containerView.toString()
             },
             { "RemoveTransientRow from other ViewGroup: childKey: $str1 -- ViewGroup: $str2" },
@@ -94,94 +92,94 @@
     }
 
     fun logAddTransientRow(
-        childEntry: NotificationEntry,
-        containerEntry: NotificationEntry,
+        childEntry: String,
+        containerEntry: String,
         index: Int,
     ) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.ERROR,
             {
-                str1 = childEntry.logKey
-                str2 = containerEntry.logKey
+                str1 = childEntry
+                str2 = containerEntry
                 int1 = index
             },
             { "addTransientRow to row: childKey: $str1 -- containerKey: $str2 -- index: $int1" },
         )
     }
 
-    fun logRemoveTransientRow(childEntry: NotificationEntry, containerEntry: NotificationEntry) {
+    fun logRemoveTransientRow(childEntry: String, containerEntry: String) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.ERROR,
             {
-                str1 = childEntry.logKey
-                str2 = containerEntry.logKey
+                str1 = childEntry
+                str2 = containerEntry
             },
             { "removeTransientRow from row: childKey: $str1 -- containerKey: $str2" },
         )
     }
 
-    fun logResetAllContentAlphas(entry: NotificationEntry) {
+    fun logResetAllContentAlphas(entry: String) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.INFO,
-            { str1 = entry.logKey },
+            { str1 = entry },
             { "resetAllContentAlphas: $str1" },
         )
     }
 
-    fun logSkipResetAllContentAlphas(entry: NotificationEntry) {
+    fun logSkipResetAllContentAlphas(entry: String) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.INFO,
-            { str1 = entry.logKey },
+            { str1 = entry },
             { "Skip resetAllContentAlphas: $str1" },
         )
     }
 
-    fun logStartAppearAnimation(entry: NotificationEntry, isAppear: Boolean) {
+    fun logStartAppearAnimation(entry: String, isAppear: Boolean) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.DEBUG,
             {
-                str1 = entry.logKey
+                str1 = entry
                 bool1 = isAppear
             },
             { "startAppearAnimation childKey: $str1 isAppear:$bool1" },
         )
     }
 
-    fun logCancelAppearDrawing(entry: NotificationEntry, wasDrawing: Boolean) {
+    fun logCancelAppearDrawing(entry: String, wasDrawing: Boolean) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.WARNING,
             {
-                str1 = entry.logKey
+                str1 = entry
                 bool1 = wasDrawing
             },
             { "cancelAppearDrawing childKey: $str1 wasDrawing:$bool1" },
         )
     }
 
-    fun logAppearAnimationStarted(entry: NotificationEntry, isAppear: Boolean) {
+    fun logAppearAnimationStarted(entry: String, isAppear: Boolean) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.DEBUG,
             {
-                str1 = entry.logKey
+                str1 = entry
                 bool1 = isAppear
             },
             { "onAppearAnimationStarted childKey: $str1 isAppear:$bool1" },
         )
     }
 
-    fun logAppearAnimationSkipped(entry: NotificationEntry, isAppear: Boolean) {
+    fun logAppearAnimationSkipped(entry: String, isAppear: Boolean) {
         notificationRenderBuffer.log(
             TAG,
             LogLevel.WARNING,
             {
-                str1 = entry.logKey
+                str1 = entry
                 bool1 = isAppear
             },
             { "Skipped an appear animation childKey: $str1 isAppear:$bool1" },
@@ -189,7 +187,7 @@
     }
 
     fun logAppearAnimationFinished(
-        entry: NotificationEntry,
+        entry: String,
         isAppear: Boolean,
         cancelled: Boolean,
     ) {
@@ -197,7 +195,7 @@
             TAG,
             LogLevel.DEBUG,
             {
-                str1 = entry.logKey
+                str1 = entry
                 bool1 = isAppear
                 bool2 = cancelled
             },
@@ -207,13 +205,13 @@
 
     fun logMagneticAndRoundableTargetsNotSet(
         state: MagneticNotificationRowManagerImpl.State,
-        entry: NotificationEntry,
+        entry: String,
     ) {
         buffer.log(
             TAG,
             LogLevel.ERROR,
             {
-                str1 = entry.logKey
+                str1 = entry
                 str2 = state.name
             },
             { "Failed to set magnetic and roundable targets for $str1 on state $str2." },
@@ -222,13 +220,13 @@
 
     fun logMagneticRowTranslationNotSet(
         state: MagneticNotificationRowManagerImpl.State,
-        entry: NotificationEntry,
+        entry: String,
     ) {
         buffer.log(
             TAG,
             LogLevel.ERROR,
             {
-                str1 = entry.logKey
+                str1 = entry
                 str2 = state.name
             },
             { "Failed to set magnetic row translation for $str1 on state $str2." },
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
index b3c8f22..ea73b4b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
@@ -71,7 +71,7 @@
         var contentText =
             if (redactText) {
                 systemUiContext.getString(
-                    com.android.systemui.res.R.string.redacted_notification_single_line_text
+                    com.android.systemui.res.R.string.redacted_otp_notification_single_line_text
                 )
             } else {
                 HybridGroupManager.resolveText(notification)
@@ -120,7 +120,7 @@
     }
 
     @JvmStatic
-    fun inflateRedactedSingleLineViewModel(
+    fun inflatePublicSingleLineViewModel(
         context: Context,
         isConversation: Boolean = false,
     ): SingleLineViewModel {
@@ -144,7 +144,7 @@
                 com.android.systemui.res.R.string.redacted_notification_single_line_title
             ),
             context.getString(
-                com.android.systemui.res.R.string.redacted_notification_single_line_text
+                com.android.systemui.res.R.string.public_notification_single_line_text
             ),
             conversationData,
         )
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AnimationProperties.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AnimationProperties.java
index 00b9aa4..3d60092 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AnimationProperties.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AnimationProperties.java
@@ -23,6 +23,8 @@
 import android.view.View;
 import android.view.animation.Interpolator;
 
+import androidx.dynamicanimation.animation.DynamicAnimation;
+
 import java.util.function.Consumer;
 
 /**
@@ -77,6 +79,34 @@
     }
 
     /**
+     * @return a listener that will be added for a given property during its animation. Similar to
+     * the finish listener but used for Dynamic / SpringAnimations
+     */
+    public DynamicAnimation.OnAnimationEndListener getAnimationEndListener(Property property) {
+        if (mAnimationEndAction == null && mAnimationCancelAction == null) {
+            return null;
+        }
+        Consumer<Property> cancelAction = mAnimationCancelAction;
+        Consumer<Property> endAction = mAnimationEndAction;
+        return (animation, canceled, value, velocity) -> {
+            if (canceled && cancelAction != null) {
+                cancelAction.accept(property);
+            } else if (!canceled && endAction != null) {
+                endAction.accept(property);
+            }
+        };
+    }
+
+    /**
+     * @return a listener that is invoked when a property animation starts, used for dynamic
+     * animations. For classical, interpolator based animations used the listeneradapter instead,
+     * this is only for Dynamic Animations
+     */
+    public Consumer<DynamicAnimation> getAnimationStartListener(Property property) {
+        return null;
+    }
+
+    /**
      * Add a callback for animation cancellation.
      */
     public AnimationProperties setAnimationCancelAction(Consumer<Property> listener) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ExpandableViewState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ExpandableViewState.java
index 69c9a4b..8cf9dd3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ExpandableViewState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ExpandableViewState.java
@@ -16,23 +16,31 @@
 
 package com.android.systemui.statusbar.notification.stack;
 
+import static com.android.systemui.Flags.physicalNotificationMovement;
+import static com.android.systemui.statusbar.notification.row.ExpandableView.HEIGHT_PROPERTY;
+import static com.android.systemui.statusbar.notification.row.ExpandableView.TAG_ANIMATOR_HEIGHT;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.PropertyValuesHolder;
 import android.animation.ValueAnimator;
+import android.util.FloatProperty;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+
 import com.android.app.animation.Interpolators;
 import com.android.systemui.res.R;
+import com.android.systemui.statusbar.notification.PhysicsProperty;
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
 
 /**
-* A state of an expandable view
-*/
+ * A state of an expandable view
+ */
 public class ExpandableViewState extends ViewState {
 
-    private static final int TAG_ANIMATOR_HEIGHT = R.id.height_animator_tag;
     private static final int TAG_ANIMATOR_TOP_INSET = R.id.top_inset_animator_tag;
     private static final int TAG_ANIMATOR_BOTTOM_INSET = R.id.bottom_inset_animator_tag;
     private static final int TAG_END_HEIGHT = R.id.height_animator_end_value_tag;
@@ -149,7 +157,7 @@
 
             // apply height
             if (height != newHeight) {
-                expandableView.setActualHeight(newHeight, false /* notifyListeners */);
+                expandableView.setFinalActualHeight(newHeight);
             }
 
             // apply hiding sensitive
@@ -186,8 +194,24 @@
 
         // start height animation
         if (this.height != expandableView.getActualHeight()) {
-            startHeightAnimation(expandableView, properties);
-        }  else {
+            if (mUsePhysicsForMovement) {
+                boolean animateHeight = properties.getAnimationFilter().animateHeight;
+                if (animateHeight) {
+                    expandableView.setActualHeightAnimating(true);
+                }
+                PhysicsPropertyAnimator.setProperty(child, HEIGHT_PROPERTY, this.height, properties,
+                        animateHeight,
+                        (animation, canceled, value, velocity) -> {
+                            expandableView.setActualHeightAnimating(false);
+                            if (!canceled && child instanceof ExpandableNotificationRow) {
+                                ((ExpandableNotificationRow) child).setGroupExpansionChanging(
+                                        false /* isExpansionChanging */);
+                            }
+                        });
+            } else {
+                startHeightAnimationInterpolator(expandableView, properties);
+            }
+        } else {
             abortAnimation(child, TAG_ANIMATOR_HEIGHT);
         }
 
@@ -224,7 +248,8 @@
         }
     }
 
-    private void startHeightAnimation(final ExpandableView child, AnimationProperties properties) {
+    private void startHeightAnimationInterpolator(final ExpandableView child,
+            AnimationProperties properties) {
         Integer previousStartValue = getChildTag(child, TAG_START_HEIGHT);
         Integer previousEndValue = getChildTag(child, TAG_END_HEIGHT);
         int newEndValue = this.height;
@@ -374,38 +399,16 @@
             }
         });
         startAnimator(animator, listener);
-        child.setTag(clipTop ? TAG_ANIMATOR_TOP_INSET:TAG_ANIMATOR_BOTTOM_INSET, animator);
-        child.setTag(clipTop ? TAG_START_TOP_INSET: TAG_START_BOTTOM_INSET,
+        child.setTag(clipTop ? TAG_ANIMATOR_TOP_INSET : TAG_ANIMATOR_BOTTOM_INSET, animator);
+        child.setTag(clipTop ? TAG_START_TOP_INSET : TAG_START_BOTTOM_INSET,
                 clipTop ? child.getClipTopAmount() : child.getClipBottomAmount());
-        child.setTag(clipTop ? TAG_END_TOP_INSET: TAG_END_BOTTOM_INSET, newEndValue);
-    }
-
-    /**
-     * Get the end value of the height animation running on a view or the actualHeight
-     * if no animation is running.
-     */
-    public static int getFinalActualHeight(ExpandableView view) {
-        if (view == null) {
-            return 0;
-        }
-        ValueAnimator heightAnimator = getChildTag(view, TAG_ANIMATOR_HEIGHT);
-        if (heightAnimator == null) {
-            return view.getActualHeight();
-        } else {
-            return getChildTag(view, TAG_END_HEIGHT);
-        }
+        child.setTag(clipTop ? TAG_END_TOP_INSET : TAG_END_BOTTOM_INSET, newEndValue);
     }
 
     @Override
     public void cancelAnimations(View view) {
         super.cancelAnimations(view);
-        Animator animator = getChildTag(view, TAG_ANIMATOR_HEIGHT);
-        if (animator != null) {
-            animator.cancel();
-        }
-        animator = getChildTag(view, TAG_ANIMATOR_TOP_INSET);
-        if (animator != null) {
-            animator.cancel();
-        }
+        abortAnimation(view, TAG_ANIMATOR_HEIGHT);
+        abortAnimation(view, TAG_ANIMATOR_TOP_INSET);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
index a507c4c..de4af37 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
@@ -73,7 +73,7 @@
             updateMagneticAndRoundableTargets(swipingRow, stackScrollLayout, sectionsManager)
             currentState = State.TARGETS_SET
         } else {
-            logger.logMagneticAndRoundableTargetsNotSet(currentState, swipingRow.entry)
+            logger.logMagneticAndRoundableTargetsNotSet(currentState, swipingRow.loggingKey)
         }
     }
 
@@ -95,12 +95,15 @@
             notificationTargetsHelper.findMagneticTargets(
                 expandableNotificationRow,
                 stackScrollLayout,
+                sectionsManager,
                 MAGNETIC_TRANSLATION_MULTIPLIERS.size,
             )
-        currentMagneticListeners.swipedListener()?.cancelTranslationAnimations()
         newListeners.forEach {
             if (currentMagneticListeners.contains(it)) {
                 it?.cancelMagneticAnimations()
+                if (it == currentMagneticListeners.swipedListener()) {
+                    it?.cancelTranslationAnimations()
+                }
             }
         }
         currentMagneticListeners = newListeners
@@ -116,7 +119,7 @@
             currentMagneticListeners.swipedListener()?.canRowBeDismissed() ?: false
         when (currentState) {
             State.IDLE -> {
-                logger.logMagneticRowTranslationNotSet(currentState, row.entry)
+                logger.logMagneticRowTranslationNotSet(currentState, row.getLoggingKey())
                 return false
             }
             State.TARGETS_SET -> {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
index ee57d45..1d18535 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
@@ -1352,10 +1352,11 @@
             if (i < maxAllowedVisibleChildren) {
                 float singleLineHeight = child.getShowingLayout().getMinHeight(
                         false /* likeGroupExpanded */);
-                child.setActualHeight((int) NotificationUtils.interpolate(singleLineHeight,
-                        childHeight, fraction), false);
+                childHeight = NotificationUtils.interpolate(singleLineHeight,
+                        childHeight, fraction);
+                child.setFinalActualHeight((int) childHeight);
             } else {
-                child.setActualHeight((int) childHeight, false);
+                child.setFinalActualHeight((int) childHeight);
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index c694a19..3d60e03 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -26,6 +26,7 @@
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_SHADE_CLEAR_ALL;
 import static com.android.systemui.Flags.magneticNotificationSwipes;
 import static com.android.systemui.Flags.notificationOverExpansionClippingFix;
+import static com.android.systemui.Flags.physicalNotificationMovement;
 import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
 import static com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_SWIPE;
 import static com.android.systemui.statusbar.notification.stack.shared.model.AccessibilityScrollEvent.SCROLL_DOWN;
@@ -109,6 +110,7 @@
 import com.android.systemui.statusbar.notification.LaunchAnimationParameters;
 import com.android.systemui.statusbar.notification.NotificationTransitionAnimatorController;
 import com.android.systemui.statusbar.notification.NotificationUtils;
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager;
 import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
@@ -5761,7 +5763,12 @@
                             + view.getActualHeight() - mShelf.getIntrinsicHeight();
                 }
             } else if (!firstVisibleView) {
-                view.setTranslationY(wakeUplocation);
+                if (physicalNotificationMovement()) {
+                    PhysicsPropertyAnimator.setProperty(view, PhysicsPropertyAnimator.Y_TRANSLATION,
+                            wakeUplocation);
+                } else {
+                    view.setTranslationY(wakeUplocation);
+                }
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
index b69b936..8d7b2209 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
@@ -5,7 +5,6 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.statusbar.NotificationShelf
 import com.android.systemui.statusbar.notification.Roundable
-import com.android.systemui.statusbar.notification.footer.ui.view.FooterView
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
 import com.android.systemui.statusbar.notification.row.ExpandableView
 import javax.inject.Inject
@@ -88,6 +87,7 @@
      *
      * @param[viewSwiped] The [ExpandableNotificationRow] that is swiped.
      * @param[stackScrollLayout] [NotificationStackScrollLayout] container.
+     * @param[sectionsManager] The [NotificationSectionsManager]
      * @param[totalMagneticTargets] The total number of magnetic listeners in the resulting list.
      *   This includes the listener of the view swiped.
      * @return The list of [MagneticRowListener]s above and below the swiped
@@ -96,6 +96,7 @@
     fun findMagneticTargets(
         viewSwiped: ExpandableNotificationRow,
         stackScrollLayout: NotificationStackScrollLayout,
+        sectionsManager: NotificationSectionsManager,
         totalMagneticTargets: Int,
     ): List<MagneticRowListener?> {
         val notificationParent = viewSwiped.notificationParent
@@ -126,26 +127,34 @@
         var canMoveRight = true
         for (distance in 1..totalMagneticTargets / 2) {
             if (canMoveLeft) {
-                val leftElement = container.getOrNull(index = centerIndex - distance)
+                val leftElement =
+                    container.getOrNull(index = centerIndex - distance)?.takeIf {
+                        it.isValidMagneticBoundary() ||
+                            !sectionsManager.beginsSection(view = viewSwiped, previous = it)
+                    }
                 if (leftElement is ExpandableNotificationRow) {
                     magneticTargets[leftIndex] = leftElement.magneticRowListener
                     leftIndex--
                 } else {
                     if (leftElement.isValidMagneticBoundary()) {
-                        // Add the boundary and then stop the iterating
+                        // Add the boundary and then stop iterating
                         magneticTargets[leftIndex] = leftElement?.magneticRowListener
                     }
                     canMoveLeft = false
                 }
             }
             if (canMoveRight) {
-                val rightElement = container.getOrNull(index = centerIndex + distance)
+                val rightElement =
+                    container.getOrNull(index = centerIndex + distance)?.takeIf {
+                        it.isValidMagneticBoundary() ||
+                            !sectionsManager.beginsSection(view = it, previous = viewSwiped)
+                    }
                 if (rightElement is ExpandableNotificationRow) {
                     magneticTargets[rightIndex] = rightElement.magneticRowListener
                     rightIndex++
                 } else {
                     if (rightElement.isValidMagneticBoundary()) {
-                        // Add the boundary and then stop the iterating
+                        // Add the boundary and then stop iterating
                         magneticTargets[rightIndex] = rightElement?.magneticRowListener
                     }
                     canMoveRight = false
@@ -157,7 +166,6 @@
 
     private fun ExpandableView?.isValidMagneticBoundary(): Boolean =
         when (this) {
-            is FooterView,
             is NotificationShelf,
             is SectionHeaderView -> true
             else -> false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
index c783250..5e0d57e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.statusbar.notification.stack;
 
+import static com.android.systemui.Flags.physicalNotificationMovement;
+import static com.android.systemui.statusbar.notification.row.ExpandableView.HEIGHT_PROPERTY;
 import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_HEADS_UP_APPEAR;
 import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_HEADS_UP_CYCLING_IN;
 import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_HEADS_UP_CYCLING_OUT;
@@ -29,11 +31,14 @@
 import android.util.Property;
 import android.view.View;
 
+import androidx.dynamicanimation.animation.DynamicAnimation;
+
 import com.android.app.animation.Interpolators;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.systemui.res.R;
 import com.android.systemui.shared.clocks.AnimatableClockView;
 import com.android.systemui.statusbar.NotificationShelf;
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
 import com.android.systemui.statusbar.notification.row.StackScrollerDecorView;
@@ -41,6 +46,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Stack;
+import java.util.function.Consumer;
 
 /**
  * An stack state animator which handles animations to new StackScrollStates
@@ -68,8 +74,10 @@
     public static final int DELAY_EFFECT_MAX_INDEX_DIFFERENCE = 2;
     private static final int MAX_STAGGER_COUNT = 5;
 
-    @VisibleForTesting int mGoToFullShadeAppearingTranslation;
-    @VisibleForTesting float mHeadsUpAppearStartAboveScreen;
+    @VisibleForTesting
+    int mGoToFullShadeAppearingTranslation;
+    @VisibleForTesting
+    float mHeadsUpAppearStartAboveScreen;
     // Padding between the old and new heads up notifications for the hun cycling animation
     private float mHeadsUpCyclingPadding;
     private final ExpandableViewState mTmpState = new ExpandableViewState();
@@ -80,8 +88,9 @@
     private ArrayList<View> mNewAddChildren = new ArrayList<>();
     private HashSet<View> mHeadsUpAppearChildren = new HashSet<>();
     private HashSet<View> mHeadsUpDisappearChildren = new HashSet<>();
-    private HashSet<Animator> mAnimatorSet = new HashSet<>();
+    private HashSet<Object> mAnimatorSet = new HashSet<>();
     private Stack<AnimatorListenerAdapter> mAnimationListenerPool = new Stack<>();
+    private Stack<DynamicAnimation.OnAnimationEndListener> mAnimationEndPool = new Stack<>();
     private AnimationFilter mAnimationFilter = new AnimationFilter();
     private long mCurrentLength;
     private long mCurrentAdditionalDelay;
@@ -99,6 +108,9 @@
         mHostLayout = hostLayout;
         initView(context);
         mAnimationProperties = new AnimationProperties() {
+
+            private final Consumer<DynamicAnimation> mDynamicAnimationConsumer = mAnimatorSet::add;
+
             @Override
             public AnimationFilter getAnimationFilter() {
                 return mAnimationFilter;
@@ -110,6 +122,17 @@
             }
 
             @Override
+            public DynamicAnimation.OnAnimationEndListener getAnimationEndListener(
+                    Property property) {
+                return getGlobalAnimationEndListener();
+            }
+
+            @Override
+            public Consumer<DynamicAnimation> getAnimationStartListener(Property property) {
+                return mDynamicAnimationConsumer;
+            }
+
+            @Override
             public boolean wasAdded(View view) {
                 return mNewAddChildren.contains(view);
             }
@@ -187,11 +210,11 @@
         adaptDurationWhenGoingToFullShade(child, viewState, wasAdded, animationStaggerCount);
         mAnimationProperties.delay = 0;
         if (wasAdded || mAnimationFilter.hasDelays
-                        && (viewState.getYTranslation() != child.getTranslationY()
-                        || viewState.getZTranslation() != child.getTranslationZ()
-                        || viewState.getAlpha() != child.getAlpha()
-                        || viewState.height != child.getActualHeight()
-                        || viewState.clipTopAmount != child.getClipTopAmount())) {
+                && (viewState.getYTranslation() != child.getTranslationY()
+                || viewState.getZTranslation() != child.getTranslationZ()
+                || viewState.getAlpha() != child.getAlpha()
+                || viewState.height != child.getActualHeight()
+                || viewState.clipTopAmount != child.getClipTopAmount())) {
             mAnimationProperties.delay = mCurrentAdditionalDelay
                     + calculateChildAnimationDelay(viewState, animationStaggerCount);
         }
@@ -209,7 +232,13 @@
                 mAnimationProperties.duration = ANIMATION_DURATION_APPEAR_DISAPPEAR + 50
                         + (long) (100 * longerDurationFactor);
             }
-            child.setTranslationY(viewState.getYTranslation() + startOffset);
+            float newTranslationY = viewState.getYTranslation() + startOffset;
+            if (physicalNotificationMovement()) {
+                PhysicsPropertyAnimator.setProperty(child, PhysicsPropertyAnimator.Y_TRANSLATION,
+                        newTranslationY);
+            } else {
+                child.setTranslationY(newTranslationY);
+            }
         }
     }
 
@@ -312,7 +341,7 @@
 
     /**
      * @return an adapter which ensures that onAnimationFinished is called once no animation is
-     *         running anymore
+     * running anymore
      */
     private AnimatorListenerAdapter getGlobalAnimationFinishedListener() {
         if (!mAnimationListenerPool.empty()) {
@@ -345,6 +374,27 @@
         };
     }
 
+    /**
+     * @return an adapter which ensures that onAnimationFinished is called once no animation is
+     * running anymore
+     */
+    private DynamicAnimation.OnAnimationEndListener getGlobalAnimationEndListener() {
+        if (!mAnimationEndPool.empty()) {
+            return mAnimationEndPool.pop();
+        }
+        return new DynamicAnimation.OnAnimationEndListener() {
+            @Override
+            public void onAnimationEnd(DynamicAnimation animation, boolean canceled, float value,
+                    float velocity) {
+                mAnimatorSet.remove(animation);
+                if (mAnimatorSet.isEmpty() && !canceled) {
+                    onAnimationFinished();
+                }
+                mAnimationEndPool.push(this);
+            }
+        };
+    }
+
     private void onAnimationFinished() {
         mHostLayout.onChildAnimationFinished();
 
@@ -358,7 +408,7 @@
      * Process the animationEvents for a new animation. Here is the place to do something custom,
      * like to modify the ViewState or to create a custom animation for an event.
      *
-     *  @param animationEvents the animation events for the animation to perform
+     * @param animationEvents the animation events for the animation to perform
      * @return true if any custom animation was created
      */
     private boolean processAnimationEvents(
@@ -428,7 +478,7 @@
                     translationDirection = ((viewState.getYTranslation()
                             - (ownPosition + actualHeight / 2.0f)) * 2 /
                             actualHeight);
-                    translationDirection = Math.max(Math.min(translationDirection, 1.0f),-1.0f);
+                    translationDirection = Math.max(Math.min(translationDirection, 1.0f), -1.0f);
 
                 }
                 Runnable postAnimation;
@@ -446,7 +496,7 @@
                         changingView.removeFromTransientContainer();
                     };
                 } else {
-                    startAnimation = ()-> {
+                    startAnimation = () -> {
                         changingView.setInRemovalAnimation(true);
                     };
                     postAnimation = () -> {
@@ -460,7 +510,7 @@
                         ExpandableView.ClipSide.BOTTOM);
                 needsCustomAnimation = true;
             } else if (event.animationType ==
-                NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT) {
+                    NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT) {
                 boolean isFullySwipedOut = mHostLayout.isFullySwipedOut(changingView);
                 if (loggable) {
                     mLogger.processAnimationEventsRemoveSwipeOut(key, isFullySwipedOut, isHeadsUp);
@@ -699,8 +749,8 @@
 
     /**
      * @param headsUpFromBottom Whether we are showing the HUNs at the bottom of the screen
-     * @param oldHunHeight Height of the old HUN
-     * @param newHunHeight Height of the new HUN
+     * @param oldHunHeight      Height of the old HUN
+     * @param newHunHeight      Height of the new HUN
      * @return The y translation target value of the HUN cycling out animation
      */
     private float getHeadsUpCyclingOutYTranslation(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
index b2ffa4a..2ef6f36 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
@@ -16,6 +16,10 @@
 
 package com.android.systemui.statusbar.notification.stack;
 
+import static com.android.systemui.Flags.physicalNotificationMovement;
+import static com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.TAG_ANIMATOR_TRANSLATION_Y;
+import static com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Y_TRANSLATION;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
@@ -26,14 +30,20 @@
 import android.view.View;
 import android.view.animation.Interpolator;
 
+import androidx.dynamicanimation.animation.DynamicAnimation;
+import androidx.dynamicanimation.animation.SpringAnimation;
+
 import com.android.app.animation.Interpolators;
 import com.android.systemui.Dumpable;
 import com.android.systemui.res.R;
 import com.android.systemui.statusbar.notification.AnimatableProperty;
 import com.android.systemui.statusbar.notification.NotificationFadeAware.FadeOptimizedNotification;
+import com.android.systemui.statusbar.notification.PhysicsProperty;
+import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator;
 import com.android.systemui.statusbar.notification.PropertyAnimator;
-import com.android.systemui.statusbar.notification.row.ExpandableView;
+import com.android.systemui.statusbar.notification.PropertyData;
 import com.android.systemui.statusbar.notification.headsup.HeadsUpUtil;
+import com.android.systemui.statusbar.notification.row.ExpandableView;
 
 import java.io.PrintWriter;
 import java.lang.reflect.Field;
@@ -46,6 +56,14 @@
  */
 public class ViewState implements Dumpable {
 
+    public ViewState() {
+        this(physicalNotificationMovement());
+    }
+
+    public ViewState(boolean usePhysicsForMovement) {
+        setUsePhysicsForMovement(usePhysicsForMovement);
+    }
+
     /**
      * Some animation properties that can be used to update running animations but not creating
      * any new ones.
@@ -59,7 +77,6 @@
         }
     };
     private static final int TAG_ANIMATOR_TRANSLATION_X = R.id.translation_x_animator_tag;
-    private static final int TAG_ANIMATOR_TRANSLATION_Y = R.id.translation_y_animator_tag;
     private static final int TAG_ANIMATOR_TRANSLATION_Z = R.id.translation_z_animator_tag;
     private static final int TAG_ANIMATOR_ALPHA = R.id.alpha_animator_tag;
     private static final int TAG_END_TRANSLATION_X = R.id.translation_x_animator_end_value_tag;
@@ -72,8 +89,7 @@
     private static final int TAG_START_ALPHA = R.id.alpha_animator_start_value_tag;
     private static final String LOG_TAG = "StackViewState";
 
-    private static final AnimatableProperty SCALE_X_PROPERTY
-            = new AnimatableProperty() {
+    private static final AnimatableProperty SCALE_X_PROPERTY = new AnimatableProperty() {
 
         @Override
         public int getAnimationStartTag() {
@@ -96,8 +112,7 @@
         }
     };
 
-    private static final AnimatableProperty SCALE_Y_PROPERTY
-            = new AnimatableProperty() {
+    private static final AnimatableProperty SCALE_Y_PROPERTY = new AnimatableProperty() {
 
         @Override
         public int getAnimationStartTag() {
@@ -129,11 +144,16 @@
     private float mZTranslation;
     private float mScaleX = 1.0f;
     private float mScaleY = 1.0f;
+    protected boolean mUsePhysicsForMovement = false;
 
     public float getAlpha() {
         return mAlpha;
     }
 
+    public void setUsePhysicsForMovement(boolean usePhysicsForMovement) {
+        this.mUsePhysicsForMovement = usePhysicsForMovement;
+    }
+
     /**
      * @param alpha View transparency.
      */
@@ -230,6 +250,7 @@
         hidden = viewState.hidden;
         mScaleX = viewState.mScaleX;
         mScaleY = viewState.mScaleY;
+        mUsePhysicsForMovement = viewState.mUsePhysicsForMovement;
     }
 
     public void initFrom(View view) {
@@ -261,11 +282,15 @@
         }
 
         // apply yTranslation
-        boolean animatingY = isAnimating(view, TAG_ANIMATOR_TRANSLATION_Y);
-        if (animatingY) {
-            updateAnimationY(view);
-        } else if (view.getTranslationY() != this.mYTranslation) {
-            view.setTranslationY(this.mYTranslation);
+        if (mUsePhysicsForMovement) {
+            PhysicsPropertyAnimator.setProperty(view, Y_TRANSLATION, this.mYTranslation);
+        } else {
+            boolean animatingY = isAnimating(view, TAG_ANIMATOR_TRANSLATION_Y);
+            if (animatingY) {
+                updateAnimationY(view);
+            } else if (view.getTranslationY() != this.mYTranslation) {
+                view.setTranslationY(this.mYTranslation);
+            }
         }
 
         // apply zTranslation
@@ -293,8 +318,8 @@
         }
 
         int oldVisibility = view.getVisibility();
-        boolean becomesInvisible = this.mAlpha == 0.0f
-                || (this.hidden && (!isAnimating(view) || oldVisibility != View.VISIBLE));
+        boolean becomesInvisible = this.mAlpha == 0.0f || (this.hidden && (!isAnimating(view)
+                || oldVisibility != View.VISIBLE));
         boolean animatingAlpha = isAnimating(view, TAG_ANIMATOR_ALPHA);
         if (animatingAlpha) {
             updateAlphaAnimation(view);
@@ -315,9 +340,8 @@
             } else {
                 boolean newLayerTypeIsHardware = becomesFaded && view.hasOverlappingRendering();
                 int layerType = view.getLayerType();
-                int newLayerType = newLayerTypeIsHardware
-                        ? View.LAYER_TYPE_HARDWARE
-                        : View.LAYER_TYPE_NONE;
+                int newLayerType =
+                        newLayerTypeIsHardware ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE;
                 if (layerType != newLayerType) {
                     view.setLayerType(newLayerType, null);
                 }
@@ -360,11 +384,19 @@
     }
 
     private static boolean isAnimating(View view, int tag) {
-        return getChildTag(view, tag) != null;
+        Object childTag = getChildTag(view, tag);
+        if (childTag instanceof PropertyData propertyData) {
+            return propertyData.getAnimator() != null;
+        }
+        return childTag != null;
     }
 
     public static boolean isAnimating(View view, AnimatableProperty property) {
-        return getChildTag(view, property.getAnimatorTag()) != null;
+        Object childTag = getChildTag(view, property.getAnimatorTag());
+        if (childTag instanceof PropertyData propertyData) {
+            return propertyData.getAnimator() != null;
+        }
+        return childTag != null;
     }
 
     /**
@@ -376,8 +408,7 @@
     public void animateTo(View child, AnimationProperties animationProperties) {
         boolean wasVisible = child.getVisibility() == View.VISIBLE;
         final float alpha = this.mAlpha;
-        if (!wasVisible && (alpha != 0 || child.getAlpha() != 0)
-                && !this.gone && !this.hidden) {
+        if (!wasVisible && (alpha != 0 || child.getAlpha() != 0) && !this.gone && !this.hidden) {
             child.setVisibility(View.VISIBLE);
         }
         float childAlpha = child.getAlpha();
@@ -465,8 +496,8 @@
             }
         }
 
-        ObjectAnimator animator = ObjectAnimator.ofFloat(child, View.ALPHA,
-                child.getAlpha(), newEndValue);
+        ObjectAnimator animator = ObjectAnimator.ofFloat(child, View.ALPHA, child.getAlpha(),
+                newEndValue);
         animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
         // Handle layer type
         child.setLayerType(View.LAYER_TYPE_HARDWARE, null);
@@ -516,8 +547,7 @@
         startZTranslationAnimation(view, NO_NEW_ANIMATIONS);
     }
 
-    private void updateAnimation(View view, AnimatableProperty property,
-            float endValue) {
+    private void updateAnimation(View view, AnimatableProperty property, float endValue) {
         PropertyAnimator.startAnimation(view, property, endValue, NO_NEW_ANIMATIONS);
     }
 
@@ -615,8 +645,8 @@
                 child.getTranslationX(), newEndValue);
         Interpolator customInterpolator = properties.getCustomInterpolator(child,
                 View.TRANSLATION_X);
-        Interpolator interpolator = customInterpolator != null ? customInterpolator
-                : Interpolators.FAST_OUT_SLOW_IN;
+        Interpolator interpolator =
+                customInterpolator != null ? customInterpolator : Interpolators.FAST_OUT_SLOW_IN;
         animator.setInterpolator(interpolator);
         long newDuration = cancelAnimatorAndGetNewDuration(properties.duration, previousAnimator);
         animator.setDuration(newDuration);
@@ -649,6 +679,24 @@
     }
 
     private void startYTranslationAnimation(final View child, AnimationProperties properties) {
+        if (mUsePhysicsForMovement) {
+            // Y Translation does some extra calls when it ends, so lets add a listener
+            DynamicAnimation.OnAnimationEndListener endListener =
+                    (animation, canceled, value, velocity) -> {
+                        if (!canceled) {
+                            HeadsUpUtil.setNeedsHeadsUpDisappearAnimationAfterClick(child, false);
+                            onYTranslationAnimationFinished(child);
+                        }
+                    };
+            PhysicsPropertyAnimator.setProperty(child, Y_TRANSLATION, this.mYTranslation,
+                    properties, properties.getAnimationFilter().animateY, endListener);
+        } else {
+            startYTranslationInterpolatorAnimation(child, properties);
+        }
+    }
+
+    private void startYTranslationInterpolatorAnimation(View child,
+            AnimationProperties properties) {
         Float previousStartValue = getChildTag(child, TAG_START_TRANSLATION_Y);
         Float previousEndValue = getChildTag(child, TAG_END_TRANSLATION_Y);
         float newEndValue = this.mYTranslation;
@@ -681,8 +729,8 @@
                 child.getTranslationY(), newEndValue);
         Interpolator customInterpolator = properties.getCustomInterpolator(child,
                 View.TRANSLATION_Y);
-        Interpolator interpolator = customInterpolator != null ? customInterpolator
-                : Interpolators.FAST_OUT_SLOW_IN;
+        Interpolator interpolator =
+                customInterpolator != null ? customInterpolator : Interpolators.FAST_OUT_SLOW_IN;
         animator.setInterpolator(interpolator);
         long newDuration = cancelAnimatorAndGetNewDuration(properties.duration, previousAnimator);
         animator.setDuration(newDuration);
@@ -731,9 +779,19 @@
     }
 
     protected void abortAnimation(View child, int animatorTag) {
-        Animator previousAnimator = getChildTag(child, animatorTag);
-        if (previousAnimator != null) {
-            previousAnimator.cancel();
+        Object storedTag = getChildTag(child, animatorTag);
+        if (storedTag != null) {
+            if (storedTag instanceof Animator animator) {
+                animator.cancel();
+            } else if (storedTag instanceof PropertyData propertyData) {
+                // Physics based animation!
+                Runnable delayRunnable = propertyData.getDelayRunnable();
+                child.removeCallbacks(delayRunnable);
+                SpringAnimation animator = propertyData.getAnimator();
+                if (animator != null) {
+                    animator.cancel();
+                }
+            }
         }
     }
 
@@ -750,46 +808,15 @@
         if (previousAnimator != null) {
             // We take either the desired length of the new animation or the remaining time of
             // the previous animator, whichever is longer.
-            newDuration = Math.max(previousAnimator.getDuration()
-                    - previousAnimator.getCurrentPlayTime(), newDuration);
+            newDuration = Math.max(
+                    previousAnimator.getDuration() - previousAnimator.getCurrentPlayTime(),
+                    newDuration);
             previousAnimator.cancel();
         }
         return newDuration;
     }
 
     /**
-     * Get the end value of the xTranslation animation running on a view or the xTranslation
-     * if no animation is running.
-     */
-    public static float getFinalTranslationX(View view) {
-        if (view == null) {
-            return 0;
-        }
-        ValueAnimator xAnimator = getChildTag(view, TAG_ANIMATOR_TRANSLATION_X);
-        if (xAnimator == null) {
-            return view.getTranslationX();
-        } else {
-            return getChildTag(view, TAG_END_TRANSLATION_X);
-        }
-    }
-
-    /**
-     * Get the end value of the yTranslation animation running on a view or the yTranslation
-     * if no animation is running.
-     */
-    public static float getFinalTranslationY(View view) {
-        if (view == null) {
-            return 0;
-        }
-        ValueAnimator yAnimator = getChildTag(view, TAG_ANIMATOR_TRANSLATION_Y);
-        if (yAnimator == null) {
-            return view.getTranslationY();
-        } else {
-            return getChildTag(view, TAG_END_TRANSLATION_Y);
-        }
-    }
-
-    /**
      * Get the end value of the zTranslation animation running on a view or the zTranslation
      * if no animation is running.
      */
@@ -806,26 +833,14 @@
     }
 
     public static boolean isAnimatingY(View child) {
-        return getChildTag(child, TAG_ANIMATOR_TRANSLATION_Y) != null;
+        return isAnimating(child, TAG_ANIMATOR_TRANSLATION_Y);
     }
 
     public void cancelAnimations(View view) {
-        Animator animator = getChildTag(view, TAG_ANIMATOR_TRANSLATION_X);
-        if (animator != null) {
-            animator.cancel();
-        }
-        animator = getChildTag(view, TAG_ANIMATOR_TRANSLATION_Y);
-        if (animator != null) {
-            animator.cancel();
-        }
-        animator = getChildTag(view, TAG_ANIMATOR_TRANSLATION_Z);
-        if (animator != null) {
-            animator.cancel();
-        }
-        animator = getChildTag(view, TAG_ANIMATOR_ALPHA);
-        if (animator != null) {
-            animator.cancel();
-        }
+        abortAnimation(view, TAG_ANIMATOR_TRANSLATION_X);
+        abortAnimation(view, TAG_ANIMATOR_TRANSLATION_Y);
+        abortAnimation(view, TAG_ANIMATOR_TRANSLATION_Z);
+        abortAnimation(view, TAG_ANIMATOR_ALPHA);
     }
 
     @Override
@@ -840,8 +855,8 @@
             // Print field names paired with their values
             for (Field field : fields) {
                 int modifiers = field.getModifiers();
-                if (Modifier.isStatic(modifiers) || field.isSynthetic()
-                        || Modifier.isTransient(modifiers)) {
+                if (Modifier.isStatic(modifiers) || field.isSynthetic() || Modifier.isTransient(
+                        modifiers)) {
                     continue;
                 }
                 if (!first) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 54efa4a..5c81c8e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -44,15 +44,18 @@
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToPrimaryBouncerTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel
+import com.android.systemui.keyguard.ui.viewmodel.AodToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.DozingToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DozingToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DozingToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DozingToPrimaryBouncerTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel
@@ -135,7 +138,9 @@
     private val aodToGoneTransitionViewModel: AodToGoneTransitionViewModel,
     private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
     private val aodToOccludedTransitionViewModel: AodToOccludedTransitionViewModel,
+    private val aodToGlanceableHubTransitionViewModel: AodToGlanceableHubTransitionViewModel,
     private val aodToPrimaryBouncerTransitionViewModel: AodToPrimaryBouncerTransitionViewModel,
+    private val dozingToDreamingTransitionViewModel: DozingToDreamingTransitionViewModel,
     dozingToGlanceableHubTransitionViewModel: DozingToGlanceableHubTransitionViewModel,
     private val dozingToLockscreenTransitionViewModel: DozingToLockscreenTransitionViewModel,
     private val dozingToOccludedTransitionViewModel: DozingToOccludedTransitionViewModel,
@@ -144,6 +149,7 @@
     private val dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
     private val glanceableHubToLockscreenTransitionViewModel:
         GlanceableHubToLockscreenTransitionViewModel,
+    private val glanceableHubToAodTransitionViewModel: GlanceableHubToAodTransitionViewModel,
     private val goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
     private val goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
     private val goneToDreamingTransitionViewModel: GoneToDreamingTransitionViewModel,
@@ -571,7 +577,9 @@
             aodToGoneTransitionViewModel.notificationAlpha(viewState),
             aodToLockscreenTransitionViewModel.notificationAlpha,
             aodToOccludedTransitionViewModel.lockscreenAlpha(viewState),
+            aodToGlanceableHubTransitionViewModel.lockscreenAlpha(viewState),
             aodToPrimaryBouncerTransitionViewModel.notificationAlpha,
+            dozingToDreamingTransitionViewModel.notificationAlpha,
             dozingToLockscreenTransitionViewModel.lockscreenAlpha,
             dozingToOccludedTransitionViewModel.lockscreenAlpha(viewState),
             dozingToPrimaryBouncerTransitionViewModel.notificationAlpha,
@@ -591,6 +599,7 @@
             offToLockscreenTransitionViewModel.lockscreenAlpha,
             primaryBouncerToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
             glanceableHubToLockscreenTransitionViewModel.keyguardAlpha,
+            glanceableHubToAodTransitionViewModel.lockscreenAlpha,
             lockscreenToGlanceableHubTransitionViewModel.keyguardAlpha,
         )
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
index de72154..36193bd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
@@ -441,6 +441,7 @@
         mAnimationScheduler.addCallback(mAnimationCallback);
         mUserInfoController.addCallback(mOnUserInfoChangedListener);
         mStatusBarStateController.addCallback(mStatusBarStateListener);
+        mStatusBarState = mStatusBarStateController.getState();
         mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback);
         mDisableStateTracker.startTracking(mCommandQueue, mView.getDisplay().getDisplayId());
         if (mTintedIconManager == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
index 4825a10..15d73d2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java
@@ -735,6 +735,7 @@
         private final Consumer<Property> mCannedAnimationEndListener;
 
         public IconState(View child) {
+            super(false /* usePhysicsForMovement */);
             mView = child;
             mCannedAnimationEndListener = (property) -> {
                 // If we finished animating out of the shelf
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index 6c8e182..ba41fd4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -65,6 +65,7 @@
 import com.android.systemui.shade.ShadeDisplayAware;
 import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor;
 import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor;
+import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.NotificationClickNotifier;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -116,6 +117,7 @@
     private final static String TAG = "StatusBarNotificationActivityStarter";
 
     private final Context mContext;
+    private final ShadeDialogContextInteractor mContextInteractor;
 
     private final Handler mMainThreadHandler;
     private final Executor mUiBgExecutor;
@@ -156,6 +158,7 @@
     @Inject
     StatusBarNotificationActivityStarter(
             @ShadeDisplayAware Context context,
+            ShadeDialogContextInteractor contextInteractor,
             @Main Handler mainThreadHandler,
             @Background Executor uiBgExecutor,
             NotificationVisibilityProvider visibilityProvider,
@@ -188,6 +191,7 @@
             PowerInteractor powerInteractor,
             UserTracker userTracker) {
         mContext = context;
+        mContextInteractor = contextInteractor;
         mMainThreadHandler = mainThreadHandler;
         mUiBgExecutor = uiBgExecutor;
         mVisibilityProvider = visibilityProvider;
@@ -491,7 +495,7 @@
             boolean animate,
             boolean isActivityIntent) {
         mLogger.logStartNotificationIntent(entry);
-        final int displayId = mContext.getDisplayId();
+        final int displayId = mContextInteractor.getContext().getDisplayId();
         try {
             ActivityTransitionAnimator.Controller animationController =
                     new StatusBarTransitionAnimatorController(
@@ -532,7 +536,7 @@
     public void startNotificationGutsIntent(@NonNull final Intent intent, final int appUid,
             @NonNull ExpandableNotificationRow row) {
         boolean animate = mActivityStarter.shouldAnimateLaunch(true /* isActivityIntent */);
-        final int displayId = mContext.getDisplayId();
+        final int displayId = mContextInteractor.getContext().getDisplayId();
         ActivityStarter.OnDismissAction onDismissAction = new ActivityStarter.OnDismissAction() {
             @Override
             public boolean onDismiss() {
@@ -571,7 +575,7 @@
     @Override
     public void startHistoryIntent(View view, boolean showHistory) {
         ModesEmptyShadeFix.assertInLegacyMode();
-        final int displayId = mContext.getDisplayId();
+        final int displayId = mContextInteractor.getContext().getDisplayId();
         boolean animate = mActivityStarter.shouldAnimateLaunch(true /* isActivityIntent */);
         ActivityStarter.OnDismissAction onDismissAction = new ActivityStarter.OnDismissAction() {
             @Override
@@ -621,7 +625,7 @@
 
     @Override
     public void startSettingsIntent(@NonNull View view, @NonNull SettingsIntent intentInfo) {
-        final int displayId = mContext.getDisplayId();
+        final int displayId = mContextInteractor.getContext().getDisplayId();
         boolean animate = mActivityStarter.shouldAnimateLaunch(true /* isActivityIntent */);
         ActivityStarter.OnDismissAction onDismissAction = new ActivityStarter.OnDismissAction() {
             @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java
index 144939d..38c0d28 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java
@@ -443,6 +443,11 @@
     }
 
     public static class StatusIconState extends ViewState {
+
+        public StatusIconState() {
+            super(false /* usePhysicsForMovement */);
+        }
+
         /// StatusBarIconView.STATE_*
         public int visibleState = STATE_ICON;
         public boolean justAdded = true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/StatusBarChipsModernization.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/StatusBarChipsModernization.kt
index 9f8b455..b77e8f2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/StatusBarChipsModernization.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/StatusBarChipsModernization.kt
@@ -23,6 +23,10 @@
 @Suppress("NOTHING_TO_INLINE")
 object StatusBarChipsModernization {
     /** The aconfig flag name */
+    @Deprecated(
+        "For tests, use @EnableChipsModernization or @DisableChipsModernization " +
+            "annotations instead"
+    )
     const val FLAG_NAME = Flags.FLAG_STATUS_BAR_CHIPS_MODERNIZATION
 
     /** A token used for dependency declaration */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
index 2fd7d82..d6ca656 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
@@ -150,7 +150,14 @@
         return when {
             isVisible -> {
                 logger.d({ "Call app is visible: uid=$int1" }) { int1 = model.uid }
-                OngoingCallModel.InCallWithVisibleApp
+                OngoingCallModel.InCallWithVisibleApp(
+                    startTimeMs = model.whenTime,
+                    notificationIconView = model.statusBarChipIconView,
+                    intent = model.contentIntent,
+                    notificationKey = model.key,
+                    appName = model.appName,
+                    promotedContent = model.promotedContent,
+                )
             }
 
             else -> {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
index 6507b72..62f0ba0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
@@ -28,8 +28,21 @@
     /**
      * There is an ongoing call but the call app is currently visible, so we don't need to show the
      * chip.
+     *
+     * @property startTimeMs see [InCall.startTimeMs].
+     * @property notificationIconView see [InCall.notificationIconView].
+     * @property intent see [InCall.intent].
+     * @property appName see [InCall.appName].
+     * @property promotedContent see [InCall.promotedContent].
      */
-    data object InCallWithVisibleApp : OngoingCallModel
+    data class InCallWithVisibleApp(
+        val startTimeMs: Long,
+        val notificationIconView: StatusBarIconView?,
+        val intent: PendingIntent?,
+        val notificationKey: String,
+        val appName: String,
+        val promotedContent: PromotedNotificationContentModel?,
+    ) : OngoingCallModel
 
     /**
      * There *is* an ongoing call.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
index a1f7a81..0eabb4ec 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
@@ -37,10 +37,8 @@
 import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flatMapLatest
@@ -255,12 +253,7 @@
             }
             .stateIn(scope, SharingStarted.WhileSubscribed(), false)
 
-    override val isNonTerrestrial: StateFlow<Boolean> =
-        if (Flags.carrierEnabledSatelliteFlag()) {
-            connectionRepository.isNonTerrestrial
-        } else {
-            MutableStateFlow(false).asStateFlow()
-        }
+    override val isNonTerrestrial: StateFlow<Boolean> = connectionRepository.isNonTerrestrial
 
     override val isRoaming: StateFlow<Boolean> =
         combine(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
index d3e3711..2433d11 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
@@ -27,6 +27,7 @@
 import com.android.systemui.common.shared.model.Text.Companion.loadText
 import com.android.systemui.plugins.qs.QSTile
 import com.android.systemui.qs.tileimpl.QSTileImpl
+import com.android.systemui.qs.tileimpl.QSTileImpl.ResourceIcon
 
 /** Model describing the state that the QS Internet tile should be in. */
 sealed interface InternetTileModel {
@@ -49,11 +50,14 @@
         state.contentDescription = contentDescription.loadContentDescription(context)
 
         // To support both SignalDrawable and other icons, give priority to icons over IDs
-        if (icon != null) {
-            state.icon = icon
-        } else if (iconId != null) {
-            state.icon = QSTileImpl.maybeLoadResourceIcon(iconId!!, context)
-        }
+        state.icon =
+            when {
+                icon is ResourceIcon ->
+                    QSTileImpl.maybeLoadResourceIcon((icon as ResourceIcon).resId, context)
+                icon != null -> icon
+                iconId != null -> QSTileImpl.maybeLoadResourceIcon(iconId!!, context)
+                else -> null
+            }
 
         state.state =
             if (this is Active) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java
index 88cf46a..b13e01b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java
@@ -29,7 +29,6 @@
 
 import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
 import com.android.systemui.Dumpable;
-import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.util.wrapper.RotationPolicyWrapper;
@@ -43,7 +42,6 @@
  * Handles reading and writing of rotation lock settings per device state, as well as setting the
  * rotation lock when device state changes.
  */
-@SysUISingleton
 public final class DeviceStateRotationLockSettingController
         implements Listenable, RotationLockController.RotationLockControllerCallback, Dumpable {
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
index 797aa1f..3ee7f33e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
@@ -27,8 +27,10 @@
 
 import com.android.internal.view.RotationPolicy.RotationPolicyListener;
 import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.rotationlock.DeviceStateAutoRotateModule.BoundsDeviceStateAutoRotateModule;
 import com.android.systemui.util.wrapper.RotationPolicyWrapper;
 
+import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.inject.Inject;
@@ -50,21 +52,25 @@
     };
 
     private final RotationPolicyWrapper mRotationPolicy;
-    private final DeviceStateRotationLockSettingController
+    private final Optional<DeviceStateRotationLockSettingController>
             mDeviceStateRotationLockSettingController;
     private final boolean mIsPerDeviceStateRotationLockEnabled;
 
     @Inject
     public RotationLockControllerImpl(
             RotationPolicyWrapper rotationPolicyWrapper,
-            DeviceStateRotationLockSettingController deviceStateRotationLockSettingController,
+            Optional<DeviceStateRotationLockSettingController>
+                    deviceStateRotationLockSettingController,
             @Named(DEVICE_STATE_ROTATION_LOCK_DEFAULTS) String[] deviceStateRotationLockDefaults
     ) {
         mRotationPolicy = rotationPolicyWrapper;
-        mDeviceStateRotationLockSettingController = deviceStateRotationLockSettingController;
         mIsPerDeviceStateRotationLockEnabled = deviceStateRotationLockDefaults.length > 0;
-        if (mIsPerDeviceStateRotationLockEnabled) {
-            mCallbacks.add(mDeviceStateRotationLockSettingController);
+        mDeviceStateRotationLockSettingController =
+                deviceStateRotationLockSettingController;
+
+        if (mIsPerDeviceStateRotationLockEnabled
+                && mDeviceStateRotationLockSettingController.isPresent()) {
+            mCallbacks.add(mDeviceStateRotationLockSettingController.get());
         }
 
         setListening(true);
@@ -113,8 +119,9 @@
         } else {
             mRotationPolicy.unregisterRotationPolicyListener(mRotationPolicyListener);
         }
-        if (mIsPerDeviceStateRotationLockEnabled) {
-            mDeviceStateRotationLockSettingController.setListening(listening);
+        if (mIsPerDeviceStateRotationLockEnabled
+                && mDeviceStateRotationLockSettingController.isPresent()) {
+            mDeviceStateRotationLockSettingController.get().setListening(listening);
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
index 9ab8175..36513f7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
@@ -24,6 +24,9 @@
 
 import android.annotation.MainThread;
 import android.app.IActivityManager;
+import android.app.role.OnRoleHoldersChangedListener;
+import android.app.role.RoleManager;
+import android.companion.AssociationRequest;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.database.ExecutorContentObserver;
@@ -51,6 +54,8 @@
 import com.android.systemui.util.ListenerSet;
 import com.android.systemui.util.settings.GlobalSettings;
 
+import java.util.List;
+import java.util.Objects;
 import java.util.Random;
 import java.util.concurrent.Executor;
 
@@ -63,12 +68,14 @@
     private static final String LOG_TAG = "SNPC";
     private final SensitiveNotificationProtectionControllerLogger mLogger;
     private final PackageManager mPackageManager;
+    private final RoleManager mRoleManager;
     // Packages exempt from projection session protections (if they start a projection session)
     private final ArraySet<String> mSessionProtectionExemptPackages = new ArraySet<>();
     // Packages exempt from individual notification protections (if they post a notification)
     private final ArraySet<String> mNotificationProtectionExemptPackages = new ArraySet<>();
     private final ListenerSet<Runnable> mListeners = new ListenerSet<>();
     private volatile MediaProjectionInfo mProjection;
+    private ArraySet<RoleHolder> mNotificationProtectionExemptByRolePackages = new ArraySet<>();
     private SensitiveNotificatioMediaProjectionSession mActiveMediaProjectionSession;
     boolean mDisableScreenShareProtections = false;
 
@@ -128,6 +135,27 @@
                 }
             };
 
+    @VisibleForTesting
+    final OnRoleHoldersChangedListener mRoleHoldersChangedListener =
+            new OnRoleHoldersChangedListener() {
+                @Override
+                public void onRoleHoldersChanged(@NonNull String roleName,
+                        @NonNull UserHandle user) {
+                    if (!roleName.equals(AssociationRequest.DEVICE_PROFILE_APP_STREAMING)) {
+                        return;
+                    }
+
+                    List<String> appStreamingRoleHolders = mRoleManager.getRoleHoldersAsUser(
+                            roleName, user);
+                    ArraySet<RoleHolder> roleHolders = new ArraySet<>();
+                    for (String appStreamingRoleHolder : appStreamingRoleHolders) {
+                        RoleHolder roleHolder = new RoleHolder(appStreamingRoleHolder, user);
+                        roleHolders.add(roleHolder);
+                    }
+                    mNotificationProtectionExemptByRolePackages = roleHolders;
+                }
+            };
+
     private void logSensitiveContentProtectionSessionStart(
             long sessionId, int projectionAppUid, boolean exempt) {
         mActiveMediaProjectionSession =
@@ -166,11 +194,13 @@
             IActivityManager activityManager,
             PackageManager packageManager,
             TelephonyManager telephonyManager,
+            RoleManager roleManager,
             @Main Handler mainHandler,
             @Background Executor bgExecutor,
             SensitiveNotificationProtectionControllerLogger logger) {
         mLogger = logger;
         mPackageManager = packageManager;
+        mRoleManager = roleManager;
 
         if (!screenshareNotificationHiding()) {
             return;
@@ -215,6 +245,8 @@
         });
 
         mediaProjectionManager.addCallback(mMediaProjectionCallback, mainHandler);
+        roleManager.addOnRoleHoldersChangedListenerAsUser(bgExecutor, mRoleHoldersChangedListener,
+                UserHandle.ALL);
     }
 
     @NonNull
@@ -314,6 +346,10 @@
             Log.w(LOG_TAG, "Screen share protections exempt for package " + info.getPackageName()
                     + " via permission");
             return null;
+        } else if (info != null && isAppStreamingRoleHolder(info)) {
+            Log.w(LOG_TAG, "Screen share protections exempt for package " + info.getPackageName()
+                    + " via role(s) held");
+            return null;
         } else if (info != null && info.getLaunchCookie() != null) {
             // Only enable sensitive content protection if sharing full screen
             // Launch cookie only set (non-null) if sharing single app/task
@@ -323,11 +359,16 @@
         return info;
     }
 
+    private boolean isAppStreamingRoleHolder(@NonNull MediaProjectionInfo info) {
+        return mNotificationProtectionExemptByRolePackages.contains(
+                new RoleHolder(info.getPackageName(), info.getUserHandle()));
+    }
+
     private boolean canRecordSensitiveContent(@NonNull String packageName) {
         // RECORD_SENSITIVE_CONTENT is flagged api on sensitiveNotificationAppProtection
         if (sensitiveNotificationAppProtection()) {
             return mPackageManager.checkPermission(
-                            android.Manifest.permission.RECORD_SENSITIVE_CONTENT, packageName)
+                    android.Manifest.permission.RECORD_SENSITIVE_CONTENT, packageName)
                     == PackageManager.PERMISSION_GRANTED;
         }
         return false;
@@ -382,4 +423,26 @@
         boolean userForcesRedaction = entry.isChannelVisibilityPrivate();
         return notificationRequestsRedaction || userForcesRedaction;
     }
+
+    private static final class RoleHolder {
+        private final String mPackageName;
+        private final UserHandle mUserHandle;
+
+        RoleHolder(String packageName, UserHandle userHandle) {
+            mPackageName = packageName;
+            mUserHandle = userHandle;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (!(o instanceof RoleHolder that)) return false;
+            return Objects.equals(mPackageName, that.mPackageName) && Objects.equals(
+                    mUserHandle, that.mUserHandle);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mPackageName, mUserHandle);
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogEventLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogEventLogger.kt
index 33ed419..5dbe9b1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogEventLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogEventLogger.kt
@@ -21,29 +21,25 @@
 import com.android.systemui.qs.QSModesEvent
 import javax.inject.Inject
 
-class ModesDialogEventLogger
-@Inject
-constructor(
-    private val uiEventLogger: UiEventLogger,
-) {
+class ModesDialogEventLogger @Inject constructor(private val uiEventLogger: UiEventLogger) {
 
     fun logModeOn(mode: ZenMode) {
         val id =
             if (mode.isManualDnd) QSModesEvent.QS_MODES_DND_ON else QSModesEvent.QS_MODES_MODE_ON
-        uiEventLogger.log(id, /* uid= */ 0, mode.rule.packageName)
+        uiEventLogger.log(id, /* uid= */ 0, mode.ownerPackage)
     }
 
     fun logModeOff(mode: ZenMode) {
         val id =
             if (mode.isManualDnd) QSModesEvent.QS_MODES_DND_OFF else QSModesEvent.QS_MODES_MODE_OFF
-        uiEventLogger.log(id, /* uid= */ 0, mode.rule.packageName)
+        uiEventLogger.log(id, /* uid= */ 0, mode.ownerPackage)
     }
 
     fun logModeSettings(mode: ZenMode) {
         val id =
             if (mode.isManualDnd) QSModesEvent.QS_MODES_DND_SETTINGS
             else QSModesEvent.QS_MODES_MODE_SETTINGS
-        uiEventLogger.log(id, /* uid= */ 0, mode.rule.packageName)
+        uiEventLogger.log(id, /* uid= */ 0, mode.ownerPackage)
     }
 
     fun logOpenDurationDialog(mode: ZenMode) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModel.kt
index 07f1c34..dc07202 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModel.kt
@@ -71,10 +71,10 @@
                         mode.id in prevIds -> true
                         // Mode is enabled -> show if active (so user can toggle off), or if it
                         // can be manually toggled on
-                        mode.rule.isEnabled -> mode.isActive || mode.rule.isManualInvocationAllowed
+                        mode.isEnabled -> mode.isActive || mode.isManualInvocationAllowed
                         // Mode was created as disabled, or disabled by the app that owns it ->
                         // will be shown with a "Not set" text
-                        !mode.rule.isEnabled -> mode.status == ZenMode.Status.DISABLED_BY_OTHER
+                        !mode.isEnabled -> mode.status == ZenMode.Status.DISABLED_BY_OTHER
                         else -> false
                     }
                 }
@@ -97,13 +97,13 @@
                                 if (mode.isActive) R.string.zen_mode_on else R.string.zen_mode_off
                             ),
                         onClick = {
-                            if (!mode.rule.isEnabled) {
+                            if (!mode.isEnabled) {
                                 openSettings(mode)
                             } else if (mode.isActive) {
                                 dialogEventLogger.logModeOff(mode)
                                 zenModeInteractor.deactivateMode(mode)
                             } else {
-                                if (mode.rule.isManualInvocationAllowed) {
+                                if (mode.isManualInvocationAllowed) {
                                     if (zenModeInteractor.shouldAskForZenDuration(mode)) {
                                         dialogEventLogger.logOpenDurationDialog(mode)
                                         // NOTE: The dialog handles turning on the mode itself.
@@ -144,10 +144,10 @@
      * readers, and for the tile subtext will be augmented with the current status of the mode.
      */
     private fun getModeDescription(mode: ZenMode, forAccessibility: Boolean): String? {
-        if (!mode.rule.isEnabled) {
+        if (!mode.isEnabled) {
             return context.resources.getString(R.string.zen_mode_set_up)
         }
-        if (!mode.rule.isManualInvocationAllowed && !mode.isActive) {
+        if (!mode.isManualInvocationAllowed && !mode.isActive) {
             return context.resources.getString(R.string.zen_mode_no_manual_invocation)
         }
         return if (forAccessibility)
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
index a2125c8..d8a9527 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/TouchpadTutorialModule.kt
@@ -130,22 +130,32 @@
     val easterEggGestureViewModel: EasterEggGestureViewModel,
 ) : TouchpadTutorialScreensProvider {
     @Composable
-    override fun BackGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) {
+    override fun BackGesture(
+        onDoneButtonClicked: () -> Unit,
+        onBack: () -> Unit,
+        isAutoProceed: Boolean,
+    ) {
         BackGestureTutorialScreen(
             backGestureScreenViewModel,
             easterEggGestureViewModel,
             onDoneButtonClicked,
             onBack,
+            isAutoProceed,
         )
     }
 
     @Composable
-    override fun HomeGesture(onDoneButtonClicked: () -> Unit, onBack: () -> Unit) {
+    override fun HomeGesture(
+        onDoneButtonClicked: () -> Unit,
+        onBack: () -> Unit,
+        isAutoProceed: Boolean,
+    ) {
         HomeGestureTutorialScreen(
             homeGestureScreenViewModel,
             easterEggGestureViewModel,
             onDoneButtonClicked,
             onBack,
+            isAutoProceed,
         )
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
index bce55cb..c28483c 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
@@ -33,6 +33,7 @@
     easterEggGestureViewModel: EasterEggGestureViewModel,
     onDoneButtonClicked: () -> Unit,
     onBack: () -> Unit,
+    isAutoProceed: Boolean = false,
 ) {
     val screenConfig =
         TutorialScreenConfig(
@@ -47,6 +48,7 @@
                     bodyErrorResId = R.string.touchpad_back_gesture_error_body,
                 ),
             animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_back_edu),
+            hasNextButton = isAutoProceed,
         )
     GestureTutorialScreen(
         screenConfig = screenConfig,
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
index 4acdb60..b238a8d 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/HomeGestureTutorialScreen.kt
@@ -32,6 +32,7 @@
     easterEggGestureViewModel: EasterEggGestureViewModel,
     onDoneButtonClicked: () -> Unit,
     onBack: () -> Unit,
+    isAutoProceed: Boolean = false,
 ) {
     val screenConfig =
         TutorialScreenConfig(
@@ -46,6 +47,7 @@
                     bodyErrorResId = R.string.touchpad_home_gesture_error_body,
                 ),
             animations = TutorialScreenConfig.Animations(educationResId = R.raw.trackpad_home_edu),
+            hasNextButton = isAutoProceed,
         )
     GestureTutorialScreen(
         screenConfig = screenConfig,
diff --git a/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyLogger.kt b/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyLogger.kt
index 76f7609..47e27bc 100644
--- a/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyLogger.kt
@@ -49,6 +49,7 @@
                 hallSensorToDeviceStateChangeMs,
                 onScreenTurningOnToOnDrawnMs,
                 onDrawnToOnScreenTurnedOnMs,
+                trackingResult,
             )
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyTracker.kt b/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyTracker.kt
index e1640cd..66de522 100644
--- a/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyTracker.kt
+++ b/packages/SystemUI/src/com/android/systemui/unfold/DisplaySwitchLatencyTracker.kt
@@ -37,12 +37,16 @@
 import com.android.systemui.power.shared.model.WakefulnessState
 import com.android.systemui.shared.system.SysUiStatsLog
 import com.android.systemui.unfold.DisplaySwitchLatencyTracker.DisplaySwitchLatencyEvent
+import com.android.systemui.unfold.DisplaySwitchLatencyTracker.TrackingResult.CORRUPTED
+import com.android.systemui.unfold.DisplaySwitchLatencyTracker.TrackingResult.SUCCESS
+import com.android.systemui.unfold.DisplaySwitchLatencyTracker.TrackingResult.TIMED_OUT
 import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg
 import com.android.systemui.unfold.data.repository.UnfoldTransitionStatus.TransitionStarted
 import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor
 import com.android.systemui.util.Compile
 import com.android.systemui.util.Utils.isDeviceFoldable
 import com.android.systemui.util.animation.data.repository.AnimationStatusRepository
+import com.android.systemui.util.kotlin.WithPrev
 import com.android.systemui.util.kotlin.pairwise
 import com.android.systemui.util.kotlin.race
 import com.android.systemui.util.time.SystemClock
@@ -56,7 +60,6 @@
 import kotlinx.coroutines.TimeoutCancellationException
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.drop
 import kotlinx.coroutines.flow.filter
@@ -116,10 +119,9 @@
                     latencyTracker.onActionStart(ACTION_SWITCH_DISPLAY_UNFOLD)
                     instantForTrack(TAG) { "unfold latency tracking started" }
                 }
+                val event = DisplaySwitchLatencyEvent().withBeforeFields(previousState.toStatsInt())
                 try {
                     withTimeout(SCREEN_EVENT_TIMEOUT) {
-                        val event =
-                            DisplaySwitchLatencyEvent().withBeforeFields(previousState.toStatsInt())
                         val displaySwitchTimeMs =
                             measureTimeMillis(systemClock) {
                                 traceAsync(TAG, "displaySwitch") {
@@ -134,27 +136,43 @@
                 } catch (e: TimeoutCancellationException) {
                     instantForTrack(TAG) { "tracking timed out" }
                     latencyTracker.onActionCancel(ACTION_SWITCH_DISPLAY_UNFOLD)
+                    logDisplaySwitchEvent(
+                        event = event,
+                        toFoldableDeviceState = newState,
+                        displaySwitchTimeMs = SCREEN_EVENT_TIMEOUT.inWholeMilliseconds,
+                        trackingResult = TIMED_OUT,
+                    )
                 } catch (e: CancellationException) {
                     instantForTrack(TAG) { "new state interrupted, entering cool down" }
                     latencyTracker.onActionCancel(ACTION_SWITCH_DISPLAY_UNFOLD)
-                    startCoolDown()
+                    startCoolDown(event)
                 }
             }
         }
     }
 
     @OptIn(FlowPreview::class)
-    private fun startCoolDown() {
+    private fun startCoolDown(event: DisplaySwitchLatencyEvent) {
         if (isCoolingDown) return
         isCoolingDown = true
         applicationScope.launch(context = backgroundDispatcher) {
             val startTime = systemClock.elapsedRealtime()
+            var lastState: DeviceState? = null
             try {
-                startOrEndEvent.timeout(COOL_DOWN_DURATION).collect()
-            } catch (e: TimeoutCancellationException) {
-                instantForTrack(TAG) {
-                    "cool down finished, lasted ${systemClock.elapsedRealtime() - startTime} ms"
+                startOrEndEvent.timeout(COOL_DOWN_DURATION).collect {
+                    if (it is WithPrev<*, *>) {
+                        lastState = it.newValue as? DeviceState
+                    }
                 }
+            } catch (e: TimeoutCancellationException) {
+                val totalCooldownTime = systemClock.elapsedRealtime() - startTime
+                logDisplaySwitchEvent(
+                    event = event,
+                    toFoldableDeviceState = lastState ?: DeviceState.UNKNOWN,
+                    displaySwitchTimeMs = totalCooldownTime,
+                    trackingResult = CORRUPTED,
+                )
+                instantForTrack(TAG) { "cool down finished, lasted $totalCooldownTime ms" }
                 isCoolingDown = false
             }
         }
@@ -164,12 +182,14 @@
         event: DisplaySwitchLatencyEvent,
         toFoldableDeviceState: DeviceState,
         displaySwitchTimeMs: Long,
+        trackingResult: TrackingResult = SUCCESS,
     ) {
         displaySwitchLatencyLogger.log(
             event.withAfterFields(
-                toFoldableDeviceState.toStatsInt(),
-                displaySwitchTimeMs.toInt(),
+                toFoldableDeviceState,
+                displaySwitchTimeMs,
                 getCurrentState(),
+                trackingResult,
             )
         )
     }
@@ -183,6 +203,13 @@
             else -> FOLDABLE_DEVICE_STATE_UNKNOWN
         }
 
+    private fun TrackingResult.toStatsInt(): Int =
+        when (this) {
+            SUCCESS -> SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__SUCCESS
+            CORRUPTED -> SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__CORRUPTED
+            TIMED_OUT -> SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__TIMED_OUT
+        }
+
     private suspend fun waitForDisplaySwitch(toFoldableDeviceState: Int) {
         val isTransitionEnabled =
             unfoldTransitionInteractor.isAvailable &&
@@ -264,21 +291,24 @@
     }
 
     private fun DisplaySwitchLatencyEvent.withAfterFields(
-        toFoldableDeviceState: Int,
-        displaySwitchTimeMs: Int,
+        toFoldableDeviceState: DeviceState,
+        displaySwitchTimeMs: Long,
         toState: Int,
+        trackingResult: TrackingResult,
     ): DisplaySwitchLatencyEvent {
         log {
-            "toFoldableDeviceState=$toFoldableDeviceState, " +
+            "trackingResult=$trackingResult, " +
+                "toFoldableDeviceState=$toFoldableDeviceState, " +
                 "toState=$toState, " +
                 "latencyMs=$displaySwitchTimeMs"
         }
         instantForTrack(TAG) { "toFoldableDeviceState=$toFoldableDeviceState, toState=$toState" }
 
         return copy(
-            toFoldableDeviceState = toFoldableDeviceState,
-            latencyMs = displaySwitchTimeMs,
+            toFoldableDeviceState = toFoldableDeviceState.toStatsInt(),
+            latencyMs = displaySwitchTimeMs.toInt(),
             toState = toState,
+            trackingResult = trackingResult.toStatsInt(),
         )
     }
 
@@ -312,8 +342,16 @@
         val hallSensorToDeviceStateChangeMs: Int = VALUE_UNKNOWN,
         val onScreenTurningOnToOnDrawnMs: Int = VALUE_UNKNOWN,
         val onDrawnToOnScreenTurnedOnMs: Int = VALUE_UNKNOWN,
+        val trackingResult: Int =
+            SysUiStatsLog.DISPLAY_SWITCH_LATENCY_TRACKED__TRACKING_RESULT__UNKNOWN_RESULT,
     )
 
+    enum class TrackingResult {
+        SUCCESS,
+        CORRUPTED,
+        TIMED_OUT,
+    }
+
     companion object {
         private const val VALUE_UNKNOWN = -1
         private const val TAG = "DisplaySwitchLatency"
diff --git a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
index 32f2ca6..367f54c 100644
--- a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
@@ -147,7 +147,7 @@
         super.onDestroy();
     }
 
-    private void addUserNow(String userName, Drawable userIcon, Boolean isAdmin) {
+    private void addUserNow(String userName, Drawable userIcon, String iconPath, Boolean isAdmin) {
         mSetupUserDialog.dismiss();
         userName = (userName == null || userName.trim().isEmpty())
                 ? getString(com.android.settingslib.R.string.user_new_user_name)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
index 5ef0319..0bdf99e 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
@@ -27,6 +27,8 @@
 import androidx.dynamicanimation.animation.FloatValueHolder
 import androidx.dynamicanimation.animation.SpringAnimation
 import androidx.dynamicanimation.animation.SpringForce
+import com.android.app.tracing.coroutines.launchInTraced
+import com.android.app.tracing.coroutines.launchTraced
 import com.android.internal.R as internalR
 import com.android.systemui.res.R
 import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
@@ -47,9 +49,7 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.mapLatest
-import kotlinx.coroutines.launch
 
 private const val CLOSE_DRAWER_DELAY = 300L
 // Ensure roundness and color of button is updated when progress is changed by a minimum fraction.
@@ -115,7 +115,9 @@
         drawerContainer.setTransitionListener(ringerDrawerTransitionListener)
         volumeDialogBackgroundView.background = volumeDialogBackgroundView.background.mutate()
         ringerBackgroundView.background = ringerBackgroundView.background.mutate()
-        launch { dialogViewModel.addTouchableBounds(ringerBackgroundView) }
+        launchTraced("VDRVB#addTouchableBounds") {
+            dialogViewModel.addTouchableBounds(ringerBackgroundView)
+        }
 
         viewModel.ringerViewModel
             .mapLatest { ringerState ->
@@ -222,7 +224,7 @@
                     }
                 }
             }
-            .launchIn(this)
+            .launchInTraced("VDRVB#ringerViewModel", this)
     }
 
     private suspend fun MotionLayout.animateAndBindDrawerButtons(
@@ -252,7 +254,7 @@
                 val selectedCornerRadius =
                     (selectedButton.background as GradientDrawable).cornerRadius
                 if (selectedCornerRadius.toInt() != selectedButtonUiModel.cornerRadius) {
-                    launch {
+                    launchTraced("VDRVB#selectedButtonAnimation") {
                         selectedButton.animateTo(
                             selectedButtonUiModel,
                             if (uiModel.currentButtonIndex == count - 1) {
@@ -266,7 +268,7 @@
                 val unselectedCornerRadius =
                     (unselectedButton.background as GradientDrawable).cornerRadius
                 if (unselectedCornerRadius.toInt() != unselectedButtonUiModel.cornerRadius) {
-                    launch {
+                    launchTraced("VDRVB#unselectedButtonAnimation") {
                         unselectedButton.animateTo(
                             unselectedButtonUiModel,
                             if (previousIndex == count - 1) {
@@ -277,7 +279,7 @@
                         )
                     }
                 }
-                launch {
+                launchTraced("VDRVB#bindButtons") {
                     delay(CLOSE_DRAWER_DELAY)
                     bindButtons(viewModel, uiModel, onAnimationEnd, isAnimated = true)
                 }
@@ -386,7 +388,7 @@
         roundnessAnimation.minimumVisibleChange = BUTTON_MIN_VISIBLE_CHANGE
         colorAnimation.minimumVisibleChange = BUTTON_MIN_VISIBLE_CHANGE
         coroutineScope {
-            launch {
+            launchTraced("VDRVB#colorAnimation") {
                 colorAnimation.suspendAnimate { value ->
                     val currentIconColor =
                         rgbEvaluator.evaluate(
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
index 54f04e2..cf9136b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
@@ -18,6 +18,8 @@
 
 import android.view.View
 import android.widget.ImageButton
+import com.android.app.tracing.coroutines.launchInTraced
+import com.android.app.tracing.coroutines.launchTraced
 import com.android.systemui.res.R
 import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
 import com.android.systemui.volume.dialog.settings.ui.viewmodel.VolumeDialogSettingsButtonViewModel
@@ -25,9 +27,7 @@
 import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.launch
 
 @VolumeDialogScope
 class VolumeDialogSettingsButtonViewBinder
@@ -39,12 +39,12 @@
 
     override fun CoroutineScope.bind(view: View) {
         val button = view.requireViewById<ImageButton>(R.id.volume_dialog_settings)
-        launch { dialogViewModel.addTouchableBounds(button) }
+        launchTraced("VDSBVB#addTouchableBounds") { dialogViewModel.addTouchableBounds(button) }
         viewModel.isVisible
             .onEach { isVisible -> button.visibility = if (isVisible) View.VISIBLE else View.GONE }
-            .launchIn(this)
+            .launchInTraced("VDSBVB#isVisible", this)
 
-        viewModel.icon.onEach { button.setImageDrawable(it) }.launchIn(this)
+        viewModel.icon.onEach { button.setImageDrawable(it) }.launchInTraced("VDSBVB#icon", this)
 
         button.setOnClickListener { viewModel.onButtonClicked() }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogOverscrollViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogOverscrollViewBinder.kt
index 38feb69..c361b50 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogOverscrollViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogOverscrollViewBinder.kt
@@ -20,12 +20,12 @@
 import androidx.dynamicanimation.animation.FloatValueHolder
 import androidx.dynamicanimation.animation.SpringAnimation
 import androidx.dynamicanimation.animation.SpringForce
+import com.android.app.tracing.coroutines.launchInTraced
 import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
 import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogOverscrollViewModel
 import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogOverscrollViewModel.OverscrollEventModel
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
 
 @VolumeDialogSliderScope
@@ -62,7 +62,7 @@
                     }
                 }
             }
-            .launchIn(this)
+            .launchInTraced("VDOVB#overscrollEvent", this)
     }
 }
 
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
index 2c9ee54..1c0fabe 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
@@ -39,7 +39,6 @@
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -99,7 +98,6 @@
     hapticsViewModelFactory: SliderHapticsViewModel.Factory?,
     modifier: Modifier = Modifier,
 ) {
-    val coroutineScope = rememberCoroutineScope()
     val colors =
         SliderDefaults.colors(
             thumbColor = MaterialTheme.colorScheme.primary,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
index 0d970e5..527f8bd 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
@@ -21,6 +21,8 @@
 import android.view.ViewGroup
 import androidx.annotation.LayoutRes
 import androidx.compose.ui.util.fastForEachIndexed
+import com.android.app.tracing.coroutines.launchInTraced
+import com.android.app.tracing.coroutines.launchTraced
 import com.android.systemui.res.R
 import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
 import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderComponent
@@ -29,9 +31,7 @@
 import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.launch
 
 @VolumeDialogScope
 class VolumeDialogSlidersViewBinder
@@ -50,7 +50,9 @@
         val bottomSection: View = view.requireViewById(R.id.volume_dialog_bottom_section_container)
         val topSection: View = view.requireViewById(R.id.volume_dialog_top_section_container)
 
-        launch { dialogViewModel.addTouchableBounds(mainSliderContainer, floatingSlidersContainer) }
+        launchTraced("VDSVB#addTouchableBounds") {
+            dialogViewModel.addTouchableBounds(mainSliderContainer, floatingSlidersContainer)
+        }
         viewModel.sliders
             .onEach { uiModel ->
                 bindSlider(
@@ -69,7 +71,7 @@
                     bindSlider(sliderComponent, sliderContainer, arrayOf(sliderContainer))
                 }
             }
-            .launchIn(this)
+            .launchInTraced("VDSVB#sliders", this)
     }
 
     private fun CoroutineScope.bindSlider(
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
index 98042d5..0c10aaa 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
@@ -17,18 +17,22 @@
 package com.android.systemui.volume.dialog.ui.binder
 
 import android.app.Dialog
+import android.content.Context
 import android.view.View
+import android.view.ViewGroup
 import android.view.ViewTreeObserver
 import android.view.WindowInsets
 import androidx.compose.ui.util.lerp
-import androidx.constraintlayout.motion.widget.MotionLayout
 import androidx.core.view.updatePadding
 import androidx.dynamicanimation.animation.DynamicAnimation
 import androidx.dynamicanimation.animation.FloatValueHolder
 import androidx.dynamicanimation.animation.SpringAnimation
 import androidx.dynamicanimation.animation.SpringForce
+import com.android.app.tracing.coroutines.launchInTraced
+import com.android.app.tracing.coroutines.launchTraced
 import com.android.internal.view.RotationPolicy
 import com.android.systemui.common.ui.view.onApplyWindowInsets
+import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.res.R
 import com.android.systemui.util.kotlin.awaitCancellationThenDispose
 import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
@@ -43,11 +47,9 @@
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.mapLatest
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.scan
-import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
 
 private const val SPRING_STIFFNESS = 700f
@@ -63,32 +65,43 @@
 class VolumeDialogViewBinder
 @Inject
 constructor(
+    @Application context: Context,
     private val viewModel: VolumeDialogViewModel,
     private val jankListenerFactory: JankListenerFactory,
     private val tracer: VolumeTracer,
     private val viewBinders: List<@JvmSuppressWildcards ViewBinder>,
 ) {
 
+    private val halfOpenedOffsetPx: Float =
+        context.resources.getDimensionPixelSize(R.dimen.volume_dialog_half_opened_offset).toFloat()
+
     fun CoroutineScope.bind(dialog: Dialog) {
         val insets: MutableStateFlow<WindowInsets> =
             MutableStateFlow(WindowInsets.Builder().build())
         // Root view of the Volume Dialog.
-        val root: MotionLayout = dialog.requireViewById(R.id.volume_dialog)
+        val root: ViewGroup = dialog.requireViewById(R.id.volume_dialog)
 
         animateVisibility(root, dialog, viewModel.dialogVisibilityModel)
 
-        viewModel.dialogTitle.onEach { dialog.window?.setTitle(it) }.launchIn(this)
-        viewModel.motionState
-            .scan(0) { acc, motionState ->
+        viewModel.dialogTitle
+            .onEach { dialog.window?.setTitle(it) }
+            .launchInTraced("VDVB#dialogTitle", this)
+        viewModel.isHalfOpened
+            .scan<Boolean, Boolean?>(null) { acc, isHalfOpened ->
                 // don't animate the initial state
-                root.transitionToState(motionState, animate = acc != 0)
-                acc + 1
+                root.applyVerticalOffset(
+                    offsetPx = if (isHalfOpened) halfOpenedOffsetPx else 0f,
+                    shouldAnimate = acc != null,
+                )
+                isHalfOpened
             }
-            .launchIn(this)
+            .launchInTraced("VDVB#isHalfOpened", this)
 
-        launch { root.viewTreeObserver.listenToComputeInternalInsets() }
+        launchTraced("VDVB#viewTreeObserver") {
+            root.viewTreeObserver.listenToComputeInternalInsets()
+        }
 
-        launch {
+        launchTraced("VDVB#insets") {
             root
                 .onApplyWindowInsets { v, newInsets ->
                     val insetsValues = newInsets.getInsets(WindowInsets.Type.displayCutout())
@@ -135,7 +148,7 @@
                         junkListener?.let(animation::removeUpdateListener)
                         junkListener =
                             jankListenerFactory.show(view).also(animation::addUpdateListener)
-                        animation.suspendAnimate(FRACTION_SHOW)
+                        animation.animateToFinalPosition(FRACTION_SHOW)
                     }
                     is VolumeDialogVisibilityModel.Dismissed -> {
                         tracer.traceVisibilityEnd(it)
@@ -150,7 +163,7 @@
                     }
                 }
             }
-            .launchIn(this)
+            .launchInTraced("VDVB#visibilityModel", this)
     }
 
     /**
@@ -180,11 +193,11 @@
             continuation.invokeOnCancellation { removeOnComputeInternalInsetsListener(listener) }
         }
 
-    private fun MotionLayout.transitionToState(newState: Int, animate: Boolean) {
-        if (animate) {
-            transitionToState(newState)
-        } else {
-            jumpToState(newState)
+    private suspend fun View.applyVerticalOffset(offsetPx: Float, shouldAnimate: Boolean) {
+        if (!shouldAnimate) {
+            translationY = offsetPx
+            return
         }
+        animate().setDuration(150).translationY(offsetPx).suspendAnimate()
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
index e47b531..8bfbc36 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
@@ -56,18 +56,14 @@
     configurationController: ConfigurationController,
 ) {
 
-    val motionState: Flow<Int> =
+    val isHalfOpened: Flow<Boolean> =
         combine(
             devicePostureController.devicePosture(),
             configurationController.onConfigChanged.onStart {
                 emit(context.resources.configuration)
             },
         ) { devicePosture, configuration ->
-            if (shouldOffsetVolumeDialog(devicePosture, configuration)) {
-                R.id.volume_dialog_half_folded_constraint_set
-            } else {
-                R.id.volume_dialog_constraint_set
-            }
+            shouldOffsetVolumeDialog(devicePosture, configuration)
         }
     val dialogVisibilityModel: Flow<VolumeDialogVisibilityModel> =
         dialogVisibilityInteractor.dialogVisibility
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
index a0be02f..bd4c5f5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
@@ -43,6 +43,7 @@
 import com.android.systemui.qs.panels.ui.viewmodel.EditTileViewModel
 import com.android.systemui.qs.pipeline.shared.TileSpec
 import com.android.systemui.qs.shared.model.TileCategory
+import com.android.systemui.res.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
 import org.junit.Test
@@ -85,7 +86,9 @@
 
         composeRule
             .onNodeWithContentDescription("tileA")
-            .performCustomAccessibilityActionWithLabel("Toggle size")
+            .performCustomAccessibilityActionWithLabel(
+                context.getString(R.string.accessibility_qs_edit_toggle_tile_size_action)
+            )
 
         assertThat(tiles.find { it.tile.tileSpec.spec == "tileA" }?.width).isEqualTo(2)
     }
@@ -101,7 +104,9 @@
 
         composeRule
             .onNodeWithContentDescription("tileD_large")
-            .performCustomAccessibilityActionWithLabel("Toggle size")
+            .performCustomAccessibilityActionWithLabel(
+                context.getString(R.string.accessibility_qs_edit_toggle_tile_size_action)
+            )
 
         assertThat(tiles.find { it.tile.tileSpec.spec == "tileD_large" }?.width).isEqualTo(1)
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
index a6722c5..1b53531 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
@@ -663,8 +663,8 @@
         Assert.assertTrue(group.getAttachedChildren().isEmpty());
         Assert.assertNotEquals(group, child.getNotificationParent());
         verify(mNotificationTestHelper.getMockLogger()).logSkipAttachingKeepInParentChild(
-                /*child=*/ child.getEntry(),
-                /*newParent=*/ group.getEntry()
+                /*child=*/ child.getLoggingKey(),
+                /*newParent=*/ group.getLoggingKey()
         );
     }
 
@@ -680,7 +680,7 @@
         Assert.assertNull(child.getNotificationParent());
         Assert.assertFalse(child.keepInParentForDismissAnimation());
         verify(mNotificationTestHelper.getMockLogger())
-                .logCancelAppearDrawing(child.getEntry(), false);
+                .logCancelAppearDrawing(child.getLoggingKey(), false);
         verifyNoMoreInteractions(mNotificationTestHelper.getMockLogger());
     }
 
@@ -696,8 +696,8 @@
         Assert.assertNull(child.getNotificationParent());
         Assert.assertFalse(child.keepInParentForDismissAnimation());
         verify(mNotificationTestHelper.getMockLogger()).logKeepInParentChildDetached(
-                /*child=*/ child.getEntry(),
-                /*oldParent=*/ group.getEntry()
+                /*child=*/ child.getLoggingKey(),
+                /*oldParent=*/ group.getLoggingKey()
         );
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
index 3190d3a..28eafa9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
@@ -76,6 +76,7 @@
 import com.android.systemui.shade.ShadeControllerImpl;
 import com.android.systemui.shade.data.repository.FakeShadeRepository;
 import com.android.systemui.shade.data.repository.ShadeAnimationRepository;
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
 import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor;
 import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorLegacyImpl;
 import com.android.systemui.statusbar.CommandQueue;
@@ -171,6 +172,7 @@
     private final FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
     private ExpandableNotificationRow mNotificationRow;
     private ExpandableNotificationRow mBubbleNotificationRow;
+    private FakeShadeDialogContextInteractor mContextInteractor;
 
     private final Answer<Void> mCallOnDismiss = answerVoid(
             (OnDismissAction dismissAction, Runnable cancel,
@@ -187,6 +189,8 @@
                 mDependency,
                 TestableLooper.get(this));
 
+        mContextInteractor = new FakeShadeDialogContextInteractor(mContext);
+
         // Create standard notification with contentIntent
         mNotificationRow = notificationTestHelper.createRow();
         StatusBarNotification sbn = mNotificationRow.getEntry().getSbn();
@@ -199,10 +203,6 @@
         bubbleSbn.getNotification().contentIntent = mContentIntent;
         bubbleSbn.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
 
-//        ArrayList<NotificationEntry> activeNotifications = new ArrayList<>();
-//        activeNotifications.add(mNotificationRow.getEntry());
-//        activeNotifications.add(mBubbleNotificationRow.getEntry());
-//        when(mEntryManager.getVisibleNotifications()).thenReturn(activeNotifications);
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
         when(mOnUserInteractionCallback.registerFutureDismissal(eq(mNotificationRow.getEntry()),
                 anyInt())).thenReturn(mFutureDismissalRunnable);
@@ -232,6 +232,7 @@
         mNotificationActivityStarter =
                 new StatusBarNotificationActivityStarter(
                         getContext(),
+                        mContextInteractor,
                         mHandler,
                         mUiBgExecutor,
                         mVisibilityProvider,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
index df5c6e9..a51e919 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
@@ -129,11 +129,7 @@
     @Mock private lateinit var context: Context
 
     private val mobileMappings = FakeMobileMappingsProxy()
-    private val systemUiCarrierConfig =
-        SystemUiCarrierConfig(
-            SUB_1_ID,
-            createTestConfig(),
-        )
+    private val systemUiCarrierConfig = SystemUiCarrierConfig(SUB_1_ID, createTestConfig())
 
     private val testDispatcher = UnconfinedTestDispatcher()
     private val testScope = TestScope(testDispatcher)
@@ -902,11 +898,7 @@
 
             assertThat(latest).isEqualTo(NetworkNameModel.IntentDerived("$PLMN$SEP$DATA_SPN"))
 
-            val intentWithoutInfo =
-                spnIntent(
-                    showSpn = false,
-                    showPlmn = false,
-                )
+            val intentWithoutInfo = spnIntent(showSpn = false, showPlmn = false)
 
             captor.lastValue.onReceive(context, intentWithoutInfo)
 
@@ -929,11 +921,7 @@
 
             assertThat(latest).isEqualTo(NetworkNameModel.IntentDerived("$PLMN$SEP$DATA_SPN"))
 
-            val intentWithoutInfo =
-                spnIntent(
-                    showSpn = false,
-                    showPlmn = false,
-                )
+            val intentWithoutInfo = spnIntent(showSpn = false, showPlmn = false)
 
             captor.lastValue.onReceive(context, intentWithoutInfo)
 
@@ -1301,7 +1289,6 @@
         }
 
     @Test
-    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     fun isNonTerrestrial_updatesFromCallback0() =
         testScope.runTest {
             val latest by collectLastValue(underTest.isNonTerrestrial)
@@ -1430,10 +1417,7 @@
         return MobileTelephonyHelpers.getTelephonyCallbackForType(telephonyManager)
     }
 
-    private fun carrierIdIntent(
-        subId: Int = SUB_1_ID,
-        carrierId: Int,
-    ): Intent =
+    private fun carrierIdIntent(subId: Int = SUB_1_ID, carrierId: Int): Intent =
         Intent(TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED).apply {
             putExtra(EXTRA_SUBSCRIPTION_ID, subId)
             putExtra(EXTRA_CARRIER_ID, carrierId)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
index 5739275..7e27783 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
@@ -25,6 +25,9 @@
 import android.app.NotificationChannel
 import android.app.NotificationManager.IMPORTANCE_HIGH
 import android.app.NotificationManager.VISIBILITY_NO_OVERRIDE
+import android.app.role.OnRoleHoldersChangedListener
+import android.app.role.RoleManager
+import android.companion.AssociationRequest
 import android.content.pm.PackageManager
 import android.media.projection.MediaProjectionInfo
 import android.media.projection.MediaProjectionManager
@@ -89,6 +92,7 @@
     @Mock private lateinit var activityManager: IActivityManager
     @Mock private lateinit var mediaProjectionManager: MediaProjectionManager
     @Mock private lateinit var packageManager: PackageManager
+    @Mock private lateinit var roleManager: RoleManager
     @Mock private lateinit var telephonyManager: TelephonyManager
     @Mock private lateinit var listener1: Runnable
     @Mock private lateinit var listener2: Runnable
@@ -98,6 +102,7 @@
     private lateinit var executor: FakeExecutor
     private lateinit var globalSettings: FakeGlobalSettings
     private lateinit var mediaProjectionCallback: MediaProjectionManager.Callback
+    private lateinit var roleHolderCallback: OnRoleHoldersChangedListener
     private lateinit var controller: SensitiveNotificationProtectionControllerImpl
     private lateinit var mediaProjectionInfo: MediaProjectionInfo
 
@@ -117,14 +122,14 @@
         whenever(
                 packageManager.getPackageUidAsUser(
                     TEST_PROJECTION_PACKAGE_NAME,
-                    UserHandle.CURRENT.identifier
+                    UserHandle.CURRENT.identifier,
                 )
             )
             .thenReturn(TEST_PROJECTION_PACKAGE_UID)
         whenever(
                 packageManager.getPackageUidAsUser(
                     BUGREPORT_PACKAGE_NAME,
-                    UserHandle.CURRENT.identifier
+                    UserHandle.CURRENT.identifier,
                 )
             )
             .thenReturn(BUGREPORT_PACKAGE_UID)
@@ -134,7 +139,7 @@
         whenever(
                 packageManager.getPackageUidAsUser(
                     mContext.packageName,
-                    UserHandle.CURRENT.identifier
+                    UserHandle.CURRENT.identifier,
                 )
             )
             .thenReturn(mContext.applicationInfo.uid)
@@ -155,9 +160,10 @@
                 activityManager,
                 packageManager,
                 telephonyManager,
+                roleManager,
                 mockExecutorHandler(executor),
                 executor,
-                logger
+                logger,
             )
 
         // Process pending work (getting global setting and list of exemptions)
@@ -167,6 +173,9 @@
         mediaProjectionCallback = withArgCaptor {
             verify(mediaProjectionManager).addCallback(capture(), any())
         }
+        roleHolderCallback = withArgCaptor {
+            verify(roleManager).addOnRoleHoldersChangedListenerAsUser(any(), capture(), any())
+        }
     }
 
     @After
@@ -307,7 +316,7 @@
         whenever(
                 packageManager.checkPermission(
                     android.Manifest.permission.RECORD_SENSITIVE_CONTENT,
-                    mediaProjectionInfo.packageName
+                    mediaProjectionInfo.packageName,
                 )
             )
             .thenReturn(PackageManager.PERMISSION_GRANTED)
@@ -322,7 +331,7 @@
         whenever(
                 packageManager.checkPermission(
                     android.Manifest.permission.RECORD_SENSITIVE_CONTENT,
-                    mediaProjectionInfo.packageName
+                    mediaProjectionInfo.packageName,
                 )
             )
             .thenReturn(PackageManager.PERMISSION_GRANTED)
@@ -340,6 +349,25 @@
     }
 
     @Test
+    fun isSensitiveStateActive_projectionActive_appStreamingRoleHolderExempt_false() {
+        setShareFullScreen()
+        whenever(
+                roleManager.getRoleHoldersAsUser(
+                    AssociationRequest.DEVICE_PROFILE_APP_STREAMING,
+                    mediaProjectionInfo.userHandle,
+                )
+            )
+            .thenReturn(listOf(TEST_PROJECTION_PACKAGE_NAME))
+        roleHolderCallback.onRoleHoldersChanged(
+            AssociationRequest.DEVICE_PROFILE_APP_STREAMING,
+            mediaProjectionInfo.userHandle,
+        )
+        mediaProjectionCallback.onStart(mediaProjectionInfo)
+
+        assertFalse(controller.isSensitiveStateActive)
+    }
+
+    @Test
     fun isSensitiveStateActive_projectionActive_disabledViaDevOption_false() {
         setDisabledViaDeveloperOption()
         mediaProjectionCallback.onStart(mediaProjectionInfo)
@@ -449,7 +477,7 @@
         whenever(
                 packageManager.checkPermission(
                     android.Manifest.permission.RECORD_SENSITIVE_CONTENT,
-                    mediaProjectionInfo.packageName
+                    mediaProjectionInfo.packageName,
                 )
             )
             .thenReturn(PackageManager.PERMISSION_GRANTED)
@@ -466,7 +494,7 @@
         whenever(
                 packageManager.checkPermission(
                     android.Manifest.permission.RECORD_SENSITIVE_CONTENT,
-                    mediaProjectionInfo.packageName
+                    mediaProjectionInfo.packageName,
                 )
             )
             .thenReturn(PackageManager.PERMISSION_GRANTED)
@@ -528,7 +556,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(false),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__START),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
 
@@ -541,7 +569,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(false),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__STOP),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
     }
@@ -559,7 +587,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__START),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
 
@@ -572,7 +600,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__STOP),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
     }
@@ -590,7 +618,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__START),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
 
@@ -603,7 +631,7 @@
                 eq(TEST_PROJECTION_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__STOP),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
     }
@@ -623,7 +651,7 @@
                 eq(mContext.applicationInfo.uid),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__START),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
 
@@ -636,7 +664,7 @@
                 eq(mContext.applicationInfo.uid),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__STOP),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
     }
@@ -654,7 +682,7 @@
                 eq(BUGREPORT_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__START),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
 
@@ -667,7 +695,7 @@
                 eq(BUGREPORT_PACKAGE_UID),
                 eq(true),
                 eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__STATE__STOP),
-                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI)
+                eq(FrameworkStatsLog.SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION__SOURCE__SYS_UI),
             )
         }
     }
@@ -757,7 +785,7 @@
         return setupNotificationEntry(
             packageName,
             overrideVisibility = true,
-            overrideChannelVisibility = true
+            overrideChannelVisibility = true,
         )
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/BatteryMeterViewControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/BatteryMeterViewControllerKosmos.kt
new file mode 100644
index 0000000..f3bccb1
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/BatteryMeterViewControllerKosmos.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.battery
+
+import android.os.Handler
+import android.test.mock.MockContentResolver
+import com.android.systemui.flags.fake
+import com.android.systemui.flags.featureFlagsClassic
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.settings.userTracker
+import com.android.systemui.statusbar.policy.batteryController
+import com.android.systemui.statusbar.policy.configurationController
+import com.android.systemui.tuner.tunerService
+import org.mockito.kotlin.mock
+
+val Kosmos.batteryMeterViewControllerFactory: BatteryMeterViewController.Factory by
+Kosmos.Fixture {
+    BatteryMeterViewController.Factory(
+        userTracker,
+        configurationController,
+        tunerService,
+        mock<Handler>(),
+        MockContentResolver(),
+        featureFlagsClassic.fake,
+        batteryController
+    )
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt
index 0f21a16..b8b2ec5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/domain/interactor/CommunalInteractorKosmos.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.communal.domain.interactor
 
+import android.content.pm.UserInfo
 import android.content.testableContext
 import android.os.userManager
 import com.android.systemui.broadcast.broadcastDispatcher
@@ -85,27 +86,28 @@
     )
 }
 
-suspend fun Kosmos.setCommunalEnabled(enabled: Boolean) {
+suspend fun Kosmos.setCommunalEnabled(enabled: Boolean): UserInfo {
     fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, enabled)
-    if (enabled) {
+    return if (enabled) {
         fakeUserRepository.asMainUser()
     } else {
         fakeUserRepository.asDefaultUser()
     }
 }
 
-suspend fun Kosmos.setCommunalV2Enabled(enabled: Boolean) {
+suspend fun Kosmos.setCommunalV2Enabled(enabled: Boolean): UserInfo {
     setCommunalV2ConfigEnabled(enabled)
-    setCommunalEnabled(enabled)
+    return setCommunalEnabled(enabled)
 }
 
-suspend fun Kosmos.setCommunalAvailable(available: Boolean) {
-    setCommunalEnabled(available)
+suspend fun Kosmos.setCommunalAvailable(available: Boolean): UserInfo {
+    val user = setCommunalEnabled(available)
     fakeKeyguardRepository.setKeyguardShowing(available)
     fakeUserRepository.setUserUnlocked(FakeUserRepository.MAIN_USER_ID, available)
+    return user
 }
 
-suspend fun Kosmos.setCommunalV2Available(available: Boolean) {
+suspend fun Kosmos.setCommunalV2Available(available: Boolean): UserInfo {
     setCommunalV2ConfigEnabled(available)
-    setCommunalAvailable(available)
+    return setCommunalAvailable(available)
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
index 93a59eb..bdfa875 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
@@ -16,6 +16,9 @@
 
 package com.android.systemui.keyguard.domain.interactor
 
+import com.android.systemui.communal.domain.interactor.communalInteractor
+import com.android.systemui.communal.domain.interactor.communalSceneInteractor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
 import com.android.systemui.deviceentry.data.repository.deviceEntryRepository
 import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
 import com.android.systemui.kosmos.Kosmos
@@ -38,5 +41,8 @@
             keyguardOcclusionInteractor = keyguardOcclusionInteractor,
             deviceEntryRepository = deviceEntryRepository,
             wakeToGoneInteractor = keyguardWakeDirectlyToGoneInteractor,
+            communalSettingsInteractor = communalSettingsInteractor,
+            communalSceneInteractor = communalSceneInteractor,
+            communalInteractor = communalInteractor,
         )
     }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..1eeecd4
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodToGlanceableHubTransitionViewModelKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.glanceableHubBlurComponentFactory
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.kosmos.Kosmos
+
+val Kosmos.aodToGlanceableHubTransitionViewModel by
+    Kosmos.Fixture {
+        AodToGlanceableHubTransitionViewModel(
+            animationFlow = keyguardTransitionAnimationFlow,
+            blurFactory = glanceableHubBlurComponentFactory,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelKosmos.kt
index bd00455..2797b44 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelKosmos.kt
@@ -47,5 +47,6 @@
         primaryBouncerToLockscreenTransitionViewModel =
             primaryBouncerToLockscreenTransitionViewModel,
         lockscreenToDozingTransitionViewModel = lockscreenToDozingTransitionViewModel,
+        glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..6004c7f
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToAodTransitionViewModelKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.deviceentry.domain.interactor.deviceEntryUdfpsInteractor
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.kosmos.Kosmos
+
+val Kosmos.glanceableHubToAodTransitionViewModel by
+    Kosmos.Fixture {
+        GlanceableHubToAodTransitionViewModel(
+            deviceEntryUdfpsInteractor = deviceEntryUdfpsInteractor,
+            animationFlow = keyguardTransitionAnimationFlow,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
index 7835631..27ca0f86 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
@@ -94,5 +94,7 @@
         shadeInteractor = shadeInteractor,
         wallpaperFocalAreaInteractor = wallpaperFocalAreaInteractor,
         dumpManager = dumpManager,
+        glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel,
+        aodToGlanceableHubTransitionViewModel = aodToGlanceableHubTransitionViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegateKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegateKosmos.kt
index c58d55e..73d8dc6 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegateKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/dialog/QSResetDialogDelegateKosmos.kt
@@ -18,7 +18,14 @@
 
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.qs.panels.domain.interactor.sizedTilesResetInteractor
+import com.android.systemui.shade.data.repository.shadeDialogContextInteractor
 import com.android.systemui.statusbar.phone.systemUIDialogFactory
 
 val Kosmos.qsResetDialogDelegateKosmos by
-    Kosmos.Fixture { QSResetDialogDelegate(systemUIDialogFactory, sizedTilesResetInteractor) }
+    Kosmos.Fixture {
+        QSResetDialogDelegate(
+            systemUIDialogFactory,
+            shadeDialogContextInteractor,
+            sizedTilesResetInteractor,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
index 31be050..4f662e0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
@@ -18,28 +18,37 @@
 
 import com.android.systemui.brightness.ui.viewmodel.brightnessSliderViewModelFactory
 import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor
+import com.android.systemui.media.controls.ui.controller.mediaCarouselController
+import com.android.systemui.media.controls.ui.view.MediaHost
 import com.android.systemui.qs.panels.ui.viewmodel.detailsViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.editModeViewModel
 import com.android.systemui.qs.panels.ui.viewmodel.tileGridViewModelFactory
 import com.android.systemui.qs.panels.ui.viewmodel.toolbar.toolbarViewModelFactory
 import com.android.systemui.shade.domain.interactor.shadeModeInteractor
 import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory
+import org.mockito.kotlin.mock
 
 val Kosmos.quickSettingsContainerViewModelFactory by
     Kosmos.Fixture {
         object : QuickSettingsContainerViewModel.Factory {
             override fun create(
-                supportsBrightnessMirroring: Boolean
+                supportsBrightnessMirroring: Boolean,
+                expansion: Float?,
             ): QuickSettingsContainerViewModel {
                 return QuickSettingsContainerViewModel(
-                    brightnessSliderViewModelFactory,
-                    shadeHeaderViewModelFactory,
-                    tileGridViewModelFactory,
-                    supportsBrightnessMirroring,
-                    editModeViewModel,
-                    detailsViewModel,
-                    toolbarViewModelFactory,
-                    shadeModeInteractor,
+                    brightnessSliderViewModelFactory = brightnessSliderViewModelFactory,
+                    shadeHeaderViewModelFactory = shadeHeaderViewModelFactory,
+                    tileGridViewModelFactory = tileGridViewModelFactory,
+                    supportsBrightnessMirroring = supportsBrightnessMirroring,
+                    expansion = expansion,
+                    editModeViewModel = editModeViewModel,
+                    detailsViewModel = detailsViewModel,
+                    toolbarViewModelFactory = toolbarViewModelFactory,
+                    shadeModeInteractor = shadeModeInteractor,
+                    mediaCarouselInteractor = mediaCarouselInteractor,
+                    mediaCarouselController = mediaCarouselController,
+                    mediaHost = mock<MediaHost>(),
                 )
             }
         }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeAnimationRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeAnimationRepositoryKosmos.kt
index 3ed7302..e1ca86a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeAnimationRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeAnimationRepositoryKosmos.kt
@@ -18,12 +18,8 @@
 
 import android.content.applicationContext
 import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
+import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor
 
 val Kosmos.shadeAnimationRepository by Kosmos.Fixture { ShadeAnimationRepository() }
 val Kosmos.shadeDialogContextInteractor by
-    Kosmos.Fixture {
-        mock<ShadeDialogContextInteractor> { on { context } doReturn applicationContext }
-    }
+    Kosmos.Fixture { FakeShadeDialogContextInteractor(applicationContext) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorKosmos.kt
index 6fd7cf6..2ea2119 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeHeaderClockInteractorKosmos.kt
@@ -16,14 +16,18 @@
 
 package com.android.systemui.shade.domain.interactor
 
+import com.android.systemui.broadcast.broadcastDispatcher
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.plugins.activityStarter
 import com.android.systemui.shade.data.repository.shadeHeaderClockRepository
+import com.android.systemui.util.time.systemClock
 
 var Kosmos.shadeHeaderClockInteractor: ShadeHeaderClockInteractor by
     Kosmos.Fixture {
         ShadeHeaderClockInteractor(
             repository = shadeHeaderClockRepository,
             activityStarter = activityStarter,
+            broadcastDispatcher = broadcastDispatcher,
+            systemClock = systemClock,
         )
     }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
index cfc2075..34e5bfd 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
@@ -17,8 +17,7 @@
 package com.android.systemui.shade.ui.viewmodel
 
 import android.content.applicationContext
-import com.android.systemui.battery.BatteryMeterViewController
-import com.android.systemui.broadcast.broadcastDispatcher
+import com.android.systemui.battery.batteryMeterViewControllerFactory
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.plugins.activityStarter
 import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -26,9 +25,8 @@
 import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor
 import com.android.systemui.shade.domain.interactor.shadeInteractor
 import com.android.systemui.shade.domain.interactor.shadeModeInteractor
-import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
 import com.android.systemui.statusbar.phone.ui.StatusBarIconController
-import com.android.systemui.statusbar.phone.ui.TintedIconManager
+import com.android.systemui.statusbar.phone.ui.tintedIconManagerFactory
 import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.mobileIconsInteractor
 import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModel
 import org.mockito.kotlin.mock
@@ -45,12 +43,9 @@
             mobileIconsViewModel = mobileIconsViewModel,
             privacyChipInteractor = privacyChipInteractor,
             clockInteractor = shadeHeaderClockInteractor,
-            tintedIconManagerFactory = mock<TintedIconManager.Factory>(),
-            batteryMeterViewControllerFactory = mock<BatteryMeterViewController.Factory>(),
+            tintedIconManagerFactory = tintedIconManagerFactory,
+            batteryMeterViewControllerFactory = batteryMeterViewControllerFactory,
             statusBarIconController = mock<StatusBarIconController>(),
-            notificationIconContainerStatusBarViewBinder =
-                mock<NotificationIconContainerStatusBarViewBinder>(),
-            broadcastDispatcher = broadcastDispatcher,
         )
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderKosmos.kt
new file mode 100644
index 0000000..18d6520
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderKosmos.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.connectivity.ui
+
+import com.android.systemui.kosmos.Kosmos
+import org.mockito.kotlin.mock
+
+// NOTE: `mobileContextProvider` is a mock instance.
+val Kosmos.mobileContextProvider by
+Kosmos.Fixture {
+    mock<MobileContextProvider>()
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
index e55cd0dc..da879d9 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
@@ -22,12 +22,14 @@
 import com.android.systemui.statusbar.notification.collection.NotificationEntry
 import com.android.systemui.statusbar.notification.row.RowImageInflater
 import com.android.systemui.statusbar.notification.row.shared.skeletonImageTransform
+import com.android.systemui.util.time.systemClock
 
 var Kosmos.promotedNotificationContentExtractor by
     Kosmos.Fixture {
         PromotedNotificationContentExtractorImpl(
             applicationContext,
             skeletonImageTransform,
+            systemClock,
             promotedNotificationLogger,
         )
     }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
index 8b19491..09c632c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
@@ -228,6 +228,7 @@
             PromotedNotificationContentExtractorImpl(
                 context,
                 SkeletonImageTransform(context),
+                mFakeSystemClock,
                 PromotedNotificationLogger(logcatLogBuffer("PromotedNotifLog")),
             )
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
index 7a2b7c2..51bb94f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
@@ -25,15 +25,18 @@
 import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToPrimaryBouncerTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodBurnInViewModel
+import com.android.systemui.keyguard.ui.viewmodel.aodToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.dozingToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dozingToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dozingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dozingToOccludedTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dozingToPrimaryBouncerTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.goneToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.goneToDozingTransitionViewModel
@@ -81,6 +84,7 @@
         aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
         aodToOccludedTransitionViewModel = aodToOccludedTransitionViewModel,
         aodToPrimaryBouncerTransitionViewModel = aodToPrimaryBouncerTransitionViewModel,
+        dozingToDreamingTransitionViewModel = dozingToDreamingTransitionViewModel,
         dozingToGlanceableHubTransitionViewModel = dozingToGlanceableHubTransitionViewModel,
         dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel,
         dozingToOccludedTransitionViewModel = dozingToOccludedTransitionViewModel,
@@ -110,5 +114,7 @@
         headsUpNotificationInteractor = { headsUpNotificationInteractor },
         largeScreenHeaderHelperLazy = { largeScreenHeaderHelper },
         unfoldTransitionInteractor = unfoldTransitionInteractor,
+        glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel,
+        aodToGlanceableHubTransitionViewModel = aodToGlanceableHubTransitionViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
index d787e2c..91404e0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterKosmos.kt
@@ -30,6 +30,7 @@
 import com.android.systemui.plugins.activityStarter
 import com.android.systemui.power.domain.interactor.powerInteractor
 import com.android.systemui.settings.userTracker
+import com.android.systemui.shade.data.repository.shadeDialogContextInteractor
 import com.android.systemui.shade.domain.interactor.panelExpansionInteractor
 import com.android.systemui.shade.domain.interactor.shadeAnimationInteractor
 import com.android.systemui.shade.shadeController
@@ -52,6 +53,7 @@
     Kosmos.Fixture {
         StatusBarNotificationActivityStarter(
             applicationContext,
+            shadeDialogContextInteractor,
             fakeExecutorHandler,
             fakeExecutor,
             notificationVisibilityProvider,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/DisableChipsModernization.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/DisableChipsModernization.kt
new file mode 100644
index 0000000..69eecc0
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/DisableChipsModernization.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.phone.ongoingcall
+
+import android.platform.test.annotations.DisableFlags
+
+/** Disables all the flags necessary for [StatusBarChipsModernization.isEnabled] to return false. */
+@DisableFlags(StatusBarChipsModernization.FLAG_NAME)
+@Retention(AnnotationRetention.RUNTIME)
+@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
+annotation class DisableChipsModernization
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/EnableChipsModernization.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/EnableChipsModernization.kt
new file mode 100644
index 0000000..caa4373
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/EnableChipsModernization.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.phone.ongoingcall
+
+import android.platform.test.annotations.EnableFlags
+import com.android.systemui.statusbar.core.StatusBarRootModernization
+
+/** Enables all the flags necessary for [StatusBarChipsModernization.isEnabled] to return true. */
+@EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+@Retention(AnnotationRetention.RUNTIME)
+@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
+annotation class EnableChipsModernization
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerKosmos.kt
new file mode 100644
index 0000000..0a387f8
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.phone.ui
+
+import com.android.systemui.kosmos.Kosmos
+import org.mockito.kotlin.mock
+
+// NOTE: `statusBarIconController` is a mock instance.
+val Kosmos.statusBarIconController by Kosmos.Fixture {
+    mock<StatusBarIconControllerImpl>()
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/TintedIconManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/TintedIconManagerKosmos.kt
new file mode 100644
index 0000000..8e13b62
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ui/TintedIconManagerKosmos.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.phone.ui
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.statusbar.connectivity.ui.mobileContextProvider
+import com.android.systemui.statusbar.pipeline.mobile.ui.mobileUiAdapter
+import com.android.systemui.statusbar.pipeline.wifi.ui.wifiUiAdapter
+
+val Kosmos.tintedIconManagerFactory by
+Kosmos.Fixture {
+    TintedIconManager.Factory(
+        wifiUiAdapter,
+        mobileUiAdapter,
+        mobileContextProvider,
+    )
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelKosmos.kt
new file mode 100644
index 0000000..5089545
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelKosmos.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.backgroundScope
+import com.android.systemui.log.table.logcatTableLogBuffer
+import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.airplaneModeInteractor
+
+val Kosmos.airplaneModeViewModel by Kosmos.Fixture {
+    AirplaneModeViewModelImpl(
+        airplaneModeInteractor,
+        logcatTableLogBuffer(this, "AirplaneModeTableLogBuffer"),
+        backgroundScope,
+    )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKosmos.kt
new file mode 100644
index 0000000..a87d3b0
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileUiAdapterKosmos.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.mobile.ui
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.statusbar.phone.ui.statusBarIconController
+import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModel
+
+val Kosmos.mobileUiAdapter by
+    Kosmos.Fixture {
+      MobileUiAdapter(
+          statusBarIconController,
+          mobileIconsViewModel,
+          mobileViewLogger,
+          applicationCoroutineScope,
+      )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerKosmos.kt
new file mode 100644
index 0000000..206ecd3
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.mobile.ui
+
+import com.android.systemui.kosmos.Kosmos
+import org.mockito.kotlin.mock
+
+// NOTE: `mobileViewLogger` is a mock instance.
+val Kosmos.mobileViewLogger by Kosmos.Fixture { mock<MobileViewLogger>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapterKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapterKosmos.kt
new file mode 100644
index 0000000..d4d5896
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapterKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.wifi.ui
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.statusbar.phone.ui.statusBarIconController
+import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.wifiViewModel
+
+val Kosmos.wifiUiAdapter by
+  Kosmos.Fixture {
+      WifiUiAdapter(
+        statusBarIconController,
+        wifiViewModel,
+      )
+  }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelKosmos.kt
new file mode 100644
index 0000000..3f876ef
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelKosmos.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel
+
+import android.content.applicationContext
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.log.table.logcatTableLogBuffer
+import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.airplaneModeViewModel
+import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
+import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.wifiInteractor
+import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants
+import kotlinx.coroutines.flow.flowOf
+import org.mockito.kotlin.mock
+
+val Kosmos.wifiViewModel by
+  Kosmos.Fixture {
+      WifiViewModel(
+          airplaneModeViewModel,
+          { flowOf(false) },
+          mock<ConnectivityConstants>(),
+          applicationContext,
+          logcatTableLogBuffer(this, "WifiViewModelTest"),
+          wifiInteractor,
+          applicationCoroutineScope,
+          mock<WifiConstants>(),
+      )
+  }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/time/FakeSystemClockKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/util/time/FakeSystemClockKosmos.kt
index a209ec9..b23ccbf 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/time/FakeSystemClockKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/time/FakeSystemClockKosmos.kt
@@ -14,19 +14,23 @@
  * limitations under the License.
  */
 
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
 package com.android.systemui.util.time
 
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.util.mockito.mock
 import com.android.systemui.util.mockito.whenever
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.currentTime
 
-val Kosmos.systemClock by
+var Kosmos.systemClock by
     Kosmos.Fixture<SystemClock> {
         mock {
             whenever(elapsedRealtime()).thenAnswer { testScope.currentTime }
             whenever(uptimeMillis()).thenAnswer { testScope.currentTime }
+            whenever(currentTimeMillis()).thenAnswer { testScope.currentTime }
         }
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinderKosmos.kt
index 386e0fe..5411884 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinderKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinderKosmos.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.volume.dialog.ui.binder
 
+import android.content.applicationContext
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.volume.dialog.ringer.volumeDialogRingerViewBinder
 import com.android.systemui.volume.dialog.settings.ui.binder.volumeDialogSettingsButtonViewBinder
@@ -27,6 +28,7 @@
 val Kosmos.volumeDialogViewBinder by
     Kosmos.Fixture {
         VolumeDialogViewBinder(
+            applicationContext,
             volumeDialogViewModel,
             jankListenerFactory,
             volumeTracer,
diff --git a/packages/Vcn/TEST_MAPPING b/packages/Vcn/TEST_MAPPING
index 9722a83..9ca5304 100644
--- a/packages/Vcn/TEST_MAPPING
+++ b/packages/Vcn/TEST_MAPPING
@@ -14,5 +14,13 @@
     {
       "name": "CtsVcnTestCases"
     }
+  ],
+  "tethering-mainline-presubmit": [
+    {
+      "name": "FrameworksVcnTests"
+    },
+    {
+      "name": "CtsVcnTestCases"
+    }
   ]
 }
\ No newline at end of file
diff --git a/ravenwood/TEST_MAPPING b/ravenwood/TEST_MAPPING
index cb54e9f..df63cb9 100644
--- a/ravenwood/TEST_MAPPING
+++ b/ravenwood/TEST_MAPPING
@@ -2,6 +2,7 @@
   "presubmit": [
     { "name": "tiny-framework-dump-test" },
     { "name": "hoststubgentest" },
+    { "name": "ravenhelpertest" },
     { "name": "hoststubgen-test-tiny-test" },
     { "name": "hoststubgen-invoke-test" },
     { "name": "RavenwoodMockitoTest_device" },
diff --git a/ravenwood/scripts/run-ravenwood-tests.sh b/ravenwood/scripts/run-ravenwood-tests.sh
index 27c5ea1..67ebb1f 100755
--- a/ravenwood/scripts/run-ravenwood-tests.sh
+++ b/ravenwood/scripts/run-ravenwood-tests.sh
@@ -66,7 +66,7 @@
 done
 shift $(($OPTIND - 1))
 
-all_tests=(hoststubgentest tiny-framework-dump-test hoststubgen-invoke-test ravenwood-stats-checker)
+all_tests=(hoststubgentest tiny-framework-dump-test hoststubgen-invoke-test ravenwood-stats-checker ravenhelpertest)
 all_tests+=( $(${0%/*}/list-ravenwood-tests.sh) )
 
 filter() {
diff --git a/ravenwood/tools/hoststubgen/framework-policy-override.txt b/ravenwood/tools/hoststubgen/hoststubgen-test-policy-override.txt
similarity index 72%
rename from ravenwood/tools/hoststubgen/framework-policy-override.txt
rename to ravenwood/tools/hoststubgen/hoststubgen-test-policy-override.txt
index af3789e..000771a 100644
--- a/ravenwood/tools/hoststubgen/framework-policy-override.txt
+++ b/ravenwood/tools/hoststubgen/hoststubgen-test-policy-override.txt
@@ -1,30 +1,7 @@
-# --------------------------------------------------------------------------------------------------
-# This file contains rules to process `framework-all.jar` to generate the host side test "stub" and
-# "impl" jars, without using Java annotations.
-#
-# Useful when:
-# - The class is auto-generated and annotations can't be added.
-#   (We need to figure out what to do on auto-generated classes.)
-# - Want to quickly change filter rules without having to rebuild framework.jar.
-#
-# Using this file, one can control the visibility of APIs on a per-class, per-field and per-method
-# basis, but in most cases, per-class directives would be sufficient. That is:
-#
-# - To put the entire class, including its members and nested classes, in the "stub" jar,
-#   so that the test / target code can use the API, use `stubclass`.
-#
-# class package.class	stubclass
-#
-# - To put the entire class, including its members and nested classes, in the "impl" jar,
-#   but not in the "stub" jar, use `keepclass`. Use this when you don't want to expose an API to
-#   tests/target directly, but it's still needed at runtime, because it's used by other "stub" APIs
-#   directly or indirectly.
-#
-# class package.class	keepclass
-#
-# All other classes will be removed from both the stub jar and impl jar.
-#
-# --------------------------------------------------------------------------------------------------
+# *************************************************************************************************
+# This file contains "policies" for HostStubGen used by its automated tests.
+# For the "real" Ravenwood policies, see the frameworks/base/ravenwood/texts/ directory.
+# *************************************************************************************************
 
 # --------------------------------------------------------------------------------------------------
 # Directions on auto-generated classes, where we can't use Java annotations (yet).
diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
index 3340990..83a7069 100644
--- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
+++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
@@ -29,7 +29,7 @@
 import com.android.hoststubgen.filters.SanitizationFilter
 import com.android.hoststubgen.filters.TextFileFilterPolicyBuilder
 import com.android.hoststubgen.filters.printAsTextPolicy
-import com.android.hoststubgen.utils.ClassFilter
+import com.android.hoststubgen.utils.ClassPredicate
 import com.android.hoststubgen.visitors.BaseAdapter
 import com.android.hoststubgen.visitors.PackageRedirectRemapper
 import java.io.BufferedInputStream
@@ -153,9 +153,9 @@
 
         val annotationAllowedClassesFilter = options.annotationAllowedClassesFile.get.let { file ->
             if (file == null) {
-                ClassFilter.newNullFilter(true) // Allow all classes
+                ClassPredicate.newConstantPredicate(true) // Allow all classes
             } else {
-                ClassFilter.loadFromFile(file, false)
+                ClassPredicate.loadFromFile(file, false)
             }
         }
 
diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt
index 36adf06..9b5d602 100644
--- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt
+++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt
@@ -31,7 +31,7 @@
 import com.android.hoststubgen.asm.toHumanReadableMethodName
 import com.android.hoststubgen.asm.toJvmClassName
 import com.android.hoststubgen.log
-import com.android.hoststubgen.utils.ClassFilter
+import com.android.hoststubgen.utils.ClassPredicate
 import org.objectweb.asm.tree.AnnotationNode
 import org.objectweb.asm.tree.ClassNode
 
@@ -54,7 +54,7 @@
     redirectionClassAnnotations_: Set<String>,
     classLoadHookAnnotations_: Set<String>,
     keepStaticInitializerAnnotations_: Set<String>,
-    private val annotationAllowedClassesFilter: ClassFilter,
+    private val annotationAllowedClassesFilter: ClassPredicate,
     fallback: OutputFilter,
 ) : DelegatingFilter(fallback) {
     private val keepAnnotations = convertToInternalNames(keepAnnotations_)
diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassPredicate.kt
similarity index 93%
rename from ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt
rename to ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassPredicate.kt
index d6aa761..810dd71 100644
--- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt
+++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/utils/ClassPredicate.kt
@@ -24,7 +24,7 @@
 /**
  * General purpose filter for class names.
  */
-class ClassFilter private constructor(
+class ClassPredicate private constructor(
     private val defaultResult: Boolean,
 ) {
     private enum class MatchType {
@@ -81,14 +81,14 @@
 
     companion object {
         /**
-         * Return a filter that alawys returns true or false.
+         * Return a filter that always returns true or false.
          */
-        fun newNullFilter(defaultResult: Boolean): ClassFilter {
-            return ClassFilter(defaultResult)
+        fun newConstantPredicate(defaultResult: Boolean): ClassPredicate {
+            return ClassPredicate(defaultResult)
         }
 
         /** Build a filter from a file. */
-        fun loadFromFile(filename: String, defaultResult: Boolean): ClassFilter {
+        fun loadFromFile(filename: String, defaultResult: Boolean): ClassPredicate {
             return buildFromString(File(filename).readText(), defaultResult, filename)
         }
 
@@ -97,8 +97,8 @@
             filterString: String,
             defaultResult: Boolean,
             filenameForErrorMessage: String
-        ): ClassFilter {
-            val ret = ClassFilter(defaultResult)
+        ): ClassPredicate {
+            val ret = ClassPredicate(defaultResult)
 
             var lineNo = 0
             filterString.split('\n').forEach { s ->
diff --git a/ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt b/ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassPredicateTest.kt
similarity index 89%
rename from ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt
rename to ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassPredicateTest.kt
index d4e75d4..5a877e6 100644
--- a/ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt
+++ b/ravenwood/tools/hoststubgen/test/com/android/hoststubgen/utils/ClassPredicateTest.kt
@@ -20,22 +20,22 @@
 import org.junit.Assert.fail
 import org.junit.Test
 
-class ClassFilterTest {
+class ClassPredicateTest {
     @Test
     fun testDefaultTrue() {
-        val f = ClassFilter.newNullFilter(true)
+        val f = ClassPredicate.newConstantPredicate(true)
         assertThat(f.matches("a/b/c")).isEqualTo(true)
     }
 
     @Test
     fun testDefaultFalse() {
-        val f = ClassFilter.newNullFilter(false)
+        val f = ClassPredicate.newConstantPredicate(false)
         assertThat(f.matches("a/b/c")).isEqualTo(false)
     }
 
     @Test
     fun testComplex1() {
-        val f = ClassFilter.buildFromString("""
+        val f = ClassPredicate.buildFromString("""
             # ** this is a comment **
             a.b.c       # allow
             !a.b.d      # disallow
@@ -57,7 +57,7 @@
 
     @Test
     fun testComplex2() {
-        val f = ClassFilter.buildFromString("""
+        val f = ClassPredicate.buildFromString("""
             a.b.c       # allow
             !a.*        # disallow everything else in package "a".
             !d.e.f      # disallow d.e.f.
@@ -75,7 +75,7 @@
 
     @Test
     fun testNestedClass() {
-        val f = ClassFilter.buildFromString("a.b.c\nm.n.o\$p\n", false, "X")
+        val f = ClassPredicate.buildFromString("a.b.c\nm.n.o\$p\n", false, "X")
         assertThat(f.matches("a/b/c")).isEqualTo(true)
         assertThat(f.matches("a/b/c\$d")).isEqualTo(true)
         assertThat(f.matches("a/b/c\$d\$e")).isEqualTo(true)
@@ -88,7 +88,7 @@
     @Test
     fun testBadFilter1() {
         try {
-            ClassFilter.buildFromString("""
+            ClassPredicate.buildFromString("""
                 a*
                 """.trimIndent(), true, "FILENAME")
             fail("ParseException didn't happen")
@@ -101,7 +101,7 @@
 
     @Test
     fun testSuffix() {
-        val f = ClassFilter.buildFromString("""
+        val f = ClassPredicate.buildFromString("""
             *.Abc       # allow
             !*          # Disallow by default
             """.trimIndent(), true, "X")
diff --git a/ravenwood/tools/ravenhelper/Android.bp b/ravenwood/tools/ravenhelper/Android.bp
index a7ee468..3da6dd8 100644
--- a/ravenwood/tools/ravenhelper/Android.bp
+++ b/ravenwood/tools/ravenhelper/Android.bp
@@ -24,3 +24,14 @@
     ],
     visibility: ["//visibility:public"],
 }
+
+java_test_host {
+    name: "ravenhelpertest",
+    srcs: ["test/**/*.kt"],
+    static_libs: [
+        "ravenhelper",
+        "truth",
+    ],
+    test_suites: ["general-tests"],
+    visibility: ["//visibility:private"],
+}
diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt
index 3657a90..b6089ea 100644
--- a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt
+++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt
@@ -24,7 +24,7 @@
 import com.android.hoststubgen.filters.TextFileFilterPolicyParser
 import com.android.hoststubgen.filters.TextFilePolicyMethodReplaceFilter
 import com.android.hoststubgen.log
-import com.android.hoststubgen.utils.ClassFilter
+import com.android.hoststubgen.utils.ClassPredicate
 import com.android.platform.test.ravenwood.ravenhelper.SubcommandHandler
 import com.android.platform.test.ravenwood.ravenhelper.psi.createUastEnvironment
 import com.android.platform.test.ravenwood.ravenhelper.sourcemap.AllClassInfo
@@ -66,11 +66,11 @@
     val annotations: Annotations,
     val dumpOperations: Boolean,
 ) {
-    private val annotationAllowedClasses: ClassFilter = annotationAllowedClassesFile.let { file ->
+    private val annotationAllowedClasses: ClassPredicate = annotationAllowedClassesFile.let { file ->
         if (file == null) {
-            ClassFilter.newNullFilter(true) // Allow all classes
+            ClassPredicate.newConstantPredicate(true) // Allow all classes
         } else {
-            ClassFilter.loadFromFile(file, false)
+            ClassPredicate.loadFromFile(file, false)
         }
     }
 
diff --git a/ravenwood/tools/ravenhelper/test/com/android/platform/test/ravenwood/ravenhelper/RavenhelperTest.kt b/ravenwood/tools/ravenhelper/test/com/android/platform/test/ravenwood/ravenhelper/RavenhelperTest.kt
new file mode 100644
index 0000000..203fab1
--- /dev/null
+++ b/ravenwood/tools/ravenhelper/test/com/android/platform/test/ravenwood/ravenhelper/RavenhelperTest.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.platform.test.ravenwood.ravenhelper
+
+import com.android.platform.test.ravenwood.ravenhelper.psi.createUastEnvironment
+import org.junit.Test
+
+class RavenhelperTest {
+    @Test
+    fun testPsiInitialization() {
+        val env = createUastEnvironment()
+        env.dispose()
+    }
+}
\ No newline at end of file
diff --git a/services/accessibility/accessibility.aconfig b/services/accessibility/accessibility.aconfig
index bb0eacb..5e1fe8a6 100644
--- a/services/accessibility/accessibility.aconfig
+++ b/services/accessibility/accessibility.aconfig
@@ -11,6 +11,16 @@
 }
 
 flag {
+    name: "allow_secure_screenshots"
+    namespace: "accessibility"
+    description: "Allow certain AccessibilityServices to take screenshots of FLAG_SECURE screens"
+    bug: "373705911"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
+flag {
     name: "always_allow_observing_touch_events"
     namespace: "accessibility"
     description: "Always allows InputFilter observing SOURCE_TOUCHSCREEN events, even if touch exploration is enabled."
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
index 9ceca5d..4b04248 100644
--- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
@@ -86,11 +86,13 @@
 import android.view.MotionEvent;
 import android.view.SurfaceControl;
 import android.view.View;
+import android.view.WindowManager;
 import android.view.accessibility.AccessibilityCache;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityWindowInfo;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
 import android.view.inputmethod.EditorInfo;
 import android.window.ScreenCapture;
 import android.window.ScreenCapture.ScreenshotHardwareBuffer;
@@ -343,6 +345,8 @@
                 SurfaceControl sc,
                 IAccessibilityInteractionConnectionCallback callback);
 
+        int performScreenCapture(ScreenCapture.LayerCaptureArgs captureArgs,
+                ScreenCapture.ScreenCaptureListener captureListener);
     }
 
     public AbstractAccessibilityServiceConnection(Context context, ComponentName componentName,
@@ -1456,7 +1460,45 @@
                         AccessibilityService.ERROR_TAKE_SCREENSHOT_INVALID_WINDOW, interactionId);
                 return;
             }
-            connection.getRemote().takeScreenshotOfWindow(interactionId, listener, callback);
+            if (Flags.allowSecureScreenshots()) {
+                IWindowSurfaceInfoCallback infoCallback = new IWindowSurfaceInfoCallback.Stub() {
+                    @Override
+                    public void provideWindowSurfaceInfo(int windowFlags, int processUid,
+                            SurfaceControl surfaceControl) {
+                        final boolean canCaptureSecureLayers = canCaptureSecureLayers();
+                        if (!canCaptureSecureLayers
+                                && (windowFlags & WindowManager.LayoutParams.FLAG_SECURE) != 0) {
+                            try {
+                                callback.sendTakeScreenshotOfWindowError(
+                                        AccessibilityService.ERROR_TAKE_SCREENSHOT_SECURE_WINDOW,
+                                        interactionId);
+                            } catch (RemoteException e) {
+                                // ignore - the other side will time out
+                            }
+                            return;
+                        }
+
+                        final ScreenCapture.LayerCaptureArgs captureArgs =
+                                new ScreenCapture.LayerCaptureArgs.Builder(surfaceControl)
+                                        .setChildrenOnly(false)
+                                        .setUid(processUid)
+                                        .setCaptureSecureLayers(canCaptureSecureLayers)
+                                        .build();
+                        if (mSystemSupport.performScreenCapture(captureArgs, listener) != 0) {
+                            try {
+                                callback.sendTakeScreenshotOfWindowError(
+                                        AccessibilityService.ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR,
+                                        interactionId);
+                            } catch (RemoteException e) {
+                                // ignore - the other side will time out
+                            }
+                        }
+                    }
+                };
+                connection.getRemote().getWindowSurfaceInfo(infoCallback);
+            } else {
+                connection.getRemote().takeScreenshotOfWindow(interactionId, listener, callback);
+            }
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -1523,7 +1565,14 @@
                         }
                     }
             );
-            mWindowManagerService.captureDisplay(displayId, null, screenCaptureListener);
+            if (Flags.allowSecureScreenshots()) {
+                mWindowManagerService.captureDisplay(displayId,
+                        new ScreenCapture.CaptureArgs.Builder<>()
+                                .setCaptureSecureLayers(canCaptureSecureLayers()).build(),
+                        screenCaptureListener);
+            } else {
+                mWindowManagerService.captureDisplay(displayId, null, screenCaptureListener);
+            }
         } catch (Exception e) {
             sendScreenshotFailure(AccessibilityService.ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY,
                     callback);
@@ -1564,6 +1613,13 @@
         }, null).recycleOnUse());
     }
 
+    private boolean canCaptureSecureLayers() {
+        return Flags.allowSecureScreenshots()
+                && mAccessibilityServiceInfo.isAccessibilityTool()
+                && mAccessibilityServiceInfo.getResolveInfo().serviceInfo
+                .applicationInfo.isSystemApp();
+    }
+
     @Override
     @PermissionManuallyEnforced
     public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
index e422fef..9b5f22a 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
@@ -134,7 +134,7 @@
      */
     static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 0x00000080;
 
-/**
+    /**
      * Flag for enabling multi-finger gestures.
      *
      * @see #setUserAndEnabledFeatures(int, int)
@@ -190,8 +190,6 @@
 
     private final AccessibilityManagerService mAms;
 
-    private final InputManager mInputManager;
-
     private final SparseArray<EventStreamTransformation> mEventHandler;
 
     private final SparseArray<TouchExplorer> mTouchExplorer = new SparseArray<>(0);
@@ -294,7 +292,6 @@
         mContext = context;
         mAms = service;
         mPm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
-        mInputManager = context.getSystemService(InputManager.class);
         mEventHandler = eventHandler;
     }
 
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 67fdca4..9eb8442 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -173,6 +173,7 @@
 import android.view.accessibility.IMagnificationConnection;
 import android.view.accessibility.IUserInitializationCompleteCallback;
 import android.view.inputmethod.EditorInfo;
+import android.window.ScreenCapture;
 
 import com.android.internal.R;
 import com.android.internal.accessibility.AccessibilityShortcutController;
@@ -6725,6 +6726,12 @@
                         callback));
     }
 
+    @Override
+    public int performScreenCapture(ScreenCapture.LayerCaptureArgs captureArgs,
+            ScreenCapture.ScreenCaptureListener captureListener) {
+        return ScreenCapture.captureLayers(captureArgs, captureListener);
+    }
+
     @VisibleForTesting
     int getShortcutTypeForGenericShortcutCalls(int userId) {
         int navigationMode = Settings.Secure.getIntForUser(
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
index 614b228..23c5cc4 100644
--- a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
@@ -46,6 +46,11 @@
     public static final int AUTOCLICK_TYPE_DRAG = 3;
     public static final int AUTOCLICK_TYPE_SCROLL = 4;
 
+    public static final int CORNER_BOTTOM_RIGHT = 0;
+    public static final int CORNER_BOTTOM_LEFT = 1;
+    public static final int CORNER_TOP_LEFT = 2;
+    public static final int CORNER_TOP_RIGHT = 3;
+
     // Types of click the AutoclickTypePanel supports.
     @IntDef({
         AUTOCLICK_TYPE_LEFT_CLICK,
@@ -56,6 +61,21 @@
     })
     public @interface AutoclickType {}
 
+    @IntDef({
+            CORNER_BOTTOM_RIGHT,
+            CORNER_BOTTOM_LEFT,
+            CORNER_TOP_LEFT,
+            CORNER_TOP_RIGHT
+    })
+    public @interface Corner {}
+
+    private static final @Corner int[] CORNER_ROTATION_ORDER = {
+            CORNER_BOTTOM_RIGHT,
+            CORNER_BOTTOM_LEFT,
+            CORNER_TOP_LEFT,
+            CORNER_TOP_RIGHT
+    };
+
     // An interface exposed to {@link AutoclickController) to handle different actions on the panel,
     // including changing autoclick type, pausing/resuming autoclick.
     public interface ClickPanelControllerInterface {
@@ -77,14 +97,26 @@
     // Whether the panel is expanded or not.
     private boolean mExpanded = false;
 
+    // Whether autoclick is paused.
+    private boolean mPaused = false;
+    // Tracks the current corner position of the panel using an index into CORNER_ROTATION_ORDER
+    // array. This allows the panel to cycle through screen corners in a defined sequence when
+    // repositioned.
+    private int mCurrentCornerIndex = 0;
+
     private final LinearLayout mLeftClickButton;
     private final LinearLayout mRightClickButton;
     private final LinearLayout mDoubleClickButton;
     private final LinearLayout mDragButton;
     private final LinearLayout mScrollButton;
+    private final LinearLayout mPauseButton;
+    private final LinearLayout mPositionButton;
 
     private LinearLayout mSelectedButton;
 
+    private final Drawable mPauseButtonDrawable;
+    private final Drawable mResumeButtonDrawable;
+
     public AutoclickTypePanel(
             Context context,
             WindowManager windowManager,
@@ -93,6 +125,11 @@
         mWindowManager = windowManager;
         mClickPanelController = clickPanelController;
 
+        mPauseButtonDrawable = mContext.getDrawable(
+                R.drawable.accessibility_autoclick_pause);
+        mResumeButtonDrawable = mContext.getDrawable(
+                R.drawable.accessibility_autoclick_resume);
+
         mContentView =
                 LayoutInflater.from(context)
                         .inflate(R.layout.accessibility_autoclick_type_panel, null);
@@ -104,6 +141,8 @@
                 mContentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
         mScrollButton = mContentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
         mDragButton = mContentView.findViewById(R.id.accessibility_autoclick_drag_layout);
+        mPauseButton = mContentView.findViewById(R.id.accessibility_autoclick_pause_layout);
+        mPositionButton = mContentView.findViewById(R.id.accessibility_autoclick_position_layout);
 
         initializeButtonState();
     }
@@ -115,11 +154,8 @@
                 v -> togglePanelExpansion(AUTOCLICK_TYPE_DOUBLE_CLICK));
         mScrollButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_SCROLL));
         mDragButton.setOnClickListener(v -> togglePanelExpansion(AUTOCLICK_TYPE_DRAG));
-
-        // TODO(b/388872274): registers listener for pause button and allows users to pause/resume
-        // the autoclick.
-        // TODO(b/388847771): registers listener for position button and allows users to move the
-        // panel to a different position.
+        mPositionButton.setOnClickListener(v -> moveToNextCorner());
+        mPauseButton.setOnClickListener(v -> togglePause());
 
         // Initializes panel as collapsed state and only displays the left click button.
         hideAllClickTypeButtons();
@@ -196,6 +232,17 @@
         mExpanded = !mExpanded;
     }
 
+    private void togglePause() {
+        mPaused = !mPaused;
+
+        ImageButton imageButton = (ImageButton) mPauseButton.getChildAt(/* index= */ 0);
+        if (mPaused) {
+            imageButton.setImageDrawable(mResumeButtonDrawable);
+        } else {
+            imageButton.setImageDrawable(mPauseButtonDrawable);
+        }
+    }
+
     /** Hide all buttons on the panel except pause and position buttons. */
     private void hideAllClickTypeButtons() {
         mLeftClickButton.setVisibility(View.GONE);
@@ -225,6 +272,46 @@
         };
     }
 
+    /** Moves the panel to the next corner in clockwise direction. */
+    private void moveToNextCorner() {
+        @Corner int nextCornerIndex = (mCurrentCornerIndex + 1) % CORNER_ROTATION_ORDER.length;
+        mCurrentCornerIndex = nextCornerIndex;
+
+        // getLayoutParams() will update the panel position based on current corner.
+        WindowManager.LayoutParams params = getLayoutParams();
+        mWindowManager.updateViewLayout(mContentView, params);
+    }
+
+    private void setPanelPositionForCorner(WindowManager.LayoutParams params, @Corner int corner) {
+        //  TODO(b/396402941): Replace hardcoded pixel values with proper dimension calculations,
+        //  Current values are experimental and may not work correctly across different device
+        //  resolutions and configurations.
+        switch (corner) {
+            case CORNER_BOTTOM_RIGHT:
+                params.gravity = Gravity.END | Gravity.BOTTOM;
+                params.x = 15;
+                params.y = 90;
+                break;
+            case CORNER_BOTTOM_LEFT:
+                params.gravity = Gravity.START | Gravity.BOTTOM;
+                params.x = 15;
+                params.y = 90;
+                break;
+            case CORNER_TOP_LEFT:
+                params.gravity = Gravity.START | Gravity.TOP;
+                params.x = 15;
+                params.y = 30;
+                break;
+            case CORNER_TOP_RIGHT:
+                params.gravity = Gravity.END | Gravity.TOP;
+                params.x = 15;
+                params.y = 30;
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid corner: " + corner);
+        }
+    }
+
     @VisibleForTesting
     boolean getExpansionStateForTesting() {
         return mExpanded;
@@ -236,12 +323,19 @@
         return mContentView;
     }
 
+    @VisibleForTesting
+    @Corner
+    int getCurrentCornerIndexForTesting() {
+        return mCurrentCornerIndex;
+    }
+
     /**
      * Retrieves the layout params for AutoclickIndicatorView, used when it's added to the Window
      * Manager.
      */
+    @VisibleForTesting
     @NonNull
-    private WindowManager.LayoutParams getLayoutParams() {
+    WindowManager.LayoutParams getLayoutParams() {
         final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
         layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
         layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
@@ -254,11 +348,7 @@
                 mContext.getString(R.string.accessibility_autoclick_type_settings_panel_title);
         layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
         layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
-        // TODO(b/388847771): Compute position based on user interaction.
-        layoutParams.x = 15;
-        layoutParams.y = 90;
-        layoutParams.gravity = Gravity.END | Gravity.BOTTOM;
-
+        setPanelPositionForCorner(layoutParams, mCurrentCornerIndex);
         return layoutParams;
     }
 }
diff --git a/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java b/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java
index d0ee7af..5191fb5 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/AppFunctionManagerServiceImpl.java
@@ -20,6 +20,8 @@
 import static android.app.appfunctions.AppFunctionRuntimeMetadata.APP_FUNCTION_RUNTIME_NAMESPACE;
 
 import static com.android.server.appfunctions.AppFunctionExecutors.THREAD_POOL_EXECUTOR;
+import static com.android.server.appfunctions.CallerValidator.CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION;
+import static com.android.server.appfunctions.CallerValidator.CAN_EXECUTE_APP_FUNCTIONS_DENIED;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -236,30 +238,42 @@
                         requestInternal.getCallingPackage(),
                         targetPackageName,
                         requestInternal.getClientRequest().getFunctionIdentifier())
-                .thenAccept(
-                        canExecute -> {
-                            if (!canExecute) {
-                                throw new SecurityException(
-                                        "Caller does not have permission to execute the"
-                                                + " appfunction");
-                            }
-                        })
                 .thenCompose(
-                        isEnabled ->
-                                isAppFunctionEnabled(
-                                        requestInternal.getClientRequest().getFunctionIdentifier(),
-                                        requestInternal.getClientRequest().getTargetPackageName(),
-                                        getAppSearchManagerAsUser(requestInternal.getUserHandle()),
-                                        THREAD_POOL_EXECUTOR))
-                .thenAccept(
-                        isEnabled -> {
-                            if (!isEnabled) {
-                                throw new DisabledAppFunctionException(
-                                        "The app function is disabled");
+                        canExecuteResult -> {
+                            if (canExecuteResult == CAN_EXECUTE_APP_FUNCTIONS_DENIED) {
+                                return AndroidFuture.failedFuture(new SecurityException(
+                                        "Caller does not have permission to execute the"
+                                                + " appfunction"));
                             }
+                            return isAppFunctionEnabled(
+                                    requestInternal
+                                            .getClientRequest()
+                                            .getFunctionIdentifier(),
+                                    requestInternal
+                                            .getClientRequest()
+                                            .getTargetPackageName(),
+                                    getAppSearchManagerAsUser(
+                                            requestInternal.getUserHandle()),
+                                    THREAD_POOL_EXECUTOR)
+                                    .thenApply(
+                                            isEnabled -> {
+                                                if (!isEnabled) {
+                                                    throw new DisabledAppFunctionException(
+                                                            "The app function is disabled");
+                                                }
+                                                return canExecuteResult;
+                                            });
                         })
                 .thenAccept(
-                        unused -> {
+                        canExecuteResult -> {
+                            int bindFlags = Context.BIND_AUTO_CREATE;
+                            if (canExecuteResult
+                                    == CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION) {
+                                // If the caller doesn't have the permission, do not use
+                                // BIND_FOREGROUND_SERVICE to avoid it raising its process state by
+                                // calling its own AppFunctions.
+                                bindFlags |= Context.BIND_FOREGROUND_SERVICE;
+                            }
                             Intent serviceIntent =
                                     mInternalServiceHelper.resolveAppFunctionService(
                                             targetPackageName, targetUser);
@@ -294,8 +308,7 @@
                                     targetUser,
                                     localCancelTransport,
                                     safeExecuteAppFunctionCallback,
-                                    /* bindFlags= */ Context.BIND_AUTO_CREATE
-                                            | Context.BIND_FOREGROUND_SERVICE,
+                                    bindFlags,
                                     callerBinder,
                                     callingUid);
                         })
diff --git a/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java b/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
index 98ef974..c8038a4 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
@@ -17,12 +17,16 @@
 package com.android.server.appfunctions;
 
 import android.Manifest;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.os.UserHandle;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.infra.AndroidFuture;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * Interface for validating that the caller has the correct privilege to call an AppFunctionManager
  * API.
@@ -70,7 +74,8 @@
      * @param functionId The id of the app function to execute.
      * @return Whether the caller can execute the specified app function.
      */
-    AndroidFuture<Boolean> verifyCallerCanExecuteAppFunction(
+    @CanExecuteAppFunctionResult
+    AndroidFuture<Integer> verifyCallerCanExecuteAppFunction(
             int callingUid,
             int callingPid,
             @NonNull UserHandle targetUser,
@@ -78,6 +83,31 @@
             @NonNull String targetPackageName,
             @NonNull String functionId);
 
+    @IntDef(
+            prefix = {"CAN_EXECUTE_APP_FUNCTIONS_"},
+            value = {
+                    CAN_EXECUTE_APP_FUNCTIONS_DENIED,
+                    CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_SAME_PACKAGE,
+                    CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION,
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface CanExecuteAppFunctionResult {}
+
+    /** Callers are not allowed to execute app functions. */
+    int CAN_EXECUTE_APP_FUNCTIONS_DENIED = 0;
+
+    /**
+     * Callers can execute app functions because they are calling app functions from the same
+     * package.
+     */
+    int CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_SAME_PACKAGE = 1;
+
+    /**
+     * Callers can execute app functions because they have the necessary permission.
+     * This case also applies when a caller with the permission invokes their own app functions.
+     */
+    int CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION = 2;
+
     /**
      * Checks if the app function policy is allowed.
      *
diff --git a/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java b/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
index fe163d7..3f8b2e3 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
@@ -16,24 +16,12 @@
 
 package com.android.server.appfunctions;
 
-import static android.app.appfunctions.AppFunctionStaticMetadataHelper.APP_FUNCTION_STATIC_METADATA_DB;
-import static android.app.appfunctions.AppFunctionStaticMetadataHelper.APP_FUNCTION_STATIC_NAMESPACE;
-import static android.app.appfunctions.AppFunctionStaticMetadataHelper.getDocumentIdForAppFunction;
-
-import static com.android.server.appfunctions.AppFunctionExecutors.THREAD_POOL_EXECUTOR;
-
 import android.Manifest;
 import android.annotation.BinderThread;
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.app.admin.DevicePolicyManager;
 import android.app.admin.DevicePolicyManager.AppFunctionsPolicy;
-import android.app.appsearch.AppSearchBatchResult;
-import android.app.appsearch.AppSearchManager;
-import android.app.appsearch.AppSearchManager.SearchContext;
-import android.app.appsearch.AppSearchResult;
-import android.app.appsearch.GenericDocument;
-import android.app.appsearch.GetByDocumentIdRequest;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.Binder;
@@ -84,64 +72,25 @@
 
     @Override
     @RequiresPermission(Manifest.permission.EXECUTE_APP_FUNCTIONS)
-    public AndroidFuture<Boolean> verifyCallerCanExecuteAppFunction(
+    @CanExecuteAppFunctionResult
+    public AndroidFuture<Integer> verifyCallerCanExecuteAppFunction(
             int callingUid,
             int callingPid,
             @NonNull UserHandle targetUser,
             @NonNull String callerPackageName,
             @NonNull String targetPackageName,
             @NonNull String functionId) {
-        if (callerPackageName.equals(targetPackageName)) {
-            return AndroidFuture.completedFuture(true);
-        }
-
         boolean hasExecutionPermission =
                 mContext.checkPermission(
-                                Manifest.permission.EXECUTE_APP_FUNCTIONS, callingPid, callingUid)
+                        Manifest.permission.EXECUTE_APP_FUNCTIONS, callingPid, callingUid)
                         == PackageManager.PERMISSION_GRANTED;
-
-        if (!hasExecutionPermission) {
-            return AndroidFuture.completedFuture(false);
+        if (hasExecutionPermission) {
+            return AndroidFuture.completedFuture(CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_HAS_PERMISSION);
         }
-
-        FutureAppSearchSession futureAppSearchSession =
-                new FutureAppSearchSessionImpl(
-                        Objects.requireNonNull(
-                                mContext.createContextAsUser(targetUser, 0)
-                                        .getSystemService(AppSearchManager.class)),
-                        THREAD_POOL_EXECUTOR,
-                        new SearchContext.Builder(APP_FUNCTION_STATIC_METADATA_DB).build());
-
-        String documentId = getDocumentIdForAppFunction(targetPackageName, functionId);
-
-        return futureAppSearchSession
-                .getByDocumentId(
-                        new GetByDocumentIdRequest.Builder(APP_FUNCTION_STATIC_NAMESPACE)
-                                .addIds(documentId)
-                                .build())
-                .thenApply(
-                        batchResult -> getGenericDocumentFromBatchResult(batchResult, documentId))
-                // At this point, already checked the app has the permission.
-                .thenApply(document -> true)
-                .whenComplete(
-                        (result, throwable) -> {
-                            futureAppSearchSession.close();
-                        });
-    }
-
-    private static GenericDocument getGenericDocumentFromBatchResult(
-            AppSearchBatchResult<String, GenericDocument> result, String documentId) {
-        if (result.isSuccess()) {
-            return result.getSuccesses().get(documentId);
+        if (callerPackageName.equals(targetPackageName)) {
+            return AndroidFuture.completedFuture(CAN_EXECUTE_APP_FUNCTIONS_ALLOWED_SAME_PACKAGE);
         }
-
-        AppSearchResult<GenericDocument> failedResult = result.getFailures().get(documentId);
-        throw new AppSearchException(
-                failedResult.getResultCode(),
-                "Unable to retrieve document with id: "
-                        + documentId
-                        + " due to "
-                        + failedResult.getErrorMessage());
+        return AndroidFuture.completedFuture(CAN_EXECUTE_APP_FUNCTIONS_DENIED);
     }
 
     @Override
diff --git a/services/appwidget/Android.bp b/services/appwidget/Android.bp
index 8119073..9548afe 100644
--- a/services/appwidget/Android.bp
+++ b/services/appwidget/Android.bp
@@ -17,6 +17,12 @@
 java_library_static {
     name: "services.appwidget",
     defaults: ["platform_service_defaults"],
-    srcs: [":services.appwidget-sources"],
-    libs: ["services.core"],
+    srcs: [
+        ":services.appwidget-sources",
+        ":statslog-framework-java-gen",
+    ],
+    libs: [
+        "androidx.annotation_annotation",
+        "services.core",
+    ],
 }
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index e0f2939..74a87ed 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -50,6 +50,7 @@
 import android.app.IServiceConnection;
 import android.app.KeyguardManager;
 import android.app.PendingIntent;
+import android.app.StatsManager;
 import android.app.admin.DevicePolicyManagerInternal;
 import android.app.admin.DevicePolicyManagerInternal.OnCrossProfileWidgetProvidersChangeListener;
 import android.app.usage.Flags;
@@ -124,6 +125,7 @@
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 import android.util.SparseLongArray;
+import android.util.StatsEvent;
 import android.util.TypedValue;
 import android.util.Xml;
 import android.util.proto.ProtoInputStream;
@@ -145,6 +147,7 @@
 import com.android.internal.os.SomeArgs;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.widget.IRemoteViewsFactory;
 import com.android.modules.utils.TypedXmlPullParser;
 import com.android.modules.utils.TypedXmlSerializer;
@@ -433,6 +436,44 @@
         mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
         mAppOpsManagerInternal = LocalServices.getService(AppOpsManagerInternal.class);
         mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class);
+        registerPullCallbacks();
+    }
+
+    /**
+     * Register callbacks for pull atoms.
+     */
+    private void registerPullCallbacks() {
+        final StatsManager manager = mContext.getSystemService(StatsManager.class);
+        manager.setPullAtomCallback(FrameworkStatsLog.WIDGET_MEMORY_STATS,
+                new StatsManager.PullAtomMetadata.Builder().build(),
+                new HandlerExecutor(mCallbackHandler), this::onPullAtom);
+    }
+
+    /**
+     * Callback from StatsManager to log events indicated by the atomTag. This function will add
+     * the relevant events to the data list.
+     *
+     * @return PULL_SUCCESS if the pull was successful and events should be used, else PULL_SKIP.
+     */
+    private int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) {
+        if (atomTag == FrameworkStatsLog.WIDGET_MEMORY_STATS) {
+            synchronized (mLock) {
+                for (Widget widget : mWidgets) {
+                    if (widget.views != null) {
+                        final int uid = widget.provider.id.uid;
+                        final int appWidgetId = widget.appWidgetId;
+                        final long bitmapMemoryUsage =
+                                widget.views.estimateTotalBitmapMemoryUsage();
+                        StatsEvent event = FrameworkStatsLog.buildStatsEvent(
+                                FrameworkStatsLog.WIDGET_MEMORY_STATS, uid, appWidgetId,
+                                bitmapMemoryUsage);
+                        data.add(event);
+                    }
+                }
+            }
+            return StatsManager.PULL_SUCCESS;
+        }
+        return StatsManager.PULL_SKIP;
     }
 
     /**
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index 139bbae..93b4de8 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -891,6 +891,11 @@
         }
 
         @Override
+        public VirtualDevice getVirtualDevice(int deviceId) {
+            return mImpl.getVirtualDevice(deviceId);
+        }
+
+        @Override
         public long getDimDurationMillisForDeviceId(int deviceId) {
             VirtualDeviceImpl virtualDevice = getVirtualDeviceForId(deviceId);
             return virtualDevice == null ? -1 : virtualDevice.getDimDurationMillis();
diff --git a/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java b/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
index 04edb57..cd632e6 100644
--- a/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
+++ b/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
@@ -31,6 +31,8 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.role.RoleManager;
+import android.companion.AssociationRequest;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -81,6 +83,8 @@
 
     private PackageManagerInternal mPackageManagerInternal;
 
+    private RoleManager mRoleManager;
+
     @Nullable
     private WindowManagerInternal mWindowManager;
 
@@ -225,7 +229,8 @@
     }
 
     @Override
-    public void onStart() {}
+    public void onStart() {
+    }
 
     @Override
     public void onBootPhase(int phase) {
@@ -237,6 +242,7 @@
         init(getContext().getSystemService(MediaProjectionManager.class),
                 LocalServices.getService(WindowManagerInternal.class),
                 LocalServices.getService(PackageManagerInternal.class),
+                getContext().getSystemService(RoleManager.class),
                 getExemptedPackages()
         );
         if (sensitiveContentAppProtection()) {
@@ -247,7 +253,8 @@
 
     @VisibleForTesting
     void init(MediaProjectionManager projectionManager, WindowManagerInternal windowManager,
-            PackageManagerInternal packageManagerInternal, ArraySet<String> exemptedPackages) {
+            PackageManagerInternal packageManagerInternal, RoleManager roleManager,
+            ArraySet<String> exemptedPackages) {
         if (DEBUG) Log.d(TAG, "init");
 
         Objects.requireNonNull(projectionManager);
@@ -256,6 +263,7 @@
         mProjectionManager = projectionManager;
         mWindowManager = windowManager;
         mPackageManagerInternal = packageManagerInternal;
+        mRoleManager = roleManager;
         mExemptedPackages = exemptedPackages;
 
         // TODO(b/317250444): use MediaProjectionManagerService directly, reduces unnecessary
@@ -312,8 +320,10 @@
         boolean isPackageExempted = (mExemptedPackages != null && mExemptedPackages.contains(
                 projectionInfo.getPackageName()))
                 || canRecordSensitiveContent(projectionInfo.getPackageName())
+                || holdsAppStreamingRole(projectionInfo.getPackageName(),
+                projectionInfo.getUserHandle())
                 || isAutofillServiceRecorderPackage(projectionInfo.getUserHandle().getIdentifier(),
-                        projectionInfo.getPackageName());
+                projectionInfo.getPackageName());
         // TODO(b/324447419): move GlobalSettings lookup to background thread
         boolean isFeatureDisabled = Settings.Global.getInt(getContext().getContentResolver(),
                 DISABLE_SCREEN_SHARE_PROTECTIONS_FOR_APPS_AND_NOTIFICATIONS, 0) != 0;
@@ -348,6 +358,11 @@
         }
     }
 
+    private boolean holdsAppStreamingRole(String packageName, UserHandle userHandle) {
+        return mRoleManager.getRoleHoldersAsUser(
+                AssociationRequest.DEVICE_PROFILE_APP_STREAMING, userHandle).contains(packageName);
+    }
+
     private void onProjectionEnd() {
         synchronized (mSensitiveContentProtectionLock) {
             mProjectionActive = false;
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index cce2959..125824c 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -618,7 +618,7 @@
                 Slog.i(TAG, "  Stopping fg for service " + r);
             }
             setServiceForegroundInnerLocked(r, 0, null, 0, 0,
-                    0);
+                    0,  /* systemRequestedTransition= */ true);
         }
     }
 
@@ -1839,7 +1839,7 @@
             ServiceRecord r = findServiceLocked(className, token, userId);
             if (r != null) {
                 setServiceForegroundInnerLocked(r, id, notification, flags, foregroundServiceType,
-                        callingUid);
+                        callingUid, /* systemRequestedTransition= */ false);
             }
         } finally {
             mAm.mInjector.restoreCallingIdentity(origId);
@@ -2155,7 +2155,7 @@
     @GuardedBy("mAm")
     private void setServiceForegroundInnerLocked(final ServiceRecord r, int id,
             Notification notification, int flags, int foregroundServiceType,
-            int callingUidIfStart) {
+            int callingUidIfStart, boolean systemRequestedTransition) {
         if (id != 0) {
             if (notification == null) {
                 throw new IllegalArgumentException("null notification");
@@ -2800,6 +2800,7 @@
                 // earlier.
                 r.foregroundServiceType = 0;
                 r.mFgsNotificationWasDeferred = false;
+                r.systemRequestedFgToBg = systemRequestedTransition;
                 signalForegroundServiceObserversLocked(r);
                 resetFgsRestrictionLocked(r);
                 mAm.updateForegroundServiceUsageStats(r.name, r.userId, false);
@@ -9339,14 +9340,22 @@
                 if (sr.foregroundServiceType
                         == ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE
                         && sr.foregroundId == notificationId) {
-                    if (DEBUG_FOREGROUND_SERVICE) {
-                        Slog.d(TAG, "Moving media service to foreground for package "
-                                + packageName);
+                    // check if service is explicitly requested by app to not be in foreground.
+                    if (sr.systemRequestedFgToBg) {
+                        Slog.d(TAG,
+                                "System initiated service transition to foreground "
+                                        + "for package "
+                                        + packageName);
+                        setServiceForegroundInnerLocked(sr, sr.foregroundId,
+                                sr.foregroundNoti, /* flags */ 0,
+                                ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK,
+                                /* callingUidStart */ 0, /* systemRequestedTransition */ true);
+                    } else {
+                        Slog.d(TAG,
+                                "Ignoring system initiated foreground service transition for "
+                                        + "package"
+                                        + packageName);
                     }
-                    setServiceForegroundInnerLocked(sr, sr.foregroundId,
-                             sr.foregroundNoti, /* flags */ 0,
-                             ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK,
-                             /* callingUidStart */ 0);
                 }
             }
         }
@@ -9379,13 +9388,14 @@
                 if (sr.foregroundServiceType
                         == ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
                         && sr.foregroundId == notificationId) {
-                    if (DEBUG_FOREGROUND_SERVICE) {
-                        Slog.d(TAG, "Forcing media foreground service to background for package "
-                                + packageName);
-                    }
+                    Slog.d(TAG,
+                            "System initiated transition of foreground service(type:media) to bg "
+                                    + "for package"
+                                    + packageName);
                     setServiceForegroundInnerLocked(sr, /* id */ 0,
                             /* notification */ null, /* flags */ 0,
-                            /* foregroundServiceType */ 0, /* callingUidStart */ 0);
+                            /* foregroundServiceType */ 0, /* callingUidStart */ 0,
+                            /* systemRequestedTransition */ true);
                 }
             }
         }
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 6e3d7bd..07a4d52 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -301,6 +301,7 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.content.pm.SharedLibraryInfo;
+import android.content.pm.SystemFeaturesCache;
 import android.content.pm.TestUtilityService;
 import android.content.pm.UserInfo;
 import android.content.pm.UserProperties;
@@ -2559,9 +2560,20 @@
         mTraceErrorLogger = new TraceErrorLogger();
         mComponentAliasResolver = new ComponentAliasResolver(this);
         sCreatorTokenCacheCleaner = new Handler(mHandlerThread.getLooper());
+
+        ApplicationSharedMemory applicationSharedMemory = ApplicationSharedMemory.getInstance();
+        if (android.content.pm.Flags.cacheSdkSystemFeatures()) {
+            // Install the cache into the process-wide singleton for in-proc queries, as well as
+            // shared memory. Apps will inflate the cache from shared memory in bindApplication.
+            SystemFeaturesCache systemFeaturesCache =
+                    new SystemFeaturesCache(SystemConfig.getInstance().getAvailableFeatures());
+            SystemFeaturesCache.setInstance(systemFeaturesCache);
+            applicationSharedMemory.writeSystemFeaturesCache(
+                    systemFeaturesCache.getSdkFeatureVersions());
+        }
         try {
             mApplicationSharedMemoryReadOnlyFd =
-                    ApplicationSharedMemory.getInstance().getReadOnlyFileDescriptor();
+                    applicationSharedMemory.getReadOnlyFileDescriptor();
         } catch (IOException e) {
             Slog.e(TAG, "Failed to get read only fd for shared memory", e);
             throw new RuntimeException(e);
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index b677297..4bfee1d 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -1464,7 +1464,10 @@
     void onProcessFrozen(ProcessRecord frozenProc) {
         if (useCompaction()) {
             synchronized (mProcLock) {
-                compactApp(frozenProc, CompactProfile.FULL, CompactSource.APP, false);
+                // only full-compact if process is cached
+                if (frozenProc.mState.getSetAdj() >= mCompactThrottleMinOomAdj) {
+                    compactApp(frozenProc, CompactProfile.FULL, CompactSource.APP, false);
+                }
             }
         }
         frozenProc.onProcessFrozen();
diff --git a/services/core/java/com/android/server/am/OWNERS b/services/core/java/com/android/server/am/OWNERS
index cc6fabc..4b6d6bc 100644
--- a/services/core/java/com/android/server/am/OWNERS
+++ b/services/core/java/com/android/server/am/OWNERS
@@ -68,7 +68,7 @@
 per-file ActivityManager* = file:/ACTIVITY_SECURITY_OWNERS
 
 # Aconfig Flags
-per-file flags.aconfig = yamasani@google.com, bills@google.com, nalini@google.com
+per-file flags.aconfig = yamasani@google.com, nalini@google.com
 
 # Londoners
 michaelwr@google.com #{LAST_RESORT_SUGGESTION}
@@ -77,4 +77,4 @@
 # Default
 yamasani@google.com
 hackbod@google.com #{LAST_RESORT_SUGGESTION}
-omakoto@google.com #{LAST_RESORT_SUGGESTION}
\ No newline at end of file
+omakoto@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index ca34a13..f443e44 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -158,6 +158,7 @@
     boolean fgWaiting;      // is a timeout for going foreground already scheduled?
     boolean isNotAppComponentUsage; // is service binding not considered component/package usage?
     boolean isForeground;   // is service currently in foreground mode?
+    boolean systemRequestedFgToBg; //  system requested service to transition to background.
     boolean inSharedIsolatedProcess; // is the service in a shared isolated process
     int foregroundId;       // Notification ID of last foreground req.
     Notification foregroundNoti; // Notification record of foreground state.
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 813e661..d800503 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -9718,72 +9718,78 @@
                             }
                         }
                     }
-                }
-            }
-            if (changed) {
-                // If associated to volume group, update group cache
-                updateVolumeGroupIndex(device, /* forceMuteState= */ false);
+                    if (changed) {
+                        // If associated to volume group, update group cache
+                        updateVolumeGroupIndex(device, /* forceMuteState= */ false);
 
-                oldIndex = (oldIndex + 5) / 10;
-                index = (index + 5) / 10;
-                // log base stream changes to the event log
-                if (sStreamVolumeAlias.get(mStreamType, /*valueIfKeyNotFound=*/-1) == mStreamType) {
-                    if (caller == null) {
-                        Log.w(TAG, "No caller for volume_changed event", new Throwable());
-                    }
-                    EventLogTags.writeVolumeChanged(mStreamType, oldIndex, index, mIndexMax / 10,
-                            caller);
-                }
-                // fire changed intents for all streams, but only when the device it changed on
-                //  is the current device
-                if ((index != oldIndex) && isCurrentDevice) {
-                    // for single volume devices, only send the volume change broadcast
-                    // on the alias stream
-                    final int streamAlias = sStreamVolumeAlias.get(
-                            mStreamType, /*valueIfKeyNotFound=*/-1);
-                    if (!mIsSingleVolume || streamAlias == mStreamType) {
-                        mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, index);
-                        mVolumeChanged.putExtra(AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE,
-                                oldIndex);
-                        int extraStreamType = mStreamType;
-                        // TODO: remove this when deprecating STREAM_BLUETOOTH_SCO
-                        if (isStreamBluetoothSco(mStreamType)) {
-                            mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE,
-                                    AudioSystem.STREAM_BLUETOOTH_SCO);
-                            extraStreamType = AudioSystem.STREAM_BLUETOOTH_SCO;
-                        } else {
-                            mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE,
-                                    mStreamType);
-                        }
-                        mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE_ALIAS,
-                                streamAlias);
-
-                        if (mStreamType == streamAlias) {
-                            String aliasStreamIndexesString = "";
-                            if (!aliasStreamIndexes.isEmpty()) {
-                                aliasStreamIndexesString =
-                                        " aliased streams: " + aliasStreamIndexes;
+                        oldIndex = (oldIndex + 5) / 10;
+                        index = (index + 5) / 10;
+                        // log base stream changes to the event log
+                        if (sStreamVolumeAlias.get(mStreamType, /*valueIfKeyNotFound=*/-1)
+                                == mStreamType) {
+                            if (caller == null) {
+                                Log.w(TAG, "No caller for volume_changed event", new Throwable());
                             }
-                            AudioService.sVolumeLogger.enqueue(new VolChangedBroadcastEvent(
-                                    extraStreamType, aliasStreamIndexesString, index, oldIndex));
-                            if (extraStreamType != mStreamType) {
-                                AudioService.sVolumeLogger.enqueue(new VolChangedBroadcastEvent(
-                                        mStreamType, aliasStreamIndexesString, index, oldIndex));
+                            EventLogTags.writeVolumeChanged(
+                                    mStreamType, oldIndex, index, mIndexMax / 10, caller);
+                        }
+                        // fire changed intents for all streams, but only when the device it changed
+                        // on
+                        //  is the current device
+                        if ((index != oldIndex) && isCurrentDevice) {
+                            // for single volume devices, only send the volume change broadcast
+                            // on the alias stream
+                            final int streamAlias =
+                                    sStreamVolumeAlias.get(mStreamType, /*valueIfKeyNotFound=*/-1);
+                            if (!mIsSingleVolume || streamAlias == mStreamType) {
+                                mVolumeChanged.putExtra(
+                                        AudioManager.EXTRA_VOLUME_STREAM_VALUE, index);
+                                mVolumeChanged.putExtra(
+                                        AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, oldIndex);
+                                int extraStreamType = mStreamType;
+                                // TODO: remove this when deprecating STREAM_BLUETOOTH_SCO
+                                if (isStreamBluetoothSco(mStreamType)) {
+                                    mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE,
+                                            AudioSystem.STREAM_BLUETOOTH_SCO);
+                                    extraStreamType = AudioSystem.STREAM_BLUETOOTH_SCO;
+                                } else {
+                                    mVolumeChanged.putExtra(
+                                            AudioManager.EXTRA_VOLUME_STREAM_TYPE, mStreamType);
+                                }
+                                mVolumeChanged.putExtra(
+                                        AudioManager.EXTRA_VOLUME_STREAM_TYPE_ALIAS, streamAlias);
+
+                                if (mStreamType == streamAlias) {
+                                    String aliasStreamIndexesString = "";
+                                    if (!aliasStreamIndexes.isEmpty()) {
+                                        aliasStreamIndexesString =
+                                                " aliased streams: " + aliasStreamIndexes;
+                                    }
+                                    AudioService.sVolumeLogger.enqueue(
+                                            new VolChangedBroadcastEvent(extraStreamType,
+                                                    aliasStreamIndexesString, index, oldIndex));
+                                    if (extraStreamType != mStreamType) {
+                                        AudioService.sVolumeLogger.enqueue(
+                                                new VolChangedBroadcastEvent(mStreamType,
+                                                        aliasStreamIndexesString, index, oldIndex));
+                                    }
+                                }
+                                sendBroadcastToAll(mVolumeChanged, mVolumeChangedOptions);
+                                if (extraStreamType != mStreamType) {
+                                    // send multiple intents in case we merged voice call and bt sco
+                                    // streams
+                                    mVolumeChanged.putExtra(
+                                            AudioManager.EXTRA_VOLUME_STREAM_TYPE, mStreamType);
+                                    // do not use the options in thid case which could discard
+                                    // the previous intent
+                                    sendBroadcastToAll(mVolumeChanged, null);
+                                }
                             }
                         }
-                        sendBroadcastToAll(mVolumeChanged, mVolumeChangedOptions);
-                        if (extraStreamType != mStreamType) {
-                            // send multiple intents in case we merged voice call and bt sco streams
-                            mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE,
-                                    mStreamType);
-                            // do not use the options in thid case which could discard
-                            // the previous intent
-                            sendBroadcastToAll(mVolumeChanged, null);
-                        }
                     }
+                    return changed;
                 }
             }
-            return changed;
         }
 
         public int getIndex(int device) {
diff --git a/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java b/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
index d412277..f5284a3 100644
--- a/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
+++ b/services/core/java/com/android/server/companion/virtual/VirtualDeviceManagerInternal.java
@@ -211,4 +211,20 @@
      */
     public abstract @NonNull VirtualDeviceManager.VirtualDevice createVirtualDevice(
             @NonNull VirtualDeviceParams params);
+
+    /**
+     * Returns the details of the virtual device with the given ID, if any.
+     *
+     * <p>The returned object is a read-only representation of the virtual device that expose its
+     * properties.</p>
+     *
+     * <p>Note that if the virtual device is closed and becomes invalid, the returned object will
+     * not be updated and may contain stale values. Use a {@link VirtualDeviceListener} for real
+     * time updates of the availability of virtual devices.</p>
+     *
+     * @return the virtual device with the requested ID, or {@code null} if no such device exists or
+     *   it has already been closed.
+     */
+    @Nullable
+    public abstract VirtualDevice getVirtualDevice(int deviceId);
 }
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
index 88f5c81..c41b8db 100644
--- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java
+++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
@@ -333,7 +333,7 @@
             int ambientLightHorizonLong, float userLux, float userNits,
             DisplayManagerFlags displayManagerFlags) {
         mInjector = injector;
-        mClock = injector.createClock(displayManagerFlags.offloadControlsDozeAutoBrightness());
+        mClock = injector.createClock();
         mContext = context;
         mCallbacks = callbacks;
         mSensorManager = sensorManager;
@@ -1402,8 +1402,7 @@
         public void onSensorChanged(SensorEvent event) {
             if (mLightSensorEnabled) {
                 // The time received from the sensor is in nano seconds, hence changing it to ms
-                final long time = (mDisplayManagerFlags.offloadControlsDozeAutoBrightness())
-                        ? TimeUnit.NANOSECONDS.toMillis(event.timestamp) : mClock.uptimeMillis();
+                final long time = TimeUnit.NANOSECONDS.toMillis(event.timestamp);
                 final float lux = event.values[0];
                 handleLightSensorEvent(time, lux);
             }
@@ -1616,20 +1615,13 @@
     }
 
     private static class RealClock implements Clock {
-        private final boolean mOffloadControlsDozeBrightness;
-
-        RealClock(boolean offloadControlsDozeBrightness) {
-            mOffloadControlsDozeBrightness = offloadControlsDozeBrightness;
-        }
-
         @Override
         public long uptimeMillis() {
             return SystemClock.uptimeMillis();
         }
 
         public long getSensorEventScaleTime() {
-            return (mOffloadControlsDozeBrightness)
-                    ? SystemClock.elapsedRealtime() : uptimeMillis();
+            return SystemClock.elapsedRealtime();
         }
     }
 
@@ -1638,8 +1630,8 @@
             return BackgroundThread.getHandler();
         }
 
-        Clock createClock(boolean offloadControlsDozeBrightness) {
-            return new RealClock(offloadControlsDozeBrightness);
+        Clock createClock() {
+            return new RealClock();
         }
     }
 }
diff --git a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
index 2c6f374..6510441 100644
--- a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
+++ b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
@@ -291,8 +291,7 @@
     void setAllowAutoBrightnessWhileDozing(
             DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
         mAllowAutoBrightnessWhileDozing = mAllowAutoBrightnessWhileDozingConfig;
-        if (mDisplayManagerFlags.offloadControlsDozeAutoBrightness()
-                && mDisplayManagerFlags.isDisplayOffloadEnabled()
+        if (mDisplayManagerFlags.isDisplayOffloadEnabled()
                 && displayOffloadSession != null) {
             mAllowAutoBrightnessWhileDozing &= displayOffloadSession.allowAutoBrightnessInDoze();
         }
diff --git a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
index e4b595a..c3057de 100644
--- a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
+++ b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
@@ -156,11 +156,6 @@
             Flags.FLAG_DOZE_BRIGHTNESS_FLOAT,
             Flags::dozeBrightnessFloat);
 
-    private final FlagState mOffloadControlsDozeAutoBrightness = new FlagState(
-            Flags.FLAG_OFFLOAD_CONTROLS_DOZE_AUTO_BRIGHTNESS,
-            Flags::offloadControlsDozeAutoBrightness
-    );
-
     private final FlagState mPeakRefreshRatePhysicalLimit = new FlagState(
             Flags.FLAG_ENABLE_PEAK_REFRESH_RATE_PHYSICAL_LIMIT,
             Flags::enablePeakRefreshRatePhysicalLimit
@@ -440,13 +435,6 @@
         return mDozeBrightnessFloat.isEnabled();
     }
 
-    /**
-     * @return Whether DisplayOffload should control auto-brightness in doze
-     */
-    public boolean offloadControlsDozeAutoBrightness() {
-        return mOffloadControlsDozeAutoBrightness.isEnabled();
-    }
-
     public boolean isPeakRefreshRatePhysicalLimitEnabled() {
         return mPeakRefreshRatePhysicalLimit.isEnabled();
     }
@@ -647,7 +635,6 @@
         pw.println(" " + mResolutionBackupRestore);
         pw.println(" " + mUseFusionProxSensor);
         pw.println(" " + mDozeBrightnessFloat);
-        pw.println(" " + mOffloadControlsDozeAutoBrightness);
         pw.println(" " + mPeakRefreshRatePhysicalLimit);
         pw.println(" " + mIgnoreAppPreferredRefreshRate);
         pw.println(" " + mSynthetic60hzModes);
diff --git a/services/core/java/com/android/server/display/feature/display_flags.aconfig b/services/core/java/com/android/server/display/feature/display_flags.aconfig
index acdc0e0..f545130 100644
--- a/services/core/java/com/android/server/display/feature/display_flags.aconfig
+++ b/services/core/java/com/android/server/display/feature/display_flags.aconfig
@@ -255,17 +255,6 @@
 }
 
 flag {
-    name: "offload_controls_doze_auto_brightness"
-    namespace: "display_manager"
-    description: "Allows the registered DisplayOffloader to control if auto-brightness is used in doze"
-    bug: "327392714"
-    is_fixed_read_only: true
-    metadata {
-        purpose: PURPOSE_BUGFIX
-    }
-}
-
-flag {
     name: "enable_peak_refresh_rate_physical_limit"
     namespace: "display_manager"
     description: "Flag for adding physical refresh rate limit if smooth display setting is on "
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index 7e8bb28..2af74f6 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -569,7 +569,8 @@
     }
 
     private void requestDreamInternal() {
-        if (isDreamingInternal() && !dreamIsFrontmost() && mController.bringDreamToFront()) {
+        if (isDreamingInternal() && !dreamIsFrontmost() && mController.bringDreamToFront()
+                && !isDozingInternal()) {
             return;
         }
 
diff --git a/services/core/java/com/android/server/input/InputGestureManager.java b/services/core/java/com/android/server/input/InputGestureManager.java
index 977c029..d71c8a1 100644
--- a/services/core/java/com/android/server/input/InputGestureManager.java
+++ b/services/core/java/com/android/server/input/InputGestureManager.java
@@ -146,11 +146,6 @@
                         KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL
                 ),
                 createKeyGesture(
-                        KeyEvent.KEYCODE_N,
-                        KeyEvent.META_META_ON | KeyEvent.META_CTRL_ON,
-                        KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES
-                ),
-                createKeyGesture(
                         KeyEvent.KEYCODE_S,
                         KeyEvent.META_META_ON,
                         KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 0e37238..c2fecf2 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -143,6 +143,7 @@
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.Preconditions;
 import com.android.server.DisplayThread;
+import com.android.server.IoThread;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.Watchdog;
@@ -469,11 +470,13 @@
     static class Injector {
         private final Context mContext;
         private final Looper mLooper;
+        private final Looper mIoLooper;
         private final UEventManager mUEventManager;
 
-        Injector(Context context, Looper looper, UEventManager uEventManager) {
+        Injector(Context context, Looper looper, Looper ioLooper, UEventManager uEventManager) {
             mContext = context;
             mLooper = looper;
+            mIoLooper = ioLooper;
             mUEventManager = uEventManager;
         }
 
@@ -485,6 +488,10 @@
             return mLooper;
         }
 
+        Looper getIoLooper() {
+            return mIoLooper;
+        }
+
         UEventManager getUEventManager() {
             return mUEventManager;
         }
@@ -505,8 +512,8 @@
     }
 
     public InputManagerService(Context context) {
-        this(new Injector(context, DisplayThread.get().getLooper(), new UEventManager() {}),
-                context.getSystemService(PermissionEnforcer.class));
+        this(new Injector(context, DisplayThread.get().getLooper(), IoThread.get().getLooper(),
+                new UEventManager() {}), context.getSystemService(PermissionEnforcer.class));
     }
 
     @VisibleForTesting
@@ -532,7 +539,7 @@
         mStickyModifierStateController = new StickyModifierStateController();
         mInputDataStore = new InputDataStore();
         mKeyGestureController = new KeyGestureController(mContext, injector.getLooper(),
-                mInputDataStore);
+                injector.getIoLooper(), mInputDataStore);
         mKeyboardLedController = new KeyboardLedController(mContext, injector.getLooper(),
                 mNative);
         mKeyRemapper = new KeyRemapper(mContext, mNative, mDataStore, injector.getLooper());
diff --git a/services/core/java/com/android/server/input/KeyGestureController.java b/services/core/java/com/android/server/input/KeyGestureController.java
index 5770a09..fba0b04 100644
--- a/services/core/java/com/android/server/input/KeyGestureController.java
+++ b/services/core/java/com/android/server/input/KeyGestureController.java
@@ -121,6 +121,7 @@
 
     private final Context mContext;
     private final Handler mHandler;
+    private final Handler mIoHandler;
     private final int mSystemPid;
     private final KeyCombinationManager mKeyCombinationManager;
     private final SettingsObserver mSettingsObserver;
@@ -171,9 +172,11 @@
 
     private final boolean mVisibleBackgroundUsersEnabled = isVisibleBackgroundUsersEnabled();
 
-    KeyGestureController(Context context, Looper looper, InputDataStore inputDataStore) {
+    KeyGestureController(Context context, Looper looper, Looper ioLooper,
+            InputDataStore inputDataStore) {
         mContext = context;
         mHandler = new Handler(looper, this::handleMessage);
+        mIoHandler = new Handler(ioLooper, this::handleIoMessage);
         mSystemPid = Process.myPid();
         mKeyGestureHandlerRecords = new TreeMap<>((p1, p2) -> {
             if (Objects.equals(p1, p2)) {
@@ -458,7 +461,7 @@
             userId = mCurrentUserId;
         }
         // Load the system user's input gestures.
-        mHandler.obtainMessage(MSG_LOAD_CUSTOM_GESTURES, userId).sendToTarget();
+        mIoHandler.obtainMessage(MSG_LOAD_CUSTOM_GESTURES, userId).sendToTarget();
     }
 
     public boolean interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
@@ -1032,7 +1035,7 @@
         synchronized (mUserLock) {
             mCurrentUserId = userId;
         }
-        mHandler.obtainMessage(MSG_LOAD_CUSTOM_GESTURES, userId).sendToTarget();
+        mIoHandler.obtainMessage(MSG_LOAD_CUSTOM_GESTURES, userId).sendToTarget();
     }
 
     @MainThread
@@ -1073,6 +1076,12 @@
                 AidlKeyGestureEvent event = (AidlKeyGestureEvent) msg.obj;
                 notifyKeyGestureEvent(event);
                 break;
+        }
+        return true;
+    }
+
+    private boolean handleIoMessage(Message msg) {
+        switch (msg.what) {
             case MSG_PERSIST_CUSTOM_GESTURES: {
                 final int userId = (Integer) msg.obj;
                 persistInputGestures(userId);
@@ -1083,7 +1092,6 @@
                 loadInputGestures(userId);
                 break;
             }
-
         }
         return true;
     }
@@ -1144,7 +1152,7 @@
         final int result = mInputGestureManager.addCustomInputGesture(userId,
                 new InputGestureData(inputGestureData));
         if (result == InputManager.CUSTOM_INPUT_GESTURE_RESULT_SUCCESS) {
-            mHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
+            mIoHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
         }
         return result;
     }
@@ -1156,7 +1164,7 @@
         final int result = mInputGestureManager.removeCustomInputGesture(userId,
                 new InputGestureData(inputGestureData));
         if (result == InputManager.CUSTOM_INPUT_GESTURE_RESULT_SUCCESS) {
-            mHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
+            mIoHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
         }
         return result;
     }
@@ -1165,7 +1173,7 @@
     public void removeAllCustomInputGestures(@UserIdInt int userId,
             @Nullable InputGestureData.Filter filter) {
         mInputGestureManager.removeAllCustomInputGestures(userId, filter);
-        mHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
+        mIoHandler.obtainMessage(MSG_PERSIST_CUSTOM_GESTURES, userId).sendToTarget();
     }
 
     @BinderThread
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
index 2ea6117..1a29150 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointBroker.java
@@ -374,6 +374,34 @@
         }
     }
 
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(mEndpointInfo).append(", ");
+        sb.append("package: ").append(mPackageName).append(", ");
+        synchronized (mWakeLock) {
+            sb.append("wakelock: ").append(mWakeLock);
+        }
+        synchronized (mOpenSessionLock) {
+            if (mSessionInfoMap.size() != 0) {
+                sb.append(System.lineSeparator());
+                sb.append(" sessions: ");
+                sb.append(System.lineSeparator());
+            }
+            for (int i = 0; i < mSessionInfoMap.size(); i++) {
+                int id = mSessionInfoMap.keyAt(i);
+                int count = i + 1;
+                sb.append(
+                        "  " + count + ". id="
+                                + id
+                                + ", remote:"
+                                + mSessionInfoMap.get(id).getRemoteEndpointInfo());
+                sb.append(System.lineSeparator());
+            }
+        }
+        return sb.toString();
+    }
+
     /**
      * Registers this endpoints with the Context Hub HAL.
      *
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
index 06aeb62..30bb8f3 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
@@ -16,6 +16,7 @@
 
 package com.android.server.location.contexthub;
 
+import android.annotation.IntDef;
 import android.content.Context;
 import android.hardware.contexthub.ContextHubInfo;
 import android.hardware.contexthub.EndpointInfo;
@@ -34,8 +35,11 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -105,6 +109,48 @@
     /** The interface for endpoint communication (retrieved from HAL in init()) */
     private IEndpointCommunication mHubInterface = null;
 
+    /*
+     * The list of previous registration records.
+     */
+    private static final int NUM_CLIENT_RECORDS = 20;
+    private final ConcurrentLinkedEvictingDeque<RegistrationRecord> mRegistrationRecordDeque =
+            new ConcurrentLinkedEvictingDeque<>(NUM_CLIENT_RECORDS);
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(
+            prefix = {"ACTION_"},
+            value = {
+                ACTION_REGISTERED,
+                ACTION_UNREGISTERED,
+            })
+    public @interface Action {}
+
+    public static final int ACTION_REGISTERED = 0;
+    public static final int ACTION_UNREGISTERED = 1;
+
+    /** A container class to store a record of ContextHubEndpointBroker registrations. */
+    private class RegistrationRecord {
+        private final String mBroker;
+        private final int mAction;
+        private final long mTimestamp;
+
+        RegistrationRecord(String broker, @Action int action) {
+            mBroker = broker;
+            mAction = action;
+            mTimestamp = System.currentTimeMillis();
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(ContextHubServiceUtil.formatDateFromTimestamp(mTimestamp));
+            sb.append(" ");
+            sb.append(mAction == ACTION_REGISTERED ? "+ " : "- ");
+            sb.append(mBroker);
+            return sb.toString();
+        }
+    }
+
     /* package */ ContextHubEndpointManager(
             Context context,
             IContextHubWrapper contextHubProxy,
@@ -228,6 +274,7 @@
             return null;
         }
 
+        mRegistrationRecordDeque.add(new RegistrationRecord(broker.toString(), ACTION_REGISTERED));
         Log.d(TAG, "Registered endpoint with ID = " + endpointId);
         return IContextHubEndpoint.Stub.asInterface(broker);
     }
@@ -274,7 +321,11 @@
      * @param endpointId The ID of the endpoint to unregister.
      */
     /* package */ void unregisterEndpoint(long endpointId) {
-        mEndpointMap.remove(endpointId);
+        ContextHubEndpointBroker broker = mEndpointMap.remove(endpointId);
+        if (broker != null) {
+            mRegistrationRecordDeque.add(
+                    new RegistrationRecord(broker.toString(), ACTION_UNREGISTERED));
+        }
     }
 
     /** Invoked by the service when the Context Hub HAL restarts. */
@@ -366,6 +417,27 @@
         }
     }
 
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        int count = 1;
+        for (ContextHubEndpointBroker broker : mEndpointMap.values()) {
+            sb.append(count + ". " + broker);
+            sb.append(System.lineSeparator());
+            count++;
+        }
+
+        sb.append(System.lineSeparator());
+        sb.append("Registration History:");
+        sb.append(System.lineSeparator());
+        Iterator<RegistrationRecord> it = mRegistrationRecordDeque.descendingIterator();
+        while (it.hasNext()) {
+            sb.append(it.next());
+            sb.append(System.lineSeparator());
+        }
+        return sb.toString();
+    }
+
     /**
      * Invokes a callback for a session with matching ID.
      *
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubService.java b/services/core/java/com/android/server/location/contexthub/ContextHubService.java
index 502a7ae..bf7351c 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubService.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubService.java
@@ -1579,6 +1579,12 @@
         pw.println("=================== CLIENTS ====================");
         pw.println(mClientManager);
 
+        if (mEndpointManager != null) {
+            pw.println("");
+            pw.println("=================== ENDPOINTS ====================");
+            pw.println(mEndpointManager);
+        }
+
         pw.println("");
         pw.println("=================== TRANSACTIONS ====================");
         pw.println(mTransactionManager);
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS b/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
index bb487fb..ebf7e6b 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
@@ -1,4 +1,3 @@
 aseemk@google.com
 bozhu@google.com
 dementyev@google.com
-robertberry@google.com
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 352985d..136cb12 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -948,6 +948,7 @@
                     break;
                 case MSG_ON_NATIVE_LIBS_EXTRACTED:
                     handleOnNativeLibsExtracted();
+                    break;
             }
 
             return true;
diff --git a/services/core/java/com/android/server/pm/ShortcutLauncher.java b/services/core/java/com/android/server/pm/ShortcutLauncher.java
index 045d4db..346327d 100644
--- a/services/core/java/com/android/server/pm/ShortcutLauncher.java
+++ b/services/core/java/com/android/server/pm/ShortcutLauncher.java
@@ -453,7 +453,7 @@
     @Override
     protected File getShortcutPackageItemFile() {
         final File path = new File(mShortcutUser.mService.injectUserDataPath(
-                mShortcutUser.getUserId()), ShortcutUser.DIRECTORY_LUANCHERS);
+                mShortcutUser.getUserId()), ShortcutUser.DIRECTORY_LAUNCHERS);
         // Package user id and owner id can have different values for ShortcutLaunchers. Adding
         // user Id to the file name to create a unique path. Owner id is used in the root path.
         final String fileName = getPackageName() + getPackageUserId() + ".xml";
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 373c1ed..d351305 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -16,7 +16,9 @@
 package com.android.server.pm;
 
 import static android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_DENIED;
-import static android.provider.DeviceConfig.NAMESPACE_SYSTEMUI;
+
+import static com.android.server.pm.ShortcutUser.DIRECTORY_LAUNCHERS;
+import static com.android.server.pm.ShortcutUser.DIRECTORY_PACKAGES;
 
 import android.Manifest.permission;
 import android.annotation.IntDef;
@@ -94,7 +96,6 @@
 import android.os.SystemClock;
 import android.os.Trace;
 import android.os.UserHandle;
-import android.provider.DeviceConfig;
 import android.text.TextUtils;
 import android.text.format.TimeMigrationUtils;
 import android.util.ArraySet;
@@ -112,7 +113,6 @@
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.CollectionUtils;
 import com.android.internal.util.DumpUtils;
@@ -155,7 +155,6 @@
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 
 /**
  * TODO:
@@ -171,7 +170,7 @@
     static final boolean DEBUG = false; // STOPSHIP if true
     static final boolean DEBUG_LOAD = false; // STOPSHIP if true
     static final boolean DEBUG_PROCSTATE = false; // STOPSHIP if true
-    static final boolean DEBUG_REBOOT = Build.IS_DEBUGGABLE;
+    static final boolean DEBUG_REBOOT = false; // STOPSHIP if true
 
     @VisibleForTesting
     static final long DEFAULT_RESET_INTERVAL_SEC = 24 * 60 * 60; // 1 day
@@ -292,7 +291,8 @@
 
     final Context mContext;
 
-    private final Object mServiceLock = new Object();
+    @VisibleForTesting
+    final Object mServiceLock = new Object();
     private final Object mNonPersistentUsersLock = new Object();
     private final Object mWtfLock = new Object();
 
@@ -982,7 +982,7 @@
     }
 
     @VisibleForTesting
-    void saveBaseState() {
+    void injectSaveBaseState() {
         try (ResilientAtomicFile file = getBaseStateFile()) {
             if (DEBUG || DEBUG_REBOOT) {
                 Slog.d(TAG, "Saving to " + file.getBaseFile());
@@ -994,18 +994,7 @@
                     outs = file.startWrite();
                 }
 
-                // Write to XML
-                TypedXmlSerializer out = Xml.resolveSerializer(outs);
-                out.startDocument(null, true);
-                out.startTag(null, TAG_ROOT);
-
-                // Body.
-                // No locking required. Ok to add lock later if we save more data.
-                writeTagValue(out, TAG_LAST_RESET_TIME, mRawLastResetTime.get());
-
-                // Epilogue.
-                out.endTag(null, TAG_ROOT);
-                out.endDocument();
+                saveBaseStateAsXml(outs);
 
                 // Close.
                 injectFinishWrite(file, outs);
@@ -1016,10 +1005,32 @@
         }
     }
 
+    @VisibleForTesting
+    protected void saveBaseStateAsXml(OutputStream outs) throws IOException {
+        // Write to XML
+        TypedXmlSerializer out = Xml.resolveSerializer(outs);
+        out.startDocument(null, true);
+        out.startTag(null, TAG_ROOT);
+
+        // Body.
+        // No locking required. Ok to add lock later if we save more data.
+        writeTagValue(out, TAG_LAST_RESET_TIME, mRawLastResetTime.get());
+
+        // Epilogue.
+        out.endTag(null, TAG_ROOT);
+        out.endDocument();
+    }
+
     @GuardedBy("mServiceLock")
     private void loadBaseStateLocked() {
         mRawLastResetTime.set(0);
+        injectLoadBaseState();
+        // Adjust the last reset time.
+        getLastResetTimeLocked();
+    }
 
+    @VisibleForTesting
+    protected void injectLoadBaseState() {
         try (ResilientAtomicFile file = getBaseStateFile()) {
             if (DEBUG || DEBUG_REBOOT) {
                 Slog.d(TAG, "Loading from " + file.getBaseFile());
@@ -1030,34 +1041,7 @@
                 if (in == null) {
                     throw new FileNotFoundException(file.getBaseFile().getAbsolutePath());
                 }
-
-                TypedXmlPullParser parser = Xml.resolvePullParser(in);
-
-                int type;
-                while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {
-                    if (type != XmlPullParser.START_TAG) {
-                        continue;
-                    }
-                    final int depth = parser.getDepth();
-                    // Check the root tag
-                    final String tag = parser.getName();
-                    if (depth == 1) {
-                        if (!TAG_ROOT.equals(tag)) {
-                            Slog.v(TAG, "Invalid root tag: " + tag);
-                            return;
-                        }
-                        continue;
-                    }
-                    // Assume depth == 2
-                    switch (tag) {
-                        case TAG_LAST_RESET_TIME:
-                            mRawLastResetTime.set(parseLongAttribute(parser, ATTR_VALUE));
-                            break;
-                        default:
-                            Slog.v(TAG, "Invalid tag: " + tag);
-                            break;
-                    }
-                }
+                loadBaseStateAsXml(in);
             } catch (FileNotFoundException e) {
                 // Use the default
             } catch (IOException | XmlPullParserException e) {
@@ -1067,8 +1051,38 @@
                 return;
             }
         }
-        // Adjust the last reset time.
-        getLastResetTimeLocked();
+    }
+
+    @VisibleForTesting
+    protected void loadBaseStateAsXml(InputStream in)
+            throws IOException, XmlPullParserException {
+        TypedXmlPullParser parser = Xml.resolvePullParser(in);
+
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {
+            if (type != XmlPullParser.START_TAG) {
+                continue;
+            }
+            final int depth = parser.getDepth();
+            // Check the root tag
+            final String tag = parser.getName();
+            if (depth == 1) {
+                if (!TAG_ROOT.equals(tag)) {
+                    Slog.v(TAG, "Invalid root tag: " + tag);
+                    return;
+                }
+                continue;
+            }
+            // Assume depth == 2
+            switch (tag) {
+                case TAG_LAST_RESET_TIME:
+                    mRawLastResetTime.set(parseLongAttribute(parser, ATTR_VALUE));
+                    break;
+                default:
+                    Slog.v(TAG, "Invalid tag: " + tag);
+                    break;
+            }
+        }
     }
 
     @VisibleForTesting
@@ -1083,7 +1097,8 @@
                 "user shortcut", null);
     }
 
-    private void saveUser(@UserIdInt int userId) {
+    @VisibleForTesting
+    protected void injectSaveUser(@UserIdInt int userId) {
         try (ResilientAtomicFile file = getUserFile(userId)) {
             FileOutputStream os = null;
             try {
@@ -1092,8 +1107,14 @@
                 }
 
                 synchronized (mServiceLock) {
+                    // Since we are not handling package deletion yet, or any single package
+                    // changes, just clean the directory and rewrite all the ShortcutPackageItems.
+                    final File root = injectUserDataPath(userId);
+                    FileUtils.deleteContents(new File(root, DIRECTORY_PACKAGES));
+                    FileUtils.deleteContents(new File(root, DIRECTORY_LAUNCHERS));
                     os = file.startWrite();
                     saveUserInternalLocked(userId, os, /* forBackup= */ false);
+                    getUserShortcutsLocked(userId).scheduleSaveAllLaunchersAndPackages();
                 }
 
                 injectFinishWrite(file, os);
@@ -1109,8 +1130,9 @@
         getUserShortcutsLocked(userId).logSharingShortcutStats(mMetricsLogger);
     }
 
+    @VisibleForTesting
     @GuardedBy("mServiceLock")
-    private void saveUserInternalLocked(@UserIdInt int userId, OutputStream os,
+    protected void saveUserInternalLocked(@UserIdInt int userId, OutputStream os,
             boolean forBackup) throws IOException, XmlPullParserException {
 
         // Write to XML
@@ -1138,8 +1160,9 @@
         Slog.w(TAG, String.format("Invalid tag '%s' found at depth %d", tag, depth));
     }
 
+    @VisibleForTesting
     @Nullable
-    private ShortcutUser loadUserLocked(@UserIdInt int userId) {
+    protected ShortcutUser injectLoadUserLocked(@UserIdInt int userId) {
         try (ResilientAtomicFile file = getUserFile(userId)) {
             FileInputStream in = null;
             try {
@@ -1157,12 +1180,13 @@
             } catch (Exception e) {
                 // Remove corrupted file and retry.
                 file.failRead(in, e);
-                return loadUserLocked(userId);
+                return injectLoadUserLocked(userId);
             }
         }
     }
 
-    private ShortcutUser loadUserInternal(@UserIdInt int userId, InputStream is,
+    @VisibleForTesting
+    protected ShortcutUser loadUserInternal(@UserIdInt int userId, InputStream is,
             boolean fromBackup) throws XmlPullParserException, IOException,
             InvalidFileFormatException {
 
@@ -1240,9 +1264,9 @@
             for (int i = dirtyUserIds.size() - 1; i >= 0; i--) {
                 final int userId = dirtyUserIds.get(i);
                 if (userId == UserHandle.USER_NULL) { // USER_NULL for base state.
-                    saveBaseState();
+                    injectSaveBaseState();
                 } else {
-                    saveUser(userId);
+                    injectSaveUser(userId);
                 }
             }
         } catch (Exception e) {
@@ -1349,7 +1373,7 @@
 
         ShortcutUser userPackages = mUsers.get(userId);
         if (userPackages == null) {
-            userPackages = loadUserLocked(userId);
+            userPackages = injectLoadUserLocked(userId);
             if (userPackages == null) {
                 userPackages = new ShortcutUser(this, userId);
             }
@@ -1430,8 +1454,9 @@
      * {@link ShortcutBitmapSaver#waitForAllSavesLocked()} to make sure there's no pending bitmap
      * saves are going on.
      */
+    @VisibleForTesting
     @GuardedBy("mServiceLock")
-    private void cleanupDanglingBitmapDirectoriesLocked(@UserIdInt int userId) {
+    void cleanupDanglingBitmapDirectoriesLocked(@UserIdInt int userId) {
         if (DEBUG) {
             Slog.d(TAG, "cleanupDanglingBitmaps: userId=" + userId);
         }
@@ -2755,7 +2780,7 @@
             getPackageShortcutsLocked(packageName, userId)
                     .resetRateLimitingForCommandLineNoSaving();
         }
-        saveUser(userId);
+        injectSaveUser(userId);
     }
 
     // We override this method in unit tests to do a simpler check.
@@ -4407,7 +4432,7 @@
                 pw.println();
             });
         }
-        saveUser(userId);
+        injectSaveUser(userId);
     }
 
     // === Dump ===
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index bc8cc7b..632fd16 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -21,16 +21,12 @@
 import android.content.pm.ShortcutManager;
 import android.content.pm.UserPackage;
 import android.metrics.LogMaker;
-import android.os.Binder;
-import android.os.FileUtils;
-import android.os.UserHandle;
 import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Slog;
 
-import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -49,8 +45,6 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
 import java.util.function.Consumer;
 
@@ -63,7 +57,7 @@
     private static final String TAG = ShortcutService.TAG;
 
     static final String DIRECTORY_PACKAGES = "packages";
-    static final String DIRECTORY_LUANCHERS = "launchers";
+    static final String DIRECTORY_LAUNCHERS = "launchers";
 
     static final String TAG_ROOT = "user";
     private static final String TAG_LAUNCHER = "launcher";
@@ -322,41 +316,43 @@
                     mService.injectBuildFingerprint());
         }
 
-        if (!forBackup) {
-            // Since we are not handling package deletion yet, or any single package changes, just
-            // clean the directory and rewrite all the ShortcutPackageItems.
-            final File root = mService.injectUserDataPath(mUserId);
-            FileUtils.deleteContents(new File(root, DIRECTORY_PACKAGES));
-            FileUtils.deleteContents(new File(root, DIRECTORY_LUANCHERS));
-        }
         // Can't use forEachPackageItem due to the checked exceptions.
-        {
-            final int size = mLaunchers.size();
+        if (forBackup) {
+            int size = mLaunchers.size();
             for (int i = 0; i < size; i++) {
-                saveShortcutPackageItem(out, mLaunchers.valueAt(i), forBackup);
+                saveShortcutPackageItem(out, mLaunchers.valueAt(i));
             }
-        }
-        {
-            final int size = mPackages.size();
+            size = mPackages.size();
             for (int i = 0; i < size; i++) {
-                saveShortcutPackageItem(out, mPackages.valueAt(i), forBackup);
+                saveShortcutPackageItem(out, mPackages.valueAt(i));
             }
         }
 
         out.endTag(null, TAG_ROOT);
     }
 
-    private void saveShortcutPackageItem(TypedXmlSerializer out, ShortcutPackageItem spi,
-            boolean forBackup) throws IOException, XmlPullParserException {
-        if (forBackup) {
-            if (spi.getPackageUserId() != spi.getOwnerUserId()) {
-                return; // Don't save cross-user information.
+    void scheduleSaveAllLaunchersAndPackages() {
+        {
+            final int size = mLaunchers.size();
+            for (int i = 0; i < size; i++) {
+                mLaunchers.valueAt(i).scheduleSave();
             }
-            spi.waitForBitmapSaves();
-            spi.saveToXml(out, forBackup);
-        } else {
-            spi.scheduleSave();
         }
+        {
+            final int size = mPackages.size();
+            for (int i = 0; i < size; i++) {
+                mPackages.valueAt(i).scheduleSave();
+            }
+        }
+    }
+
+    private void saveShortcutPackageItem(TypedXmlSerializer out, ShortcutPackageItem spi)
+            throws IOException, XmlPullParserException {
+        if (spi.getPackageUserId() != spi.getOwnerUserId()) {
+            return; // Don't save cross-user information.
+        }
+        spi.waitForBitmapSaves();
+        spi.saveToXml(out, true /* forBackup */);
     }
 
     public static ShortcutUser loadFromXml(ShortcutService s, TypedXmlPullParser parser, int userId,
@@ -429,7 +425,7 @@
                 }
             });
 
-            forMainFilesIn(new File(root, DIRECTORY_LUANCHERS), (File f) -> {
+            forMainFilesIn(new File(root, DIRECTORY_LAUNCHERS), (File f) -> {
                 final ShortcutLauncher sl =
                         ShortcutLauncher.loadFromFile(f, ret, userId, fromBackup);
                 if (sl != null) {
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java
index 44d787f..c31c287 100644
--- a/services/core/java/com/android/server/policy/PermissionPolicyService.java
+++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java
@@ -82,12 +82,10 @@
 import android.util.Slog;
 import android.util.SparseBooleanArray;
 
-import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.IAppOpsCallback;
 import com.android.internal.app.IAppOpsService;
 import com.android.internal.infra.AndroidFuture;
-import com.android.internal.policy.AttributeCache;
 import com.android.internal.util.IntPair;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.FgThread;
@@ -167,6 +165,7 @@
     private Context mContext;
     private PackageManagerInternal mPackageManagerInternal;
     private PermissionManagerServiceInternal mPermissionManagerInternal;
+    private ActivityTaskManagerInternal mActivityTaskManagerInternal;
     private NotificationManagerInternal mNotificationManager;
     private TelephonyManager mTelephonyManager;
     private final KeyguardManager mKeyguardManager;
@@ -189,6 +188,7 @@
                 PackageManagerInternal.class);
         mPermissionManagerInternal = LocalServices.getService(
                 PermissionManagerServiceInternal.class);
+        mActivityTaskManagerInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
         final IAppOpsService appOpsService = IAppOpsService.Stub.asInterface(
                 ServiceManager.getService(Context.APP_OPS_SERVICE));
 
@@ -1154,7 +1154,7 @@
                                 activityInfo.packageName, info.getCallingPackage(),
                                 info.getIntent(), info.getCheckedOptions(), activityInfo.name,
                                 true)
-                                || isNoDisplayActivity(activityInfo)) {
+                                || isNoDisplayActivity(activityInfo, info.getUserId())) {
                             return;
                         }
                         UserHandle user = UserHandle.of(taskInfo.userId);
@@ -1170,9 +1170,7 @@
                 };
 
         private void onActivityManagerReady() {
-            ActivityTaskManagerInternal atm =
-                    LocalServices.getService(ActivityTaskManagerInternal.class);
-            atm.registerActivityStartInterceptor(
+            mActivityTaskManagerInternal.registerActivityStartInterceptor(
                     ActivityInterceptorCallback.PERMISSION_POLICY_ORDERED_ID,
                     mActivityInterceptorCallback);
         }
@@ -1227,20 +1225,14 @@
                     null, activityName, false);
         }
 
-        private boolean isNoDisplayActivity(@NonNull ActivityInfo aInfo) {
+        private boolean isNoDisplayActivity(@NonNull ActivityInfo aInfo, int userId) {
             final int themeResource = aInfo.getThemeResource();
             if (themeResource == Resources.ID_NULL) {
                 return false;
             }
 
-            boolean noDisplay = false;
-            final AttributeCache.Entry ent = AttributeCache.instance()
-                    .get(aInfo.packageName, themeResource, R.styleable.Window, 0);
-            if (ent != null) {
-                noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
-            }
-
-            return noDisplay;
+            return mActivityTaskManagerInternal.isNoDisplay(aInfo.packageName, themeResource,
+                    userId);
         }
 
         /**
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 76c5240..980fb155 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1163,6 +1163,15 @@
         }
     }
 
+    private boolean shouldShowHub() {
+        final boolean hubEnabled = Settings.Secure.getIntForUser(
+                mContext.getContentResolver(), Settings.Secure.GLANCEABLE_HUB_ENABLED,
+                1, mCurrentUserId) == 1;
+
+        return mUserManagerInternal != null && mUserManagerInternal.isUserUnlocked(mCurrentUserId)
+                && hubEnabled && mDreamManagerInternal.dreamConditionActive();
+    }
+
     @VisibleForTesting
     void powerPress(long eventTime, int count, int displayId) {
         // SideFPS still needs to know about suppressed power buttons, in case it needs to block
@@ -1251,7 +1260,8 @@
                             mContext.getContentResolver(), Settings.Secure.GLANCEABLE_HUB_ENABLED,
                             1, mCurrentUserId) == 1;
 
-                    if (mDreamManagerInternal.isDreaming() || isKeyguardShowing()) {
+                    if ((mDreamManagerInternal != null && mDreamManagerInternal.isDreaming())
+                            || isKeyguardShowing()) {
                         // If the device is already dreaming or on keyguard, go to sleep.
                         sleepDefaultDisplayFromPowerButton(eventTime, 0);
                         break;
@@ -1261,9 +1271,10 @@
                     // show hub.
                     boolean keyguardAvailable = !mLockPatternUtils.isLockScreenDisabled(
                             mCurrentUserId);
-                    if (mUserManagerInternal.isUserUnlocked(mCurrentUserId) && hubEnabled
-                            && keyguardAvailable && mDreamManagerInternal.dreamConditionActive()) {
-                        // If the hub can be launched, send a message to keyguard.
+                    if (shouldShowHub() && keyguardAvailable) {
+                        // If the hub can be launched, send a message to keyguard. We do not know if
+                        // the hub is already running or not, keyguard handles turning screen off if
+                        // it is.
                         Bundle options = new Bundle();
                         options.putBoolean(EXTRA_TRIGGER_HUB, true);
                         lockNow(options);
@@ -1324,14 +1335,14 @@
      * @param isScreenOn Whether the screen is currently on.
      * @param noDreamAction The action to perform if dreaming is not possible.
      */
-    private void attemptToDreamFromShortPowerButtonPress(
+    private boolean attemptToDreamFromShortPowerButtonPress(
             boolean isScreenOn, Runnable noDreamAction) {
         if (mShortPressOnPowerBehavior != SHORT_PRESS_POWER_DREAM_OR_SLEEP
                 && mShortPressOnPowerBehavior != SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP) {
             // If the power button behavior isn't one that should be able to trigger the dream, give
             // up.
             noDreamAction.run();
-            return;
+            return false;
         }
 
         final DreamManagerInternal dreamManagerInternal = getDreamManagerInternal();
@@ -1339,7 +1350,7 @@
             Slog.d(TAG, "Can't start dreaming when attempting to dream from short power"
                     + " press (isScreenOn=" + isScreenOn + ")");
             noDreamAction.run();
-            return;
+            return false;
         }
 
         synchronized (mLock) {
@@ -1350,6 +1361,8 @@
         }
 
         dreamManagerInternal.requestDream();
+
+        return true;
     }
 
     /**
@@ -2327,6 +2340,10 @@
         WindowWakeUpPolicy getWindowWakeUpPolicy() {
             return new WindowWakeUpPolicy(mContext);
         }
+
+        DreamManagerInternal getDreamManagerInternal() {
+            return LocalServices.getService(DreamManagerInternal.class);
+        }
     }
 
     /** {@inheritDoc} */
@@ -2345,7 +2362,7 @@
         mActivityTaskManagerInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
         mInputManager = mContext.getSystemService(InputManager.class);
         mInputManagerInternal = LocalServices.getService(InputManagerInternal.class);
-        mDreamManagerInternal = LocalServices.getService(DreamManagerInternal.class);
+        mDreamManagerInternal = injector.getDreamManagerInternal();
         mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
         mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
         mSensorPrivacyManager = mContext.getSystemService(SensorPrivacyManager.class);
@@ -3701,15 +3718,9 @@
                 break;
             case KeyEvent.KEYCODE_N:
                 if (firstDown && event.isMetaPressed()) {
-                    if (event.isCtrlPressed()) {
-                        sendSystemKeyToStatusBarAsync(event);
-                        notifyKeyGestureCompleted(event,
-                                KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES);
-                    } else {
-                        toggleNotificationPanel();
-                        notifyKeyGestureCompleted(event,
-                                KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL);
-                    }
+                    toggleNotificationPanel();
+                    notifyKeyGestureCompleted(event,
+                            KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL);
                     return true;
                 }
                 break;
@@ -6398,6 +6409,17 @@
                 event.getDisplayId(), event.getKeyCode(), "wakeUpFromWakeKey")) {
             return;
         }
+
+        if (!shouldShowHub()
+                && mShortPressOnPowerBehavior == SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP
+                && event.getKeyCode() == KEYCODE_POWER
+                && attemptToDreamFromShortPowerButtonPress(false, () -> {})) {
+            // In the case that we should wake to dream and successfully initiate dreaming, do not
+            // continue waking up. Doing so will exit the dream state and cause UI to react
+            // accordingly.
+            return;
+        }
+
         wakeUpFromWakeKey(
                 event.getEventTime(),
                 event.getKeyCode(),
diff --git a/services/core/java/com/android/server/power/stats/format/ScreenPowerStatsLayout.java b/services/core/java/com/android/server/power/stats/format/ScreenPowerStatsLayout.java
index 6f6a7ff..ca22375 100644
--- a/services/core/java/com/android/server/power/stats/format/ScreenPowerStatsLayout.java
+++ b/services/core/java/com/android/server/power/stats/format/ScreenPowerStatsLayout.java
@@ -29,7 +29,8 @@
 public class ScreenPowerStatsLayout extends PowerStatsLayout {
     private static final String EXTRA_DEVICE_SCREEN_COUNT = "dsc";
     private static final String EXTRA_DEVICE_SCREEN_ON_DURATION_POSITION = "dsd";
-    private static final String EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS = "dbd";
+    private static final String EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS = "dbds";
+    private static final String EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS_COMPAT = "dbd";
     private static final String EXTRA_DEVICE_DOZE_DURATION_POSITION = "ddd";
     private static final String EXTRA_DEVICE_DOZE_POWER_POSITION = "ddp";
     private static final String EXTRA_UID_FOREGROUND_DURATION = "uf";
@@ -55,8 +56,14 @@
         PersistableBundle extras = descriptor.extras;
         mDisplayCount = extras.getInt(EXTRA_DEVICE_SCREEN_COUNT, 1);
         mDeviceScreenOnDurationPosition = extras.getInt(EXTRA_DEVICE_SCREEN_ON_DURATION_POSITION);
-        mDeviceBrightnessDurationPositions = extras.getIntArray(
+        mDeviceBrightnessDurationPositions = getIntArray(extras,
                 EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS);
+        if (mDeviceBrightnessDurationPositions == null) {
+            // We should never put arrays in PowerStats.Descriptor because of the performance of
+            // .equals
+            mDeviceBrightnessDurationPositions = extras.getIntArray(
+                    EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS_COMPAT);
+        }
         mDeviceScreenDozeDurationPosition = extras.getInt(EXTRA_DEVICE_DOZE_DURATION_POSITION);
         mDeviceScreenDozePowerPosition = extras.getInt(EXTRA_DEVICE_DOZE_POWER_POSITION);
         mUidTopActivityTimePosition = extras.getInt(EXTRA_UID_FOREGROUND_DURATION);
@@ -67,7 +74,7 @@
         super.toExtras(extras);
         extras.putInt(EXTRA_DEVICE_SCREEN_COUNT, mDisplayCount);
         extras.putInt(EXTRA_DEVICE_SCREEN_ON_DURATION_POSITION, mDeviceScreenOnDurationPosition);
-        extras.putIntArray(EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS,
+        putIntArray(extras, EXTRA_DEVICE_BRIGHTNESS_DURATION_POSITIONS,
                 mDeviceBrightnessDurationPositions);
         extras.putInt(EXTRA_DEVICE_DOZE_DURATION_POSITION, mDeviceScreenDozeDurationPosition);
         extras.putInt(EXTRA_DEVICE_DOZE_POWER_POSITION, mDeviceScreenDozePowerPosition);
diff --git a/services/core/java/com/android/server/power/stats/format/SensorPowerStatsLayout.java b/services/core/java/com/android/server/power/stats/format/SensorPowerStatsLayout.java
index e8df3dd..c382534 100644
--- a/services/core/java/com/android/server/power/stats/format/SensorPowerStatsLayout.java
+++ b/services/core/java/com/android/server/power/stats/format/SensorPowerStatsLayout.java
@@ -27,8 +27,10 @@
 
 public class SensorPowerStatsLayout extends PowerStatsLayout {
     private static final String TAG = "SensorPowerStatsLayout";
-    private static final String EXTRA_DEVICE_SENSOR_HANDLES = "dsh";
+    private static final String EXTRA_DEVICE_SENSOR_HANDLES = "dshs";
+    private static final String EXTRA_DEVICE_SENSOR_HANDLES_COMPAT = "dsh";
     private static final String EXTRA_UID_SENSOR_POSITIONS = "usp";
+    private static final String EXTRA_UID_SENSOR_POSITIONS_COMPAT = "usps";
 
     private final SparseIntArray mSensorPositions = new SparseIntArray();
 
@@ -47,8 +49,14 @@
         super(descriptor);
 
         PersistableBundle extras = descriptor.extras;
-        int[] handlers = extras.getIntArray(EXTRA_DEVICE_SENSOR_HANDLES);
-        int[] uidDurationPositions = extras.getIntArray(EXTRA_UID_SENSOR_POSITIONS);
+        int[] handlers = getIntArray(extras, EXTRA_DEVICE_SENSOR_HANDLES);
+        if (handlers == null) {
+            handlers = extras.getIntArray(EXTRA_DEVICE_SENSOR_HANDLES_COMPAT);
+        }
+        int[] uidDurationPositions = getIntArray(extras, EXTRA_UID_SENSOR_POSITIONS);
+        if (uidDurationPositions == null) {
+            uidDurationPositions = extras.getIntArray(EXTRA_UID_SENSOR_POSITIONS_COMPAT);
+        }
 
         if (handlers != null && uidDurationPositions != null) {
             for (int i = 0; i < handlers.length; i++) {
@@ -69,8 +77,8 @@
             uidDurationPositions[i] = mSensorPositions.valueAt(i);
         }
 
-        extras.putIntArray(EXTRA_DEVICE_SENSOR_HANDLES, handlers);
-        extras.putIntArray(EXTRA_UID_SENSOR_POSITIONS, uidDurationPositions);
+        putIntArray(extras, EXTRA_DEVICE_SENSOR_HANDLES, handlers);
+        putIntArray(extras, EXTRA_UID_SENSOR_POSITIONS, uidDurationPositions);
     }
 
     private void addUidSensorSection(int handle, String label) {
diff --git a/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java b/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java
index a783d54..53894a1 100644
--- a/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java
+++ b/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java
@@ -25,6 +25,7 @@
 import android.os.UserHandle;
 import android.text.format.DateFormat;
 import android.util.IndentingPrintWriter;
+import android.util.IntArray;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
@@ -347,7 +348,10 @@
 
         Set<Integer> uids = new HashSet<>();
         for (int i = 0; i < mPowerComponentStats.size(); i++) {
-            mPowerComponentStats.valueAt(i).collectUids(uids);
+            IntArray activeUids = mPowerComponentStats.valueAt(i).getActiveUids();
+            for (int j = activeUids.size() - 1; j >= 0; j--) {
+                uids.add(activeUids.get(j));
+            }
         }
 
         Integer[] allUids = uids.toArray(new Integer[uids.size()]);
diff --git a/services/core/java/com/android/server/power/stats/processor/BasePowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/BasePowerStatsProcessor.java
index d24ea83..1d35933 100644
--- a/services/core/java/com/android/server/power/stats/processor/BasePowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/BasePowerStatsProcessor.java
@@ -24,13 +24,12 @@
 
 import android.os.BatteryConsumer;
 import android.os.PersistableBundle;
+import android.util.IntArray;
 
 import com.android.internal.os.PowerStats;
 import com.android.server.power.stats.format.BasePowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 import java.util.function.DoubleSupplier;
 
 class BasePowerStatsProcessor extends PowerStatsProcessor {
@@ -125,11 +124,12 @@
         mCumulativeDischargeUah = 0;
         mCumulativeDischargeDurationMs = 0;
 
-        List<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-
-        long durationMs = timestampMs - mStartTimestamp;
-        if (!uids.isEmpty()) {
+        // Note that we are calling `getUids` rather than `getActiveUids`, because this Processor
+        // deals with duration rather than power estimation, so it needs to process *all* known
+        // UIDs, not just the ones that contributed PowerStats
+        IntArray uids = stats.getUids();
+        if (uids.size() != 0) {
+            long durationMs = timestampMs - mStartTimestamp;
             for (int i = uids.size() - 1; i >= 0; i--) {
                 long[] uidStats = new long[sStatsLayout.getUidStatsArrayLength()];
                 sStatsLayout.setUidUsageDuration(uidStats, durationMs);
diff --git a/services/core/java/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessor.java
index 9fe7f3e..c89dddf 100644
--- a/services/core/java/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/BinaryStatePowerStatsProcessor.java
@@ -20,6 +20,7 @@
 import android.os.BatteryStats;
 import android.os.PersistableBundle;
 import android.os.Process;
+import android.util.IntArray;
 
 import com.android.internal.os.PowerStats;
 import com.android.server.power.stats.UsageBasedPowerEstimator;
@@ -27,7 +28,6 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -190,13 +190,13 @@
         }
 
         computeDevicePowerEstimates(stats, mPlan, mEnergyConsumerSupported);
-        combineDevicePowerEstimates(stats);
 
-        List<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-
-        computeUidActivityTotals(stats, uids);
-        computeUidPowerEstimates(stats, uids);
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            combineDevicePowerEstimates(stats);
+            computeUidActivityTotals(stats, uids);
+            computeUidPowerEstimates(stats, uids);
+        }
     }
 
     protected void computeDevicePowerEstimates(PowerComponentAggregatedPowerStats stats,
@@ -239,8 +239,7 @@
         }
     }
 
-    private void computeUidActivityTotals(PowerComponentAggregatedPowerStats stats,
-            List<Integer> uids) {
+    private void computeUidActivityTotals(PowerComponentAggregatedPowerStats stats, IntArray uids) {
         for (int i = mPlan.uidStateEstimates.size() - 1; i >= 0; i--) {
             UidStateEstimate uidStateEstimate = mPlan.uidStateEstimates.get(i);
             Intermediates intermediates =
@@ -259,8 +258,7 @@
         }
     }
 
-    private void computeUidPowerEstimates(PowerComponentAggregatedPowerStats stats,
-            List<Integer> uids) {
+    private void computeUidPowerEstimates(PowerComponentAggregatedPowerStats stats, IntArray uids) {
         for (int i = mPlan.uidStateEstimates.size() - 1; i >= 0; i--) {
             UidStateEstimate uidStateEstimate = mPlan.uidStateEstimates.get(i);
             Intermediates intermediates =
@@ -276,12 +274,13 @@
                     int uid = uids.get(k);
                     if (stats.getUidStats(mTmpUidStatsArray, uid,
                             proportionalEstimate.stateValues)) {
-                        double power = intermediates.power
-                                * mStatsLayout.getUidUsageDuration(mTmpUidStatsArray)
-                                / intermediates.duration;
-                        mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-                        stats.setUidStats(uid, proportionalEstimate.stateValues,
-                                mTmpUidStatsArray);
+                        long duration = mStatsLayout.getUidUsageDuration(mTmpUidStatsArray);
+                        if (duration != 0) {
+                            double power = intermediates.power * duration / intermediates.duration;
+                            mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                            stats.setUidStats(uid, proportionalEstimate.stateValues,
+                                    mTmpUidStatsArray);
+                        }
                     }
                 }
             }
diff --git a/services/core/java/com/android/server/power/stats/processor/BluetoothPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/BluetoothPowerStatsProcessor.java
index 4c1a0db..c1cd3ac 100644
--- a/services/core/java/com/android/server/power/stats/processor/BluetoothPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/BluetoothPowerStatsProcessor.java
@@ -16,12 +16,13 @@
 
 package com.android.server.power.stats.processor;
 
+import android.util.IntArray;
+
 import com.android.internal.os.PowerProfile;
 import com.android.internal.os.PowerStats;
 import com.android.server.power.stats.UsageBasedPowerEstimator;
 import com.android.server.power.stats.format.BluetoothPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.List;
 
 class BluetoothPowerStatsProcessor extends PowerStatsProcessor {
@@ -118,18 +119,19 @@
 
         combineDeviceStateEstimates();
 
-        ArrayList<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-        if (!uids.isEmpty()) {
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidActivityTotals(stats, uid, mPlan.uidStateEstimates.get(i));
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidActivityTotals(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
 
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(i));
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
         }
@@ -297,8 +299,10 @@
                             / intermediates.txBytes;
                 }
             }
-            mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-            stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            if (power != 0) {
+                mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
index 17ceca6..6ce2cf7 100644
--- a/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/CpuPowerStatsProcessor.java
@@ -19,6 +19,7 @@
 import android.annotation.Nullable;
 import android.os.BatteryConsumer;
 import android.util.ArraySet;
+import android.util.IntArray;
 import android.util.Log;
 
 import com.android.internal.os.CpuScalingPolicies;
@@ -27,7 +28,6 @@
 import com.android.server.power.stats.format.CpuPowerStatsLayout;
 import com.android.server.power.stats.format.WakelockPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -189,12 +189,12 @@
         estimatePowerByDeviceState(stats, intermediates, wakelockStats);
         combineDeviceStateEstimates();
 
-        ArrayList<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-        if (!uids.isEmpty()) {
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    estimateUidPowerConsumption(stats, uid, mPlan.uidStateEstimates.get(i),
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    estimateUidPowerConsumption(stats, uid, mPlan.uidStateEstimates.get(j),
                             wakelockStats);
                 }
             }
@@ -545,8 +545,10 @@
                 power = Math.max(0, power - wakelockPowerEstimate);
             }
 
-            mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-            stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            if (power != 0) {
+                mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor.java
index 76adc47..76ea7e8 100644
--- a/services/core/java/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor.java
@@ -16,10 +16,11 @@
 
 package com.android.server.power.stats.processor;
 
+import android.util.IntArray;
+
 import com.android.internal.os.PowerStats;
 import com.android.server.power.stats.format.EnergyConsumerPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.List;
 
 class CustomEnergyConsumerPowerStatsProcessor extends PowerStatsProcessor {
@@ -40,10 +41,8 @@
 
         computeDevicePowerEstimates(stats);
 
-        List<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-
-        if (!uids.isEmpty()) {
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
             computeUidPowerEstimates(stats, uids);
         }
     }
@@ -62,7 +61,7 @@
     }
 
     private void computeUidPowerEstimates(PowerComponentAggregatedPowerStats stats,
-            List<Integer> uids) {
+            IntArray uids) {
         for (int i = mPlan.uidStateEstimates.size() - 1; i >= 0; i--) {
             UidStateEstimate uidStateEstimate = mPlan.uidStateEstimates.get(i);
             List<UidStateProportionalEstimate> proportionalEstimates =
@@ -73,9 +72,12 @@
                     int uid = uids.get(k);
                     if (stats.getUidStats(mTmpUidStatsArray, uid,
                             proportionalEstimate.stateValues)) {
-                        sLayout.setUidPowerEstimate(mTmpUidStatsArray,
-                                uCtoMah(sLayout.getUidConsumedEnergy(mTmpUidStatsArray, 0)));
-                        stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+                        double power = uCtoMah(sLayout.getUidConsumedEnergy(mTmpUidStatsArray, 0));
+                        if (power != 0) {
+                            sLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                            stats.setUidStats(uid, proportionalEstimate.stateValues,
+                                    mTmpUidStatsArray);
+                        }
                     }
                 }
             }
diff --git a/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
index b4c40de8..a544daa 100644
--- a/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/MobileRadioPowerStatsProcessor.java
@@ -19,6 +19,7 @@
 import android.telephony.CellSignalStrength;
 import android.telephony.ModemActivityInfo;
 import android.telephony.ServiceState;
+import android.util.IntArray;
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -29,7 +30,6 @@
 import com.android.server.power.stats.UsageBasedPowerEstimator;
 import com.android.server.power.stats.format.MobileRadioPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -198,18 +198,19 @@
 
         combineDeviceStateEstimates();
 
-        ArrayList<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-        if (!uids.isEmpty()) {
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidRxTxTotals(stats, uid, mPlan.uidStateEstimates.get(i));
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidRxTxTotals(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
 
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(i));
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
         }
@@ -382,8 +383,10 @@
                         / intermediates.txPackets;
             }
 
-            mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-            stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            if (power != 0) {
+                mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            }
 
             if (DEBUG) {
                 Slog.d(TAG, "UID: " + uid
diff --git a/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java b/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
index 28474a5..6932575 100644
--- a/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
+++ b/services/core/java/com/android/server/power/stats/processor/MultiStateStats.java
@@ -16,6 +16,7 @@
 
 package com.android.server.power.stats.processor;
 
+import android.annotation.Nullable;
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -333,9 +334,9 @@
 
     /**
      * Adds the delta to the metrics.  The number of values must correspond to the dimension count
-     * supplied to the Factory constructor
+     * supplied to the Factory constructor.  Null values is equivalent to an array of zeros.
      */
-    void increment(long[] values, long timestampMs) {
+    void increment(@Nullable long[] values, long timestampMs) {
         mCounter.incrementValues(values, timestampMs);
         mTracking = true;
     }
diff --git a/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java b/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
index d4f8fd9..f9b9da9 100644
--- a/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
+++ b/services/core/java/com/android/server/power/stats/processor/PowerComponentAggregatedPowerStats.java
@@ -21,6 +21,7 @@
 import android.os.BatteryStats;
 import android.os.UserHandle;
 import android.util.IndentingPrintWriter;
+import android.util.IntArray;
 import android.util.Slog;
 import android.util.SparseArray;
 
@@ -34,7 +35,6 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.function.IntConsumer;
 
 /**
@@ -72,11 +72,11 @@
     private MultiStateStats mDeviceStats;
     private final SparseArray<MultiStateStats> mStateStats = new SparseArray<>();
     private final SparseArray<UidStats> mUidStats = new SparseArray<>();
-    private long[] mZeroArray;
 
     private static class UidStats {
         public int[] states;
         public MultiStateStats stats;
+        public boolean hasPowerStats;
         public boolean updated;
     }
 
@@ -200,6 +200,7 @@
         if (uidStats.stats == null) {
             createUidStats(uidStats, mPowerStatsTimestamp);
         }
+        uidStats.hasPowerStats = true;
         uidStats.stats.setStats(states, values);
     }
 
@@ -240,6 +241,7 @@
             }
             uidStats.stats.increment(powerStats.uidStats.valueAt(i), timestampMs);
             uidStats.updated = true;
+            uidStats.hasPowerStats = true;
         }
 
         // For UIDs not mentioned in the PowerStats object, we must assume a 0 increment.
@@ -248,11 +250,8 @@
         for (int i = mUidStats.size() - 1; i >= 0; i--) {
             PowerComponentAggregatedPowerStats.UidStats uidStats = mUidStats.valueAt(i);
             if (!uidStats.updated && uidStats.stats != null) {
-                if (mZeroArray == null
-                        || mZeroArray.length != mPowerStatsDescriptor.uidStatsArrayLength) {
-                    mZeroArray = new long[mPowerStatsDescriptor.uidStatsArrayLength];
-                }
-                uidStats.stats.increment(mZeroArray, timestampMs);
+                // Null stands for an array of zeros
+                uidStats.stats.increment(null, timestampMs);
             }
             uidStats.updated = false;
         }
@@ -267,6 +266,7 @@
         mStateStats.clear();
         for (int i = mUidStats.size() - 1; i >= 0; i--) {
             mUidStats.valueAt(i).stats = null;
+            mUidStats.valueAt(i).hasPowerStats = false;
         }
     }
 
@@ -290,12 +290,26 @@
         return uidStats;
     }
 
-    void collectUids(Collection<Integer> uids) {
+    IntArray getUids() {
+        IntArray uids = new IntArray(mUidStats.size());
         for (int i = mUidStats.size() - 1; i >= 0; i--) {
-            if (mUidStats.valueAt(i).stats != null) {
+            UidStats uidStats = mUidStats.valueAt(i);
+            if (uidStats.stats != null) {
                 uids.add(mUidStats.keyAt(i));
             }
         }
+        return uids;
+    }
+
+    IntArray getActiveUids() {
+        IntArray uids = new IntArray(mUidStats.size());
+        for (int i = mUidStats.size() - 1; i >= 0; i--) {
+            UidStats uidStats = mUidStats.valueAt(i);
+            if (uidStats.hasPowerStats) {
+                uids.add(mUidStats.keyAt(i));
+            }
+        }
+        return uids;
     }
 
     boolean getDeviceStats(long[] outValues, int[] deviceStates) {
@@ -516,6 +530,7 @@
                         if (uidStats.stats == null) {
                             createUidStats(uidStats, UNKNOWN);
                         }
+                        uidStats.hasPowerStats = true;
                         if (!uidStats.stats.readFromXml(parser)) {
                             return false;
                         }
diff --git a/services/core/java/com/android/server/power/stats/processor/PowerStatsExporter.java b/services/core/java/com/android/server/power/stats/processor/PowerStatsExporter.java
index 177d129..634415e 100644
--- a/services/core/java/com/android/server/power/stats/processor/PowerStatsExporter.java
+++ b/services/core/java/com/android/server/power/stats/processor/PowerStatsExporter.java
@@ -21,6 +21,7 @@
 import android.os.BatteryConsumer;
 import android.os.BatteryUsageStats;
 import android.os.UidBatteryConsumer;
+import android.util.IntArray;
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -31,7 +32,6 @@
 import com.android.server.power.stats.format.BasePowerStatsLayout;
 import com.android.server.power.stats.format.PowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -180,8 +180,7 @@
             }
         }
         if (layout.isUidPowerAttributionSupported()) {
-            populateBatteryConsumers(batteryUsageStatsBuilder,
-                    powerComponentStats, layout);
+            populateBatteryConsumers(batteryUsageStatsBuilder, powerComponentStats, layout);
         }
 
         populateBatteryLevelInfo(batteryUsageStatsBuilder, batteryLevelInfo);
@@ -258,6 +257,11 @@
             BatteryUsageStats.Builder batteryUsageStatsBuilder,
             PowerComponentAggregatedPowerStats powerComponentStats,
             PowerStatsLayout layout) {
+        IntArray uids = powerComponentStats.getUids();
+        if (uids.size() == 0) {
+            return;
+        }
+
         AggregatedPowerStatsConfig.PowerComponent powerComponent = powerComponentStats.getConfig();
         PowerStats.Descriptor descriptor = powerComponentStats.getPowerStatsDescriptor();
         long[] uidStats = new long[descriptor.uidStatsArrayLength];
@@ -273,8 +277,6 @@
             breakDownByProcState = false;
         }
 
-        ArrayList<Integer> uids = new ArrayList<>();
-        powerComponentStats.collectUids(uids);
         for (int screenState = 0; screenState < BatteryConsumer.SCREEN_STATE_COUNT; screenState++) {
             if (batteryUsageStatsBuilder.isScreenStateDataNeeded()) {
                 if (screenState == BatteryConsumer.SCREEN_STATE_UNSPECIFIED) {
@@ -303,7 +305,7 @@
     private void populateUidBatteryConsumers(
             BatteryUsageStats.Builder batteryUsageStatsBuilder,
             PowerComponentAggregatedPowerStats powerComponentStats, PowerStatsLayout layout,
-            List<Integer> uids, AggregatedPowerStatsConfig.PowerComponent powerComponent,
+            IntArray uids, AggregatedPowerStatsConfig.PowerComponent powerComponent,
             long[] uidStats, boolean breakDownByProcState,
             @BatteryConsumer.ScreenState int screenState,
             @BatteryConsumer.PowerState int powerState) {
@@ -319,7 +321,8 @@
         long[] durationByProcState =
                 new long[breakDownByProcState ? BatteryConsumer.PROCESS_STATE_COUNT : 1];
         double powerAllApps = 0;
-        for (int uid : uids) {
+        for (int i = uids.size() - 1; i >= 0; i--) {
+            int uid = uids.get(i);
             UidBatteryConsumer.Builder builder =
                     batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid);
 
diff --git a/services/core/java/com/android/server/power/stats/processor/ScreenPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/ScreenPowerStatsProcessor.java
index 8e7498f..9df3d7e 100644
--- a/services/core/java/com/android/server/power/stats/processor/ScreenPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/ScreenPowerStatsProcessor.java
@@ -27,6 +27,7 @@
 import static com.android.server.power.stats.processor.AggregatedPowerStatsConfig.STATE_SCREEN;
 
 import android.os.BatteryStats;
+import android.util.IntArray;
 import android.util.Slog;
 
 import com.android.internal.os.PowerProfile;
@@ -34,7 +35,6 @@
 import com.android.server.power.stats.UsageBasedPowerEstimator;
 import com.android.server.power.stats.format.ScreenPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.List;
 
 class ScreenPowerStatsProcessor extends PowerStatsProcessor {
@@ -116,10 +116,8 @@
         computeDevicePowerEstimates(stats);
         combineDeviceStateEstimates();
 
-        List<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-
-        if (!uids.isEmpty()) {
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
             computeUidPowerEstimates(stats, uids);
         }
         mPlan.resetIntermediates();
@@ -197,7 +195,7 @@
     }
 
     private void computeUidPowerEstimates(PowerComponentAggregatedPowerStats stats,
-            List<Integer> uids) {
+            IntArray uids) {
         int[] uidStateValues = new int[stats.getConfig().getUidStateConfig().length];
         uidStateValues[STATE_SCREEN] = SCREEN_STATE_ON;
         uidStateValues[STATE_PROCESS_STATE] = PROCESS_STATE_UNSPECIFIED;
@@ -232,9 +230,11 @@
                 int uid = uids.get(j);
                 if (stats.getUidStats(mTmpUidStatsArray, uid, uidStateValues)) {
                     long duration = mStatsLayout.getUidTopActivityDuration(mTmpUidStatsArray);
-                    double power = intermediates.power * duration / totalTopActivityDuration;
-                    mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-                    stats.setUidStats(uid, uidStateValues, mTmpUidStatsArray);
+                    if (duration != 0) {
+                        double power = intermediates.power * duration / totalTopActivityDuration;
+                        mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                        stats.setUidStats(uid, uidStateValues, mTmpUidStatsArray);
+                    }
                 }
             }
         }
diff --git a/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
index 0bb028b..ba728d3 100644
--- a/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/SensorPowerStatsProcessor.java
@@ -21,6 +21,7 @@
 import android.os.BatteryConsumer;
 import android.os.BatteryStats;
 import android.os.PersistableBundle;
+import android.util.IntArray;
 import android.util.Slog;
 import android.util.SparseArray;
 
@@ -28,7 +29,6 @@
 import com.android.server.power.stats.format.PowerStatsLayout;
 import com.android.server.power.stats.format.SensorPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Supplier;
@@ -207,11 +207,11 @@
             mPlan = new PowerEstimationPlan(stats.getConfig());
         }
 
-        List<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-
-        computeUidPowerEstimates(stats, uids);
-        computeDevicePowerEstimates(stats);
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            computeUidPowerEstimates(stats, uids);
+            computeDevicePowerEstimates(stats);
+        }
 
         mPlan.resetIntermediates();
     }
@@ -239,9 +239,7 @@
         mLastUpdateTimestamp = timestamp;
     }
 
-    private void computeUidPowerEstimates(
-            PowerComponentAggregatedPowerStats stats,
-            List<Integer> uids) {
+    private void computeUidPowerEstimates(PowerComponentAggregatedPowerStats stats, IntArray uids) {
         List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
         int[] uidSensorDurationPositions = new int[sensorList.size()];
         double[] sensorPower = new double[sensorList.size()];
@@ -292,8 +290,7 @@
         }
     }
 
-    private void computeDevicePowerEstimates(
-            PowerComponentAggregatedPowerStats stats) {
+    private void computeDevicePowerEstimates(PowerComponentAggregatedPowerStats stats) {
         for (int i = mPlan.combinedDeviceStateEstimations.size() - 1; i >= 0; i--) {
             CombinedDeviceStateEstimate estimation =
                     mPlan.combinedDeviceStateEstimations.get(i);
diff --git a/services/core/java/com/android/server/power/stats/processor/WifiPowerStatsProcessor.java b/services/core/java/com/android/server/power/stats/processor/WifiPowerStatsProcessor.java
index 0df01cf..8cc0b6e 100644
--- a/services/core/java/com/android/server/power/stats/processor/WifiPowerStatsProcessor.java
+++ b/services/core/java/com/android/server/power/stats/processor/WifiPowerStatsProcessor.java
@@ -16,6 +16,7 @@
 
 package com.android.server.power.stats.processor;
 
+import android.util.IntArray;
 import android.util.Slog;
 
 import com.android.internal.os.PowerProfile;
@@ -23,7 +24,6 @@
 import com.android.server.power.stats.UsageBasedPowerEstimator;
 import com.android.server.power.stats.format.WifiPowerStatsLayout;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -148,18 +148,19 @@
 
         combineDeviceStateEstimates();
 
-        ArrayList<Integer> uids = new ArrayList<>();
-        stats.collectUids(uids);
-        if (!uids.isEmpty()) {
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidActivityTotals(stats, uid, mPlan.uidStateEstimates.get(i));
+        IntArray uids = stats.getActiveUids();
+        if (uids.size() != 0) {
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidActivityTotals(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
 
-            for (int uid : uids) {
-                for (int i = 0; i < mPlan.uidStateEstimates.size(); i++) {
-                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(i));
+            for (int i = uids.size() - 1; i >= 0; i--) {
+                int uid = uids.get(i);
+                for (int j = 0; j < mPlan.uidStateEstimates.size(); j++) {
+                    computeUidPowerEstimates(stats, uid, mPlan.uidStateEstimates.get(j));
                 }
             }
         }
@@ -374,8 +375,10 @@
                             / intermediates.batchedScanDuration;
                 }
             }
-            mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
-            stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            if (power != 0) {
+                mStatsLayout.setUidPowerEstimate(mTmpUidStatsArray, power);
+                stats.setUidStats(uid, proportionalEstimate.stateValues, mTmpUidStatsArray);
+            }
 
             if (DEBUG) {
                 Slog.d(TAG, "UID: " + uid
diff --git a/services/core/java/com/android/server/vibrator/VendorVibrationSession.java b/services/core/java/com/android/server/vibrator/VendorVibrationSession.java
index 1b6ce9d..64b52b1 100644
--- a/services/core/java/com/android/server/vibrator/VendorVibrationSession.java
+++ b/services/core/java/com/android/server/vibrator/VendorVibrationSession.java
@@ -176,14 +176,14 @@
 
     @Override
     public void onCancel() {
-        Slog.d(TAG, "Cancellation signal received, cancelling vibration session...");
+        Slog.d(TAG, "Session cancellation signal received, aborting vibration session...");
         requestEndSession(Status.CANCELLED_BY_USER, /* shouldAbort= */ true,
                 /* isVendorRequest= */ true);
     }
 
     @Override
     public void binderDied() {
-        Slog.d(TAG, "Binder died, cancelling vibration session...");
+        Slog.d(TAG, "Session binder died, aborting vibration session...");
         requestEndSession(Status.CANCELLED_BINDER_DIED, /* shouldAbort= */ true,
                 /* isVendorRequest= */ false);
     }
@@ -219,18 +219,20 @@
 
     @Override
     public void notifyVibratorCallback(int vibratorId, long vibrationId) {
-        // Ignore it, the session vibration playback doesn't depend on HAL timings
+        Slog.d(TAG, "Vibration callback received for vibration " + vibrationId
+                + " on vibrator " + vibratorId + ", ignoring...");
     }
 
     @Override
     public void notifySyncedVibratorsCallback(long vibrationId) {
-        // Ignore it, the session vibration playback doesn't depend on HAL timings
+        Slog.d(TAG, "Synced vibration callback received for vibration " + vibrationId
+                + ", ignoring...");
     }
 
     @Override
     public void notifySessionCallback() {
+        Slog.d(TAG, "Session callback received, ending vibration session...");
         synchronized (mLock) {
-            Slog.d(TAG, "Session callback received, ending vibration session...");
             // If end was not requested then the HAL has cancelled the session.
             maybeSetEndRequestLocked(Status.CANCELLED_BY_UNKNOWN_REASON,
                     /* isVendorRequest= */ false);
@@ -307,7 +309,7 @@
             }
         }
         if (isAlreadyEnded) {
-            // Session already ended, make sure we end it in the HAL.
+            Slog.d(TAG, "Session already ended after starting the HAL, aborting...");
             mHandler.post(() -> mManagerHooks.endSession(mSessionId, /* shouldAbort= */ true));
         }
     }
@@ -335,8 +337,8 @@
     public boolean maybeSetVibrationConductor(VibrationStepConductor conductor) {
         synchronized (mLock) {
             if (mConductor != null) {
-                Slog.d(TAG, "Vibration session still dispatching previous vibration,"
-                        + " new vibration ignored");
+                Slog.d(TAG, "Session still dispatching previous vibration, new vibration "
+                        + conductor.getVibration().id + " ignored");
                 return false;
             }
             mConductor = conductor;
@@ -345,19 +347,22 @@
     }
 
     private void requestEndSession(Status status, boolean shouldAbort, boolean isVendorRequest) {
+        Slog.d(TAG, "Session end request received with status " + status);
         boolean shouldTriggerSessionHook = false;
         synchronized (mLock) {
             maybeSetEndRequestLocked(status, isVendorRequest);
-            if (isStarted()) {
-                // Always trigger session hook after it has started, in case new request aborts an
-                // already finishing session. Wait for HAL callback before actually ending here.
+            if (!isEnded() && isStarted()) {
+                // Trigger session hook even if it was already triggered, in case a second request
+                // is aborting the ongoing/ending session. This might cause it to end right away.
+                // Wait for HAL callback before setting the end status.
                 shouldTriggerSessionHook = true;
             } else {
-                // Session did not start in the HAL, end it right away.
+                // Session not active in the HAL, set end status right away.
                 maybeSetStatusToRequestedLocked();
             }
         }
         if (shouldTriggerSessionHook) {
+            Slog.d(TAG, "Requesting HAL session end with abort=" + shouldAbort);
             mHandler.post(() ->  mManagerHooks.endSession(mSessionId, shouldAbort));
         }
     }
@@ -368,6 +373,7 @@
             // End already requested, keep first requested status and time.
             return;
         }
+        Slog.d(TAG, "Session end request accepted for status " + status);
         mEndStatusRequest = status;
         mEndedByVendor = isVendorRequest;
         mEndTime = System.currentTimeMillis();
@@ -400,6 +406,7 @@
             // No end status was requested, nothing to set.
             return;
         }
+        Slog.d(TAG, "Session end request applied for status " + mEndStatusRequest);
         mStatus = mEndStatusRequest;
         // Run client callback in separate thread.
         final Status endStatus = mStatus;
@@ -407,7 +414,7 @@
             try {
                 mCallback.onFinished(toSessionStatus(endStatus));
             } catch (RemoteException e) {
-                Slog.e(TAG, "Error notifying vendor session is finishing", e);
+                Slog.e(TAG, "Error notifying vendor session finished", e);
             }
         });
     }
diff --git a/services/core/java/com/android/server/vibrator/VibratorManagerService.java b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
index 804cf46..75b1b20 100644
--- a/services/core/java/com/android/server/vibrator/VibratorManagerService.java
+++ b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
@@ -61,6 +61,7 @@
 import android.os.vibrator.Flags;
 import android.os.vibrator.IVibrationSessionCallback;
 import android.os.vibrator.PrebakedSegment;
+import android.os.vibrator.PrimitiveSegment;
 import android.os.vibrator.VibrationConfig;
 import android.os.vibrator.VibrationEffectSegment;
 import android.os.vibrator.VibratorInfoFactory;
@@ -786,7 +787,7 @@
 
         synchronized (mLock) {
             if (DEBUG) {
-                Slog.d(TAG, "Starting session " + session.getSessionId());
+                Slog.d(TAG, "Starting vendor session " + session.getSessionId());
             }
 
             Status ignoreStatus = null;
@@ -864,13 +865,16 @@
                 // Session already ended, possibly cancelled by app cancellation signal.
                 return session.getStatus();
             }
-            int mode = startAppOpModeLocked(session.getCallerInfo());
+            CallerInfo callerInfo = session.getCallerInfo();
+            int mode = startAppOpModeLocked(callerInfo);
             switch (mode) {
                 case AppOpsManager.MODE_ALLOWED:
                     Trace.asyncTraceBegin(TRACE_TAG_VIBRATOR, "vibration", 0);
                     // Make sure mCurrentVibration is set while triggering the HAL.
                     mCurrentSession = session;
                     if (!session.linkToDeath()) {
+                        // Shouldn't happen. The method call already logs.
+                        finishAppOpModeLocked(callerInfo);
                         mCurrentSession = null;
                         return Status.IGNORED_ERROR_TOKEN;
                     }
@@ -878,14 +882,14 @@
                         Slog.e(TAG, "Error starting session " + sessionId + " on vibrators "
                                 + Arrays.toString(session.getVibratorIds()));
                         session.unlinkToDeath();
+                        finishAppOpModeLocked(callerInfo);
                         mCurrentSession = null;
                         return Status.IGNORED_UNSUPPORTED;
                     }
                     session.notifyStart();
                     return null;
                 case AppOpsManager.MODE_ERRORED:
-                    Slog.w(TAG, "Start AppOpsManager operation errored for uid "
-                            + session.getCallerInfo().uid);
+                    Slog.w(TAG, "Start AppOpsManager operation errored for uid " + callerInfo.uid);
                     return Status.IGNORED_ERROR_APP_OPS;
                 default:
                     return Status.IGNORED_APP_OPS;
@@ -1081,11 +1085,12 @@
     @Nullable
     private Status startVibrationOnThreadLocked(SingleVibrationSession session) {
         if (DEBUG) {
-            Slog.d(TAG, "Starting vibration " + session.getVibration().id +  " on thread");
+            Slog.d(TAG, "Starting vibration " + session.getVibration().id + " on thread");
         }
         VibrationStepConductor conductor = createVibrationStepConductor(session.getVibration());
         session.setVibrationConductor(conductor);
-        int mode = startAppOpModeLocked(session.getCallerInfo());
+        CallerInfo callerInfo = session.getCallerInfo();
+        int mode = startAppOpModeLocked(callerInfo);
         switch (mode) {
             case AppOpsManager.MODE_ALLOWED:
                 Trace.asyncTraceBegin(TRACE_TAG_VIBRATOR, "vibration", 0);
@@ -1093,19 +1098,21 @@
                 mCurrentSession = session;
                 if (!mCurrentSession.linkToDeath()) {
                     // Shouldn't happen. The method call already logs.
+                    finishAppOpModeLocked(callerInfo);
                     mCurrentSession = null;  // Aborted.
                     return Status.IGNORED_ERROR_TOKEN;
                 }
                 if (!mVibrationThread.runVibrationOnVibrationThread(conductor)) {
                     // Shouldn't happen. The method call already logs.
                     session.setVibrationConductor(null); // Rejected by thread, clear it in session.
+                    mCurrentSession.unlinkToDeath();
+                    finishAppOpModeLocked(callerInfo);
                     mCurrentSession = null;  // Aborted.
                     return Status.IGNORED_ERROR_SCHEDULING;
                 }
                 return null;
             case AppOpsManager.MODE_ERRORED:
-                Slog.w(TAG, "Start AppOpsManager operation errored for uid "
-                        + session.getCallerInfo().uid);
+                Slog.w(TAG, "Start AppOpsManager operation errored for uid " + callerInfo.uid);
                 return Status.IGNORED_ERROR_APP_OPS;
             default:
                 return Status.IGNORED_APP_OPS;
@@ -1494,6 +1501,13 @@
     private int checkAppOpModeLocked(CallerInfo callerInfo) {
         int mode = mAppOps.checkAudioOpNoThrow(AppOpsManager.OP_VIBRATE,
                 callerInfo.attrs.getAudioUsage(), callerInfo.uid, callerInfo.opPkg);
+        if (DEBUG) {
+            int opMode = mAppOps.checkOpNoThrow(AppOpsManager.OP_VIBRATE, callerInfo.uid,
+                    callerInfo.opPkg);
+            Slog.d(TAG, "Check AppOp mode VIBRATE for uid " + callerInfo.uid + " and package "
+                    + callerInfo.opPkg + " returned audio=" + AppOpsManager.MODE_NAMES[mode]
+                    + ", op=" + AppOpsManager.MODE_NAMES[opMode]);
+        }
         int fixedMode = fixupAppOpModeLocked(mode, callerInfo.attrs);
         if (mode != fixedMode && fixedMode == AppOpsManager.MODE_ALLOWED) {
             // If we're just ignoring the vibration op then this is set by DND and we should ignore
@@ -1507,9 +1521,13 @@
     /** Start an operation in {@link AppOpsManager}, if allowed. */
     @GuardedBy("mLock")
     private int startAppOpModeLocked(CallerInfo callerInfo) {
-        return fixupAppOpModeLocked(
-                mAppOps.startOpNoThrow(AppOpsManager.OP_VIBRATE, callerInfo.uid, callerInfo.opPkg),
-                callerInfo.attrs);
+        int mode = mAppOps.startOpNoThrow(AppOpsManager.OP_VIBRATE, callerInfo.uid,
+                callerInfo.opPkg);
+        if (DEBUG) {
+            Slog.d(TAG, "Start AppOp mode VIBRATE for uid " + callerInfo.uid + " and package "
+                    + callerInfo.opPkg + " returned " + AppOpsManager.MODE_NAMES[mode]);
+        }
+        return fixupAppOpModeLocked(mode, callerInfo.attrs);
     }
 
     /**
@@ -1518,6 +1536,10 @@
      */
     @GuardedBy("mLock")
     private void finishAppOpModeLocked(CallerInfo callerInfo) {
+        if (DEBUG) {
+            Slog.d(TAG, "Finish AppOp mode VIBRATE for uid " + callerInfo.uid + " and package "
+                    + callerInfo.opPkg);
+        }
         mAppOps.finishOp(AppOpsManager.OP_VIBRATE, callerInfo.uid, callerInfo.opPkg);
     }
 
@@ -2651,7 +2673,7 @@
             CombinedVibration.ParallelCombination combination =
                     CombinedVibration.startParallel();
             while ("-v".equals(getNextOption())) {
-                int vibratorId = Integer.parseInt(getNextArgRequired());
+                int vibratorId = parseInt(getNextArgRequired(), "Expected vibrator id after -v");
                 combination.addVibrator(vibratorId, nextEffect());
             }
             runVibrate(commonOptions, combination.combine());
@@ -2663,7 +2685,7 @@
             CombinedVibration.SequentialCombination combination =
                     CombinedVibration.startSequential();
             while ("-v".equals(getNextOption())) {
-                int vibratorId = Integer.parseInt(getNextArgRequired());
+                int vibratorId = parseInt(getNextArgRequired(), "Expected vibrator id after -v");
                 combination.addNext(vibratorId, nextEffect());
             }
             runVibrate(commonOptions, combination.combine());
@@ -2688,7 +2710,7 @@
 
         private int runHapticFeedback() {
             CommonOptions commonOptions = new CommonOptions();
-            int constant = Integer.parseInt(getNextArgRequired());
+            int constant = parseInt(getNextArgRequired(), "Expected haptic feedback constant id");
 
             IBinder deathBinder = commonOptions.background ? VibratorManagerService.this
                     : mShellCallbacksToken;
@@ -2715,6 +2737,8 @@
                     addPrebakedToComposition(composition);
                 } else if ("primitives".equals(nextArg)) {
                     addPrimitivesToComposition(composition);
+                } else if ("envelope".equals(nextArg)) {
+                    addEnvelopeToComposition(composition);
                 } else {
                     // nextArg is not an effect, finish reading.
                     break;
@@ -2734,17 +2758,135 @@
                 if ("-a".equals(nextOption)) {
                     hasAmplitude = true;
                 } else if ("-w".equals(nextOption)) {
-                    delay = Integer.parseInt(getNextArgRequired());
+                    delay = parseInt(getNextArgRequired(), "Expected delay millis after -w");
                 }
             }
 
-            long duration = Long.parseLong(getNextArgRequired());
-            int amplitude = hasAmplitude ? Integer.parseInt(getNextArgRequired())
+            long duration = parseInt(getNextArgRequired(), "Expected one-shot duration millis");
+            int amplitude = hasAmplitude
+                    ? parseInt(getNextArgRequired(), "Expected one-shot amplitude")
                     : VibrationEffect.DEFAULT_AMPLITUDE;
             composition.addOffDuration(Duration.ofMillis(delay));
             composition.addEffect(VibrationEffect.createOneShot(duration, amplitude));
         }
 
+        private interface EnvelopeBuilder {
+            void setInitialSharpness(float sharpness);
+            void addControlPoint(float intensity, float sharpness, long duration);
+            void reset(float initialSharpness);
+            VibrationEffect build();
+        }
+
+        private static class BasicEnveloperBuilderWrapper implements EnvelopeBuilder {
+            private VibrationEffect.BasicEnvelopeBuilder mBuilder =
+                    new VibrationEffect.BasicEnvelopeBuilder();
+
+            @Override
+            public void setInitialSharpness(float sharpness) {
+                mBuilder.setInitialSharpness(sharpness);
+            }
+
+            @Override
+            public void addControlPoint(float intensity, float sharpness, long duration) {
+                mBuilder.addControlPoint(intensity, sharpness, duration);
+            }
+
+            @Override
+            public void reset(float initialSharpness) {
+                mBuilder = new VibrationEffect.BasicEnvelopeBuilder();
+                mBuilder.setInitialSharpness(initialSharpness);
+            }
+
+            @Override
+            public VibrationEffect build() {
+                return mBuilder.build();
+            }
+        }
+
+        private static class AdvancedEnveloperBuilderWrapper implements EnvelopeBuilder {
+            private VibrationEffect.WaveformEnvelopeBuilder mBuilder =
+                    new VibrationEffect.WaveformEnvelopeBuilder();
+
+            @Override
+            public void setInitialSharpness(float sharpness) {
+                mBuilder.setInitialFrequencyHz(sharpness);
+            }
+
+            @Override
+            public void addControlPoint(float intensity, float sharpness, long duration) {
+                mBuilder.addControlPoint(intensity, sharpness, duration);
+            }
+
+            @Override
+            public void reset(float initialSharpness) {
+                mBuilder = new VibrationEffect.WaveformEnvelopeBuilder();
+                mBuilder.setInitialFrequencyHz(initialSharpness);
+            }
+
+            @Override
+            public VibrationEffect build() {
+                return mBuilder.build();
+            }
+        }
+
+        private void addEnvelopeToComposition(VibrationEffect.Composition composition) {
+            getNextArgRequired(); // consume "envelope"
+            int repeat = -1;
+            float initialSharpness = Float.NaN;
+            VibrationEffect preamble = null;
+            boolean isAdvanced = false;
+            String nextOption;
+            while ((nextOption = getNextOption()) != null) {
+                switch (nextOption) {
+                    case "-a" -> isAdvanced = true;
+                    case "-i" -> initialSharpness = parseFloat(getNextArgRequired(),
+                            "Expected initial sharpness after -i");
+                    case "-r" -> repeat = parseInt(getNextArgRequired(),
+                            "Expected repeat index after -r");
+                }
+            }
+
+            EnvelopeBuilder builder = isAdvanced ? new AdvancedEnveloperBuilderWrapper()
+                    : new BasicEnveloperBuilderWrapper();
+
+            if (!Float.isNaN(initialSharpness)) {
+                builder.setInitialSharpness(initialSharpness);
+            }
+
+            int duration, pos = 0;
+            float intensity, sharpness = 0f;
+            String nextArg;
+            while ((nextArg = peekNextArg()) != null) {
+                if (pos > 0 && pos == repeat) {
+                    preamble = builder.build();
+                    builder.reset(sharpness);
+                }
+                try {
+                    duration = Integer.parseInt(nextArg);
+                    getNextArgRequired(); // consume the duration
+                } catch (NumberFormatException e) {
+                    // nextArg is not a duration, finish reading.
+                    break;
+                }
+                intensity = parseFloat(getNextArgRequired(), "Expected envelope intensity");
+                sharpness = parseFloat(getNextArgRequired(), "Expected envelope sharpness");
+                builder.addControlPoint(intensity, sharpness, duration);
+                pos++;
+            }
+
+            if (repeat >= 0) {
+                if (preamble == null) {
+                    composition.addEffect(VibrationEffect.createRepeatingEffect(builder.build()));
+                } else {
+                    composition.addEffect(
+                            VibrationEffect.createRepeatingEffect(preamble, builder.build()));
+                }
+                return;
+            }
+
+            composition.addEffect(builder.build());
+        }
+
         private void addWaveformToComposition(VibrationEffect.Composition composition) {
             boolean hasAmplitudes = false;
             boolean hasFrequencies = false;
@@ -2755,16 +2897,14 @@
             getNextArgRequired(); // consume "waveform"
             String nextOption;
             while ((nextOption = getNextOption()) != null) {
-                if ("-a".equals(nextOption)) {
-                    hasAmplitudes = true;
-                } else if ("-r".equals(nextOption)) {
-                    repeat = Integer.parseInt(getNextArgRequired());
-                } else if ("-w".equals(nextOption)) {
-                    delay = Integer.parseInt(getNextArgRequired());
-                } else if ("-f".equals(nextOption)) {
-                    hasFrequencies = true;
-                } else if ("-c".equals(nextOption)) {
-                    isContinuous = true;
+                switch (nextOption) {
+                    case "-a" -> hasAmplitudes = true;
+                    case "-f" -> hasFrequencies = true;
+                    case "-c" -> isContinuous = true;
+                    case "-r" -> repeat = parseInt(getNextArgRequired(),
+                            "Expected repeat index after -r");
+                    case "-w" -> delay = parseInt(getNextArgRequired(),
+                            "Expected delay millis after -w");
                 }
             }
             List<Integer> durations = new ArrayList<>();
@@ -2782,14 +2922,15 @@
                     break;
                 }
                 if (hasAmplitudes) {
-                    amplitudes.add(
-                            Float.parseFloat(getNextArgRequired()) / VibrationEffect.MAX_AMPLITUDE);
+                    int amplitude = parseInt(getNextArgRequired(), "Expected waveform amplitude");
+                    amplitudes.add((float) amplitude / VibrationEffect.MAX_AMPLITUDE);
                 } else {
                     amplitudes.add(nextAmplitude);
                     nextAmplitude = 1 - nextAmplitude;
                 }
                 if (hasFrequencies) {
-                    frequencies.add(Float.parseFloat(getNextArgRequired()));
+                    frequencies.add(
+                            parseFloat(getNextArgRequired(), "Expected waveform frequency"));
                 }
             }
 
@@ -2848,27 +2989,37 @@
                 if ("-b".equals(nextOption)) {
                     shouldFallback = true;
                 } else if ("-w".equals(nextOption)) {
-                    delay = Integer.parseInt(getNextArgRequired());
+                    delay = parseInt(getNextArgRequired(), "Expected delay millis after -w");
                 }
             }
 
-            int effectId = Integer.parseInt(getNextArgRequired());
+            int effectId = parseInt(getNextArgRequired(), "Expected prebaked effect id");
             composition.addOffDuration(Duration.ofMillis(delay));
             composition.addEffect(VibrationEffect.get(effectId, shouldFallback));
         }
 
         private void addPrimitivesToComposition(VibrationEffect.Composition composition) {
             getNextArgRequired(); // consume "primitives"
-            String nextArg;
-            while ((nextArg = peekNextArg()) != null) {
+            while (peekNextArg() != null) {
                 int delay = 0;
-                if ("-w".equals(nextArg)) {
-                    getNextArgRequired(); // consume "-w"
-                    delay = Integer.parseInt(getNextArgRequired());
-                    nextArg = peekNextArg();
+                float scale = 1f;
+                int delayType = PrimitiveSegment.DEFAULT_DELAY_TYPE;
+
+                String nextOption;
+                while ((nextOption = getNextOption()) != null) {
+                    if ("-s".equals(nextOption)) {
+                        scale = parseFloat(getNextArgRequired(), "Expected scale after -s");
+                    } else if ("-o".equals(nextOption)) {
+                        delayType = VibrationEffect.Composition.DELAY_TYPE_RELATIVE_START_OFFSET;
+                        delay = parseInt(getNextArgRequired(), "Expected offset millis after -o");
+                    } else if ("-w".equals(nextOption)) {
+                        delayType = PrimitiveSegment.DEFAULT_DELAY_TYPE;
+                        delay = parseInt(getNextArgRequired(), "Expected delay millis after -w");
+                    }
                 }
                 try {
-                    composition.addPrimitive(Integer.parseInt(nextArg), /* scale= */ 1, delay);
+                    String nextArg = peekNextArg(); // Just in case this is not a primitive.
+                    composition.addPrimitive(Integer.parseInt(nextArg), scale, delay, delayType);
                     getNextArgRequired(); // consume the primitive id
                 } catch (NumberFormatException | NullPointerException e) {
                     // nextArg is not describing a primitive, leave it to be consumed by outer loops
@@ -2894,17 +3045,15 @@
                         VibrationXmlParser.parseDocument(new StringReader(xml));
                 VibratorInfo combinedVibratorInfo = getCombinedVibratorInfo();
                 if (combinedVibratorInfo == null) {
-                    throw new IllegalStateException(
-                            "No combined vibrator info to parse vibration XML " + xml);
+                    throw new IllegalStateException("No vibrator info available to parse XML");
                 }
                 VibrationEffect effect = parsedVibration.resolve(combinedVibratorInfo);
                 if (effect == null) {
-                    throw new IllegalArgumentException(
-                            "Parsed vibration cannot be resolved for vibration XML " + xml);
+                    throw new IllegalArgumentException("Parsed XML cannot be resolved: " + xml);
                 }
                 return CombinedVibration.createParallel(effect);
             } catch (IOException e) {
-                throw new RuntimeException("Error parsing vibration XML " + xml, e);
+                throw new RuntimeException("Error parsing XML: " + xml, e);
             }
         }
 
@@ -2922,16 +3071,30 @@
             }
         }
 
+        private static int parseInt(String text, String errorMessage) {
+            try {
+                return Integer.parseInt(text);
+            } catch (NumberFormatException | NullPointerException e) {
+                throw new IllegalArgumentException(errorMessage, e);
+            }
+        }
+
+        private static float parseFloat(String text, String errorMessage) {
+            try {
+                return Float.parseFloat(text);
+            } catch (NumberFormatException | NullPointerException e) {
+                throw new IllegalArgumentException(errorMessage, e);
+            }
+        }
+
         @Override
         public void onHelp() {
             try (PrintWriter pw = getOutPrintWriter();) {
                 pw.println("Vibrator Manager commands:");
                 pw.println("  help");
                 pw.println("    Prints this help text.");
-                pw.println("");
                 pw.println("  list");
-                pw.println("    Prints the id of device vibrators. This does not include any ");
-                pw.println("    connected input device.");
+                pw.println("    Prints device vibrator ids; does not include input devices.");
                 pw.println("  synced [options] <effect>...");
                 pw.println("    Vibrates effect on all vibrators in sync.");
                 pw.println("  combined [options] (-v <vibrator-id> <effect>...)...");
@@ -2941,58 +3104,63 @@
                 pw.println("  xml [options] <xml>");
                 pw.println("    Vibrates using combined vibration described in given XML string");
                 pw.println("    on all vibrators in sync. The XML could be:");
-                pw.println("        XML containing a single effect, or");
-                pw.println("        A vibration select XML containing multiple effects.");
-                pw.println("    Vibrates using combined vibration described in given XML string.");
-                pw.println("    XML containing a single effect it runs on all vibrators in sync.");
+                pw.println("        A single <vibration-effect>, or");
+                pw.println("        A <vibration-select> containing multiple effects.");
+                pw.println("  feedback [options] <constant>");
+                pw.println("    Performs a haptic feedback with the given constant.");
                 pw.println("  cancel");
                 pw.println("    Cancels any active vibration");
-                pw.println("  feedback [-f] [-d <description>] <constant>");
-                pw.println("    Performs a haptic feedback with the given constant.");
-                pw.println("    The force (-f) option enables the `always` configuration, which");
-                pw.println("    plays the haptic irrespective of the vibration intensity settings");
                 pw.println("");
                 pw.println("Effect commands:");
                 pw.println("  oneshot [-w delay] [-a] <duration> [<amplitude>]");
-                pw.println("    Vibrates for duration milliseconds; ignored when device is on ");
-                pw.println("    DND (Do Not Disturb) mode; touch feedback strength user setting ");
-                pw.println("    will be used to scale amplitude.");
+                pw.println("    Vibrates for duration milliseconds.");
                 pw.println("    If -w is provided, the effect will be played after the specified");
                 pw.println("    wait time in milliseconds.");
                 pw.println("    If -a is provided, the command accepts a second argument for ");
                 pw.println("    amplitude, in a scale of 1-255.");
                 pw.print("  waveform [-w delay] [-r index] [-a] [-f] [-c] ");
                 pw.println("(<duration> [<amplitude>] [<frequency>])...");
-                pw.println("    Vibrates for durations and amplitudes in list; ignored when ");
-                pw.println("    device is on DND (Do Not Disturb) mode; touch feedback strength ");
-                pw.println("    user setting will be used to scale amplitude.");
+                pw.println("    Vibrates for durations and amplitudes in list.");
                 pw.println("    If -w is provided, the effect will be played after the specified");
                 pw.println("    wait time in milliseconds.");
                 pw.println("    If -r is provided, the waveform loops back to the specified");
-                pw.println("    index (e.g. 0 loops from the beginning)");
+                pw.println("    index (e.g. 0 loops from the beginning).");
                 pw.println("    If -a is provided, the command expects amplitude to follow each");
                 pw.println("    duration; otherwise, it accepts durations only and alternates");
-                pw.println("    off/on");
+                pw.println("    off/on.");
                 pw.println("    If -f is provided, the command expects frequency to follow each");
-                pw.println("    amplitude or duration; otherwise, it uses resonant frequency");
+                pw.println("    amplitude or duration; otherwise, it uses resonant frequency.");
                 pw.println("    If -c is provided, the waveform is continuous and will ramp");
                 pw.println("    between values; otherwise each entry is a fixed step.");
                 pw.println("    Duration is in milliseconds; amplitude is a scale of 1-255;");
-                pw.println("    frequency is an absolute value in hertz;");
+                pw.println("    frequency is an absolute value in hertz.");
+                pw.print("  envelope [-a] [-i initial sharpness] [-r index]  ");
+                pw.println("[<duration1> <intensity1> <sharpness1>]...");
+                pw.println("    Generates a vibration pattern based on a series of duration, ");
+                pw.println("    intensity, and sharpness values. The total vibration time is ");
+                pw.println("    the sum of all durations.");
+                pw.println("    If -a is provided, the waveform will use the advanced APIs to ");
+                pw.println("    generate the vibration pattern and the input parameters ");
+                pw.println("    become [<duration1> <amplitude1> <frequency1>].");
+                pw.println("    If -i is provided, the waveform will have an initial sharpness ");
+                pw.println("    it will start from.");
+                pw.println("    If -r is provided, the waveform loops back to the specified index");
+                pw.println("    (e.g. 0 loops from the beginning).");
                 pw.println("  prebaked [-w delay] [-b] <effect-id>");
-                pw.println("    Vibrates with prebaked effect; ignored when device is on DND ");
-                pw.println("    (Do Not Disturb) mode; touch feedback strength user setting ");
-                pw.println("    will be used to scale amplitude.");
+                pw.println("    Vibrates with prebaked effect.");
                 pw.println("    If -w is provided, the effect will be played after the specified");
                 pw.println("    wait time in milliseconds.");
                 pw.println("    If -b is provided, the prebaked fallback effect will be played if");
                 pw.println("    the device doesn't support the given effect-id.");
-                pw.println("  primitives ([-w delay] <primitive-id>)...");
-                pw.println("    Vibrates with a composed effect; ignored when device is on DND ");
-                pw.println("    (Do Not Disturb) mode; touch feedback strength user setting ");
-                pw.println("    will be used to scale primitive intensities.");
+                pw.print("  primitives ([-w delay] [-o time] [-s scale]");
+                pw.println("<primitive-id> [<scale>])...");
+                pw.println("    Vibrates with a composed effect.");
                 pw.println("    If -w is provided, the next primitive will be played after the ");
                 pw.println("    specified wait time in milliseconds.");
+                pw.println("    If -o is provided, the next primitive will be played at the ");
+                pw.println("    specified start offset time in milliseconds.");
+                pw.println("    If -s is provided, the next primitive will be played with the");
+                pw.println("    specified amplitude scale, in a scale of [0,1].");
                 pw.println("");
                 pw.println("Common Options:");
                 pw.println("  -f");
@@ -3003,6 +3171,11 @@
                 pw.println("  -d <description>");
                 pw.println("    Add description to the vibration.");
                 pw.println("");
+                pw.println("Notes");
+                pw.println("    Vibrations triggered by these commands will be ignored when");
+                pw.println("    device is on DND (Do Not Disturb) mode; notification strength");
+                pw.println("    user settings will be applied for scale.");
+                pw.println("");
             }
         }
     }
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 333d91a..9692b69 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -289,6 +289,7 @@
 import android.content.pm.UserProperties;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Insets;
 import android.graphics.PixelFormat;
@@ -352,7 +353,6 @@
 import com.android.internal.content.ReferrerIntent;
 import com.android.internal.os.TimeoutRecord;
 import com.android.internal.os.TransferPipe;
-import com.android.internal.policy.AttributeCache;
 import com.android.internal.policy.PhoneWindow;
 import com.android.internal.protolog.ProtoLog;
 import com.android.internal.util.XmlUtils;
@@ -479,6 +479,8 @@
     final String processName; // process where this component wants to run
     final String taskAffinity; // as per ActivityInfo.taskAffinity
     final boolean stateNotNeeded; // As per ActivityInfo.flags
+    @Nullable
+    final WindowStyle mWindowStyle;
     @VisibleForTesting
     int mHandoverLaunchDisplayId = INVALID_DISPLAY; // Handover launch display id to next activity.
     @VisibleForTesting
@@ -1926,22 +1928,17 @@
                     ? android.R.style.Theme : android.R.style.Theme_Holo;
         }
 
-        final AttributeCache.Entry ent = AttributeCache.instance().get(packageName,
-                realTheme, com.android.internal.R.styleable.Window, mUserId);
-
-        if (ent != null) {
-            final boolean styleTranslucent = ent.array.getBoolean(
-                    com.android.internal.R.styleable.Window_windowIsTranslucent, false);
-            final boolean styleFloating = ent.array.getBoolean(
-                    com.android.internal.R.styleable.Window_windowIsFloating, false);
-            mOccludesParent = !(styleTranslucent || styleFloating)
+        final WindowStyle style = mAtmService.getWindowStyle(packageName, realTheme, mUserId);
+        mWindowStyle = style;
+        if (style != null) {
+            mOccludesParent = !(style.isTranslucent() || style.isFloating())
                     // This style is propagated to the main window attributes with
                     // FLAG_SHOW_WALLPAPER from PhoneWindow#generateLayout.
-                    || ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false);
+                    || style.showWallpaper();
             mStyleFillsParent = mOccludesParent;
-            mNoDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
-            mOptOutEdgeToEdge = PhoneWindow.isOptingOutEdgeToEdgeEnforcement(
-                    aInfo.applicationInfo, false /* local */, ent.array);
+            mNoDisplay = style.noDisplay();
+            mOptOutEdgeToEdge = style.optOutEdgeToEdge() && PhoneWindow.isOptOutEdgeToEdgeEnabled(
+                    aInfo.applicationInfo, false /* local */);
         } else {
             mStyleFillsParent = mOccludesParent = true;
             mNoDisplay = false;
@@ -2272,21 +2269,17 @@
             return false;
         }
 
-        final AttributeCache.Entry ent = AttributeCache.instance().get(pkg, theme,
-                com.android.internal.R.styleable.Window, mWmService.mCurrentUserId);
-        if (ent == null) {
+        final WindowStyle style = theme == this.theme
+                ? mWindowStyle : mAtmService.getWindowStyle(pkg, theme, mUserId);
+        if (style == null) {
             // Whoops!  App doesn't exist. Um. Okay. We'll just pretend like we didn't
             // see that.
             return false;
         }
-        final boolean windowIsTranslucent = ent.array.getBoolean(
-                com.android.internal.R.styleable.Window_windowIsTranslucent, false);
-        final boolean windowIsFloating = ent.array.getBoolean(
-                com.android.internal.R.styleable.Window_windowIsFloating, false);
-        final boolean windowShowWallpaper = ent.array.getBoolean(
-                com.android.internal.R.styleable.Window_windowShowWallpaper, false);
-        final boolean windowDisableStarting = ent.array.getBoolean(
-                com.android.internal.R.styleable.Window_windowDisablePreview, false);
+        final boolean windowIsTranslucent = style.isTranslucent();
+        final boolean windowIsFloating = style.isFloating();
+        final boolean windowShowWallpaper = style.showWallpaper();
+        final boolean windowDisableStarting = style.disablePreview();
         ProtoLog.v(WM_DEBUG_STARTING_WINDOW,
                 "Translucent=%s Floating=%s ShowWallpaper=%s Disable=%s",
                 windowIsTranslucent, windowIsFloating, windowShowWallpaper,
@@ -7135,14 +7128,10 @@
         if (theme == 0) {
             return false;
         }
-        final AttributeCache.Entry ent = AttributeCache.instance().get(packageName, theme,
-                R.styleable.Window, mWmService.mCurrentUserId);
-        if (ent != null) {
-            if (ent.array.hasValue(R.styleable.Window_windowSplashScreenBehavior)) {
-                return ent.array.getInt(R.styleable.Window_windowSplashScreenBehavior,
-                        SPLASH_SCREEN_BEHAVIOR_DEFAULT)
-                        == SPLASH_SCREEN_BEHAVIOR_ICON_PREFERRED;
-            }
+        final WindowStyle style = theme == this.theme
+                ? mWindowStyle : mAtmService.getWindowStyle(packageName, theme, mUserId);
+        if (style != null) {
+            return style.mSplashScreenBehavior == SPLASH_SCREEN_BEHAVIOR_ICON_PREFERRED;
         }
         return false;
     }
@@ -9655,7 +9644,18 @@
                     && !mDisplayContent.isSleeping()) {
                 // Visibility of starting activities isn't calculated until pause-complete, so if
                 // this is not paused yet, don't consider it ready.
-                return false;
+                // However, due to pip1 having an intermediate state, add a special exception here
+                // that skips waiting if the next activity is already visible.
+                final ActivityRecord toResume = isPip2ExperimentEnabled() ? null
+                        : mDisplayContent.getActivity((r) -> !r.finishing
+                        && r.isVisibleRequested()
+                        && !r.isTaskOverlay()
+                        && !r.isAlwaysOnTop());
+                if (toResume == null || !toResume.isVisible()) {
+                    return false;
+                } else {
+                    Slog.i(TAG, "Assuming sync-finish while pausing due to visible target");
+                }
             }
             return true;
         }
@@ -9814,6 +9814,68 @@
         int mBackgroundColor;
     }
 
+    static class WindowStyle {
+        private static final int FLAG_IS_TRANSLUCENT = 1;
+        private static final int FLAG_IS_FLOATING = 1 << 1;
+        private static final int FLAG_SHOW_WALLPAPER = 1 << 2;
+        private static final int FLAG_NO_DISPLAY = 1 << 3;
+        private static final int FLAG_DISABLE_PREVIEW = 1 << 4;
+        private static final int FLAG_OPT_OUT_EDGE_TO_EDGE = 1 << 5;
+
+        final int mFlags;
+
+        @SplashScreenBehavior
+        final int mSplashScreenBehavior;
+
+        WindowStyle(TypedArray array) {
+            int flags = 0;
+            if (array.getBoolean(R.styleable.Window_windowIsTranslucent, false)) {
+                flags |= FLAG_IS_TRANSLUCENT;
+            }
+            if (array.getBoolean(R.styleable.Window_windowIsFloating, false)) {
+                flags |= FLAG_IS_FLOATING;
+            }
+            if (array.getBoolean(R.styleable.Window_windowShowWallpaper, false)) {
+                flags |= FLAG_SHOW_WALLPAPER;
+            }
+            if (array.getBoolean(R.styleable.Window_windowNoDisplay, false)) {
+                flags |= FLAG_NO_DISPLAY;
+            }
+            if (array.getBoolean(R.styleable.Window_windowDisablePreview, false)) {
+                flags |= FLAG_DISABLE_PREVIEW;
+            }
+            if (array.getBoolean(R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false)) {
+                flags |= FLAG_OPT_OUT_EDGE_TO_EDGE;
+            }
+            mFlags = flags;
+            mSplashScreenBehavior = array.getInt(R.styleable.Window_windowSplashScreenBehavior, 0);
+        }
+
+        boolean isTranslucent() {
+            return (mFlags & FLAG_IS_TRANSLUCENT) != 0;
+        }
+
+        boolean isFloating() {
+            return (mFlags & FLAG_IS_FLOATING) != 0;
+        }
+
+        boolean showWallpaper() {
+            return (mFlags & FLAG_SHOW_WALLPAPER) != 0;
+        }
+
+        boolean noDisplay() {
+            return (mFlags & FLAG_NO_DISPLAY) != 0;
+        }
+
+        boolean disablePreview() {
+            return (mFlags & FLAG_DISABLE_PREVIEW) != 0;
+        }
+
+        boolean optOutEdgeToEdge() {
+            return (mFlags & FLAG_OPT_OUT_EDGE_TO_EDGE) != 0;
+        }
+    }
+
     static class Builder {
         private final ActivityTaskManagerService mAtmService;
         private WindowProcessController mCallerApp;
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index 0a57cb5..c243cdc 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -617,6 +617,9 @@
      */
     public abstract boolean isBaseOfLockedTask(String packageName);
 
+    /** Returns the value of {@link android.R.attr#windowNoDisplay} from the given theme. */
+    public abstract boolean isNoDisplay(String packageName, int theme, int userId);
+
     /**
      * Creates an interface to update configuration for the calling application.
      */
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 819e117..3778378 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -286,6 +286,7 @@
 import com.android.server.uri.NeededUriGrants;
 import com.android.server.uri.UriGrantsManagerInternal;
 import com.android.server.wallpaper.WallpaperManagerInternal;
+import com.android.server.wm.utils.WindowStyleCache;
 import com.android.wm.shell.Flags;
 
 import java.io.BufferedReader;
@@ -500,6 +501,8 @@
 
     boolean mSuppressResizeConfigChanges;
 
+    private final WindowStyleCache<ActivityRecord.WindowStyle> mWindowStyleCache =
+            new WindowStyleCache<>(ActivityRecord.WindowStyle::new);
     final UpdateConfigurationResult mTmpUpdateConfigurationResult =
             new UpdateConfigurationResult();
 
@@ -5570,6 +5573,16 @@
         return mUserManagerInternal;
     }
 
+    @Nullable
+    ActivityRecord.WindowStyle getWindowStyle(String packageName, int theme, int userId) {
+        if (!com.android.window.flags.Flags.cacheWindowStyle()) {
+            final AttributeCache.Entry ent = AttributeCache.instance().get(packageName,
+                    theme, com.android.internal.R.styleable.Window, userId);
+            return ent != null ? new ActivityRecord.WindowStyle(ent.array) : null;
+        }
+        return mWindowStyleCache.get(packageName, theme, userId);
+    }
+
     AppWarnings getAppWarningsLocked() {
         return mAppWarnings;
     }
@@ -6518,6 +6531,7 @@
                 mCompatModePackages.handlePackageUninstalledLocked(name);
                 mPackageConfigPersister.onPackageUninstall(name, userId);
             }
+            mWindowStyleCache.invalidatePackage(name);
         }
 
         @Override
@@ -6534,6 +6548,7 @@
                 if (mRootWindowContainer == null) return;
                 mRootWindowContainer.updateActivityApplicationInfo(aInfo);
             }
+            mWindowStyleCache.invalidatePackage(aInfo.packageName);
         }
 
         @Override
@@ -7433,6 +7448,18 @@
         }
 
         @Override
+        public boolean isNoDisplay(String packageName, int theme, int userId) {
+            if (!com.android.window.flags.Flags.cacheWindowStyle()) {
+                final AttributeCache.Entry ent = AttributeCache.instance()
+                        .get(packageName, theme, R.styleable.Window, userId);
+                return ent != null
+                        && ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
+            }
+            final ActivityRecord.WindowStyle style = getWindowStyle(packageName, theme, userId);
+            return style != null && style.noDisplay();
+        }
+
+        @Override
         public PackageConfigurationUpdater createPackageConfigurationUpdater() {
             return new PackageConfigurationUpdaterImpl(Binder.getCallingPid(),
                     ActivityTaskManagerService.this);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index b607b0f..463a92f 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -900,108 +900,9 @@
                 lockTaskController.startLockTaskMode(task, false, 0 /* blank UID */);
             }
 
-            try {
-                if (!proc.hasThread()) {
-                    throw new RemoteException();
-                }
-                List<ResultInfo> results = null;
-                List<ReferrerIntent> newIntents = null;
-                if (andResume) {
-                    // We don't need to deliver new intents and/or set results if activity is going
-                    // to pause immediately after launch.
-                    results = r.results;
-                    newIntents = r.newIntents;
-                }
-                if (DEBUG_SWITCH) Slog.v(TAG_SWITCH,
-                        "Launching: " + r + " savedState=" + r.getSavedState()
-                                + " with results=" + results + " newIntents=" + newIntents
-                                + " andResume=" + andResume);
-                EventLogTags.writeWmRestartActivity(r.mUserId, System.identityHashCode(r),
-                        task.mTaskId, r.shortComponentName);
-                updateHomeProcessIfNeeded(r);
-                mService.getPackageManagerInternalLocked().notifyPackageUse(
-                        r.intent.getComponent().getPackageName(), NOTIFY_PACKAGE_USE_ACTIVITY);
-                mService.getAppWarningsLocked().onStartActivity(r);
-
-                final Configuration procConfig = proc.prepareConfigurationForLaunchingActivity();
-                final Configuration overrideConfig = r.getMergedOverrideConfiguration();
-                r.setLastReportedConfiguration(procConfig, overrideConfig);
-
-                final ActivityWindowInfo activityWindowInfo = r.getActivityWindowInfo();
-                r.setLastReportedActivityWindowInfo(activityWindowInfo);
-
-                logIfTransactionTooLarge(r.intent, r.getSavedState());
-
-                final TaskFragment organizedTaskFragment = r.getOrganizedTaskFragment();
-                if (organizedTaskFragment != null) {
-                    // Sending TaskFragmentInfo to client to ensure the info is updated before
-                    // the activity creation.
-                    mService.mTaskFragmentOrganizerController.dispatchPendingInfoChangedEvent(
-                            organizedTaskFragment);
-                }
-
-                // Create activity launch transaction.
-                final boolean isTransitionForward = r.isTransitionForward();
-                final IBinder fragmentToken = r.getTaskFragment().getFragmentToken();
-                final int deviceId = getDeviceIdForDisplayId(r.getDisplayId());
-                final LaunchActivityItem launchActivityItem = new LaunchActivityItem(r.token,
-                        r.intent, System.identityHashCode(r), r.info,
-                        procConfig, overrideConfig, deviceId,
-                        r.getFilteredReferrer(r.launchedFromPackage), task.voiceInteractor,
-                        proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(),
-                        results, newIntents, r.takeSceneTransitionInfo(), isTransitionForward,
-                        proc.createProfilerInfoIfNeeded(), r.assistToken, activityClientController,
-                        r.shareableActivityToken, r.getLaunchedFromBubble(), fragmentToken,
-                        r.initialCallerInfoAccessToken, activityWindowInfo);
-
-                // Set desired final state.
-                final ActivityLifecycleItem lifecycleItem;
-                if (andResume) {
-                    lifecycleItem = new ResumeActivityItem(r.token, isTransitionForward,
-                            r.shouldSendCompatFakeFocus());
-                } else if (r.isVisibleRequested()) {
-                    lifecycleItem = new PauseActivityItem(r.token);
-                } else {
-                    lifecycleItem = new StopActivityItem(r.token);
-                }
-
-                // Schedule transaction.
-                if (shouldDispatchLaunchActivityItemIndependently(r.info.packageName, r.getUid())) {
-                    // LaunchActivityItem has @UnsupportedAppUsage usages.
-                    // Guard with targetSDK on Android 15+.
-                    // To not bundle the transaction, dispatch the pending before schedule new
-                    // transaction.
-                    mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
-                }
-                mService.getLifecycleManager().scheduleTransactionItems(
-                        proc.getThread(),
-                        // Immediately dispatch the transaction, so that if it fails, the server can
-                        // restart the process and retry now.
-                        true /* shouldDispatchImmediately */,
-                        launchActivityItem, lifecycleItem);
-
-                if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) {
-                    // If the seq is increased, there should be something changed (e.g. registered
-                    // activity configuration).
-                    proc.setLastReportedConfiguration(procConfig);
-                }
-                if ((proc.mInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0
-                        && mService.mHasHeavyWeightFeature) {
-                    // This may be a heavy-weight process! Note that the package manager will ensure
-                    // that only activity can run in the main process of the .apk, which is the only
-                    // thing that will be considered heavy-weight.
-                    if (proc.mName.equals(proc.mInfo.packageName)) {
-                        if (mService.mHeavyWeightProcess != null
-                                && mService.mHeavyWeightProcess != proc) {
-                            Slog.w(TAG, "Starting new heavy weight process " + proc
-                                    + " when already running "
-                                    + mService.mHeavyWeightProcess);
-                        }
-                        mService.setHeavyWeightProcess(r);
-                    }
-                }
-
-            } catch (RemoteException e) {
+            final RemoteException e = tryRealStartActivityInner(
+                    task, r, proc, activityClientController, andResume);
+            if (e != null) {
                 if (r.launchFailed) {
                     // This is the second time we failed -- finish activity and give up.
                     Slog.e(TAG, "Second failure launching "
@@ -1024,7 +925,7 @@
 
         r.launchFailed = false;
 
-        // TODO(lifecycler): Resume or pause requests are done as part of launch transaction,
+        // Resume or pause requests are done as part of launch transaction,
         // so updating the state should be done accordingly.
         if (andResume && readyToResume()) {
             // As part of the process of launching, ActivityThread also performs
@@ -1064,6 +965,122 @@
         return true;
     }
 
+    /** @return {@link RemoteException} if the app process failed to handle the activity start. */
+    @Nullable
+    private RemoteException tryRealStartActivityInner(
+            @NonNull Task task,
+            @NonNull ActivityRecord r,
+            @NonNull WindowProcessController proc,
+            @Nullable IActivityClientController activityClientController,
+            boolean andResume) {
+        if (!proc.hasThread()) {
+            return new RemoteException();
+        }
+        List<ResultInfo> results = null;
+        List<ReferrerIntent> newIntents = null;
+        if (andResume) {
+            // We don't need to deliver new intents and/or set results if activity is going
+            // to pause immediately after launch.
+            results = r.results;
+            newIntents = r.newIntents;
+        }
+        if (DEBUG_SWITCH) {
+            Slog.v(TAG_SWITCH,
+                    "Launching: " + r + " savedState=" + r.getSavedState()
+                            + " with results=" + results + " newIntents=" + newIntents
+                            + " andResume=" + andResume);
+        }
+        EventLogTags.writeWmRestartActivity(r.mUserId, System.identityHashCode(r),
+                task.mTaskId, r.shortComponentName);
+        updateHomeProcessIfNeeded(r);
+        mService.getPackageManagerInternalLocked().notifyPackageUse(
+                r.intent.getComponent().getPackageName(), NOTIFY_PACKAGE_USE_ACTIVITY);
+        mService.getAppWarningsLocked().onStartActivity(r);
+
+        final Configuration procConfig = proc.prepareConfigurationForLaunchingActivity();
+        final Configuration overrideConfig = r.getMergedOverrideConfiguration();
+        r.setLastReportedConfiguration(procConfig, overrideConfig);
+
+        final ActivityWindowInfo activityWindowInfo = r.getActivityWindowInfo();
+        r.setLastReportedActivityWindowInfo(activityWindowInfo);
+
+        logIfTransactionTooLarge(r.intent, r.getSavedState());
+
+        final TaskFragment organizedTaskFragment = r.getOrganizedTaskFragment();
+        if (organizedTaskFragment != null) {
+            // Sending TaskFragmentInfo to client to ensure the info is updated before
+            // the activity creation.
+            mService.mTaskFragmentOrganizerController.dispatchPendingInfoChangedEvent(
+                    organizedTaskFragment);
+        }
+
+        // Create activity launch transaction.
+        final boolean isTransitionForward = r.isTransitionForward();
+        final IBinder fragmentToken = r.getTaskFragment().getFragmentToken();
+        final int deviceId = getDeviceIdForDisplayId(r.getDisplayId());
+        final LaunchActivityItem launchActivityItem = new LaunchActivityItem(r.token,
+                r.intent, System.identityHashCode(r), r.info,
+                procConfig, overrideConfig, deviceId,
+                r.getFilteredReferrer(r.launchedFromPackage), task.voiceInteractor,
+                proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(),
+                results, newIntents, r.takeSceneTransitionInfo(), isTransitionForward,
+                proc.createProfilerInfoIfNeeded(), r.assistToken, activityClientController,
+                r.shareableActivityToken, r.getLaunchedFromBubble(), fragmentToken,
+                r.initialCallerInfoAccessToken, activityWindowInfo);
+
+        // Set desired final state.
+        final ActivityLifecycleItem lifecycleItem;
+        if (andResume) {
+            lifecycleItem = new ResumeActivityItem(r.token, isTransitionForward,
+                    r.shouldSendCompatFakeFocus());
+        } else if (r.isVisibleRequested()) {
+            lifecycleItem = new PauseActivityItem(r.token);
+        } else {
+            lifecycleItem = new StopActivityItem(r.token);
+        }
+
+        // Schedule transaction.
+        if (shouldDispatchLaunchActivityItemIndependently(r.info.packageName, r.getUid())) {
+            // LaunchActivityItem has @UnsupportedAppUsage usages.
+            // Guard with targetSDK on Android 15+.
+            // To not bundle the transaction, dispatch the pending before schedule new
+            // transaction.
+            mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
+        }
+        try {
+            mService.getLifecycleManager().scheduleTransactionItems(
+                    proc.getThread(),
+                    // Immediately dispatch the transaction, so that if it fails, the server can
+                    // restart the process and retry now.
+                    true /* shouldDispatchImmediately */,
+                    launchActivityItem, lifecycleItem);
+        } catch (RemoteException e) {
+            return e;
+        }
+
+        if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) {
+            // If the seq is increased, there should be something changed (e.g. registered
+            // activity configuration).
+            proc.setLastReportedConfiguration(procConfig);
+        }
+        if ((proc.mInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0
+                && mService.mHasHeavyWeightFeature) {
+            // This may be a heavy-weight process! Note that the package manager will ensure
+            // that only activity can run in the main process of the .apk, which is the only
+            // thing that will be considered heavy-weight.
+            if (proc.mName.equals(proc.mInfo.packageName)) {
+                if (mService.mHeavyWeightProcess != null
+                        && mService.mHeavyWeightProcess != proc) {
+                    Slog.w(TAG, "Starting new heavy weight process " + proc
+                            + " when already running "
+                            + mService.mHeavyWeightProcess);
+                }
+                mService.setHeavyWeightProcess(r);
+            }
+        }
+        return null;
+    }
+
     void updateHomeProcessIfNeeded(@NonNull ActivityRecord r) {
         if (!r.isActivityTypeHome()) return;
         // Make sure that we use the bottom most activity from the same package, because the home
diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
index ac98792..b6f74a0 100644
--- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
@@ -75,8 +75,8 @@
             return RESULT_SKIP;
         }
         if (com.android.window.flags.Flags.fixLayoutExistingTask()
-                && task.getOrganizedTask() != null) {
-            appendLog("task is organized, skipping");
+                && task.getCreatedByOrganizerTask() != null) {
+            appendLog("has created-by-organizer-task, skipping");
             return RESULT_SKIP;
         }
 
@@ -111,6 +111,11 @@
             return RESULT_SKIP;
         }
 
+        if ((options == null || options.getLaunchBounds() == null) && task.hasOverrideBounds()) {
+            appendLog("current task has bounds set, not overriding");
+            return RESULT_SKIP;
+        }
+
         DesktopModeBoundsCalculator.updateInitialBounds(task, layout, activity, options,
                 outParams.mBounds, this::appendLog);
         appendLog("final desktop mode task bounds set to %s", outParams.mBounds);
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 7eebbba..e30c24d 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -3845,7 +3845,6 @@
         if (mTmpWindow == null) {
             ProtoLog.v(WM_DEBUG_FOCUS_LIGHT, "findFocusedWindow: No focusable windows, display=%d",
                     getDisplayId());
-            return null;
         }
         return mTmpWindow;
     }
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index a698a9e..bbda849 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -1910,7 +1910,8 @@
         if (!hasDirectChildActivities()) {
             return false;
         }
-        if (mResumedActivity != null && mTransitionController.isTransientLaunch(mResumedActivity)) {
+        if (mResumedActivity != null && !mResumedActivity.finishing
+                && mTransitionController.isTransientLaunch(mResumedActivity)) {
             // Even if the transient activity is occluded, defer pausing (addToStopping will still
             // be called) it until the transient transition is done. So the current resuming
             // activity won't need to wait for additional pause complete.
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index e3a5b66..6c7d979 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -384,7 +384,7 @@
                 // an existing task.
                 adjustBoundsToAvoidConflictInDisplayArea(taskDisplayArea, outParams.mBounds);
             }
-        } else {
+        } else if (task == null || !task.hasOverrideBounds()) {
             if (source != null && source.inFreeformWindowingMode()
                     && resolvedMode == WINDOWING_MODE_FREEFORM
                     && outParams.mBounds.isEmpty()
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index d699a68..0b20911 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1820,122 +1820,8 @@
             final boolean hideSystemAlertWindows = shouldHideNonSystemOverlayWindow(win);
             win.setForceHideNonSystemOverlayWindowIfNeeded(hideSystemAlertWindows);
 
-            boolean imMayMove = true;
-
-            win.mToken.addWindow(win);
-            displayPolicy.addWindowLw(win, attrs);
-            displayPolicy.setDropInputModePolicy(win, win.mAttrs);
-            if (type == TYPE_APPLICATION_STARTING && activity != null) {
-                activity.attachStartingWindow(win);
-                ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "addWindow: %s startingWindow=%s",
-                        activity, win);
-            } else if (type == TYPE_INPUT_METHOD
-                    // IME window is always touchable.
-                    // Ignore non-touchable windows e.g. Stylus InkWindow.java.
-                    && (win.getAttrs().flags & FLAG_NOT_TOUCHABLE) == 0) {
-                displayContent.setInputMethodWindowLocked(win);
-                imMayMove = false;
-            } else if (type == TYPE_INPUT_METHOD_DIALOG) {
-                displayContent.computeImeTarget(true /* updateImeTarget */);
-                imMayMove = false;
-            } else {
-                if (type == TYPE_WALLPAPER) {
-                    displayContent.mWallpaperController.clearLastWallpaperTimeoutTime();
-                    displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
-                } else if (win.hasWallpaper()) {
-                    displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
-                } else if (displayContent.mWallpaperController.isBelowWallpaperTarget(win)) {
-                    // If there is currently a wallpaper being shown, and
-                    // the base layer of the new window is below the current
-                    // layer of the target window, then adjust the wallpaper.
-                    // This is to avoid a new window being placed between the
-                    // wallpaper and its target.
-                    displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
-                }
-            }
-
-            final WindowStateAnimator winAnimator = win.mWinAnimator;
-            winAnimator.mEnterAnimationPending = true;
-            winAnimator.mEnteringAnimation = true;
-
-            if (displayPolicy.areSystemBarsForcedConsumedLw()) {
-                res |= WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS;
-            }
-            if (displayContent.isInTouchMode()) {
-                res |= WindowManagerGlobal.ADD_FLAG_IN_TOUCH_MODE;
-            }
-            if (win.mActivityRecord == null || win.mActivityRecord.isClientVisible()) {
-                res |= WindowManagerGlobal.ADD_FLAG_APP_VISIBLE;
-            }
-
-            displayContent.getInputMonitor().setUpdateInputWindowsNeededLw();
-
-            boolean focusChanged = false;
-            if (win.canReceiveKeys()) {
-                focusChanged = updateFocusedWindowLocked(UPDATE_FOCUS_WILL_ASSIGN_LAYERS,
-                        false /*updateInputWindows*/);
-                if (focusChanged) {
-                    imMayMove = false;
-                }
-            }
-
-            if (imMayMove) {
-                displayContent.computeImeTarget(true /* updateImeTarget */);
-                if (win.isImeOverlayLayeringTarget()) {
-                    dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type,
-                            win.isVisibleRequestedOrAdding(), false /* removed */,
-                            displayContent.getDisplayId());
-                }
-            }
-
-            // Don't do layout here, the window must call
-            // relayout to be displayed, so we'll do it there.
-            if (win.mActivityRecord != null && win.mActivityRecord.isEmbedded()) {
-                // Assign child layers from the parent Task if the Activity is embedded.
-                win.getTask().assignChildLayers();
-            } else {
-                win.getParent().assignChildLayers();
-            }
-
-            if (focusChanged) {
-                displayContent.getInputMonitor().setInputFocusLw(displayContent.mCurrentFocus,
-                        false /*updateInputWindows*/);
-            }
-            displayContent.getInputMonitor().updateInputWindowsLw(false /*force*/);
-
-            ProtoLog.v(WM_DEBUG_ADD_REMOVE, "addWindow: New client %s"
-                    + ": window=%s Callers=%s", client.asBinder(), win, Debug.getCallers(5));
-
-            boolean needToSendNewConfiguration =
-                    win.isVisibleRequestedOrAdding() && displayContent.updateOrientation();
-            if (win.providesDisplayDecorInsets()) {
-                needToSendNewConfiguration |= displayPolicy.updateDecorInsetsInfo();
-            }
-            if (needToSendNewConfiguration) {
-                displayContent.sendNewConfiguration();
-            }
-
-            // This window doesn't have a frame yet. Don't let this window cause the insets change.
-            displayContent.getInsetsStateController().updateAboveInsetsState(
-                    false /* notifyInsetsChanged */);
-
-            win.fillInsetsState(outInsetsState, true /* copySources */);
-            getInsetsSourceControls(win, outActiveControls);
-
-            if (win.mLayoutAttached) {
-                outAttachedFrame.set(win.getParentWindow().getFrame());
-                if (win.mInvGlobalScale != 1f) {
-                    outAttachedFrame.scale(win.mInvGlobalScale);
-                }
-            } else {
-                // Make this invalid which indicates a null attached frame.
-                outAttachedFrame.set(0, 0, -1, -1);
-            }
-            outSizeCompatScale[0] = win.getCompatScaleForClient();
-
-            if (res >= ADD_OKAY && win.isPresentation()) {
-                mPresentationController.onPresentationAdded(win);
-            }
+            res |= addWindowInner(win, displayPolicy, activity, displayContent, outInsetsState,
+                    outAttachedFrame, outActiveControls, client, outSizeCompatScale, attrs);
         }
 
         Binder.restoreCallingIdentity(origId);
@@ -1943,6 +1829,133 @@
         return res;
     }
 
+    private int addWindowInner(@NonNull WindowState win, @NonNull DisplayPolicy displayPolicy,
+            @NonNull ActivityRecord activity, @NonNull DisplayContent displayContent,
+            @NonNull InsetsState outInsetsState, @NonNull Rect outAttachedFrame,
+            @NonNull InsetsSourceControl.Array outActiveControls, @NonNull IWindow client,
+            @NonNull float[] outSizeCompatScale, @NonNull LayoutParams attrs) {
+        int res = 0;
+        final int type = attrs.type;
+        boolean imMayMove = true;
+
+        win.mToken.addWindow(win);
+        displayPolicy.addWindowLw(win, attrs);
+        displayPolicy.setDropInputModePolicy(win, win.mAttrs);
+        if (type == TYPE_APPLICATION_STARTING && activity != null) {
+            activity.attachStartingWindow(win);
+            ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "addWindow: %s startingWindow=%s",
+                    activity, win);
+        } else if (type == TYPE_INPUT_METHOD
+                // IME window is always touchable.
+                // Ignore non-touchable windows e.g. Stylus InkWindow.java.
+                && (win.getAttrs().flags & FLAG_NOT_TOUCHABLE) == 0) {
+            displayContent.setInputMethodWindowLocked(win);
+            imMayMove = false;
+        } else if (type == TYPE_INPUT_METHOD_DIALOG) {
+            displayContent.computeImeTarget(true /* updateImeTarget */);
+            imMayMove = false;
+        } else {
+            if (type == TYPE_WALLPAPER) {
+                displayContent.mWallpaperController.clearLastWallpaperTimeoutTime();
+                displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+            } else if (win.hasWallpaper()) {
+                displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+            } else if (displayContent.mWallpaperController.isBelowWallpaperTarget(win)) {
+                // If there is currently a wallpaper being shown, and
+                // the base layer of the new window is below the current
+                // layer of the target window, then adjust the wallpaper.
+                // This is to avoid a new window being placed between the
+                // wallpaper and its target.
+                displayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+            }
+        }
+
+        final WindowStateAnimator winAnimator = win.mWinAnimator;
+        winAnimator.mEnterAnimationPending = true;
+        winAnimator.mEnteringAnimation = true;
+
+        if (displayPolicy.areSystemBarsForcedConsumedLw()) {
+            res |= WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS;
+        }
+        if (displayContent.isInTouchMode()) {
+            res |= WindowManagerGlobal.ADD_FLAG_IN_TOUCH_MODE;
+        }
+        if (win.mActivityRecord == null || win.mActivityRecord.isClientVisible()) {
+            res |= WindowManagerGlobal.ADD_FLAG_APP_VISIBLE;
+        }
+
+        displayContent.getInputMonitor().setUpdateInputWindowsNeededLw();
+
+        boolean focusChanged = false;
+        if (win.canReceiveKeys()) {
+            focusChanged = updateFocusedWindowLocked(UPDATE_FOCUS_WILL_ASSIGN_LAYERS,
+                    false /*updateInputWindows*/);
+            if (focusChanged) {
+                imMayMove = false;
+            }
+        }
+
+        if (imMayMove) {
+            displayContent.computeImeTarget(true /* updateImeTarget */);
+            if (win.isImeOverlayLayeringTarget()) {
+                dispatchImeTargetOverlayVisibilityChanged(client.asBinder(), win.mAttrs.type,
+                        win.isVisibleRequestedOrAdding(), false /* removed */,
+                        displayContent.getDisplayId());
+            }
+        }
+
+        // Don't do layout here, the window must call
+        // relayout to be displayed, so we'll do it there.
+        if (win.mActivityRecord != null && win.mActivityRecord.isEmbedded()) {
+            // Assign child layers from the parent Task if the Activity is embedded.
+            win.getTask().assignChildLayers();
+        } else {
+            win.getParent().assignChildLayers();
+        }
+
+        if (focusChanged) {
+            displayContent.getInputMonitor().setInputFocusLw(displayContent.mCurrentFocus,
+                    false /*updateInputWindows*/);
+        }
+        displayContent.getInputMonitor().updateInputWindowsLw(false /*force*/);
+
+        ProtoLog.v(WM_DEBUG_ADD_REMOVE, "addWindow: New client %s"
+                + ": window=%s Callers=%s", client.asBinder(), win, Debug.getCallers(5));
+
+        boolean needToSendNewConfiguration =
+                win.isVisibleRequestedOrAdding() && displayContent.updateOrientation();
+        if (win.providesDisplayDecorInsets()) {
+            needToSendNewConfiguration |= displayPolicy.updateDecorInsetsInfo();
+        }
+        if (needToSendNewConfiguration) {
+            displayContent.sendNewConfiguration();
+        }
+
+        // This window doesn't have a frame yet. Don't let this window cause the insets change.
+        displayContent.getInsetsStateController().updateAboveInsetsState(
+                false /* notifyInsetsChanged */);
+
+        win.fillInsetsState(outInsetsState, true /* copySources */);
+        getInsetsSourceControls(win, outActiveControls);
+
+        if (win.mLayoutAttached) {
+            outAttachedFrame.set(win.getParentWindow().getFrame());
+            if (win.mInvGlobalScale != 1f) {
+                outAttachedFrame.scale(win.mInvGlobalScale);
+            }
+        } else {
+            // Make this invalid which indicates a null attached frame.
+            outAttachedFrame.set(0, 0, -1, -1);
+        }
+        outSizeCompatScale[0] = win.getCompatScaleForClient();
+
+        if (res >= ADD_OKAY && win.isPresentation()) {
+            mPresentationController.onPresentationAdded(win);
+        }
+
+        return res;
+    }
+
     private boolean unprivilegedAppCanCreateTokenWith(WindowState parentWindow,
             int callingUid, int type, int rootType, IBinder tokenForLog, String packageName) {
         if (rootType >= FIRST_APPLICATION_WINDOW && rootType <= LAST_APPLICATION_WINDOW) {
diff --git a/services/core/java/com/android/server/wm/utils/WindowStyleCache.java b/services/core/java/com/android/server/wm/utils/WindowStyleCache.java
new file mode 100644
index 0000000..a253c2c
--- /dev/null
+++ b/services/core/java/com/android/server/wm/utils/WindowStyleCache.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.utils;
+
+import android.content.res.TypedArray;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+
+import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.policy.AttributeCache;
+
+import java.util.function.Function;
+
+/**
+ * A wrapper of AttributeCache to preserve more dedicated style caches.
+ * @param <T> The type of style cache.
+ */
+public class WindowStyleCache<T> {
+    @GuardedBy("itself")
+    private final ArrayMap<String, SparseArray<T>> mCache = new ArrayMap<>();
+    private final Function<TypedArray, T> mEntryFactory;
+
+    public WindowStyleCache(Function<TypedArray, T> entryFactory) {
+        mEntryFactory = entryFactory;
+    }
+
+    /** Returns the cached entry. */
+    public T get(String packageName, int theme, int userId) {
+        SparseArray<T> themeMap;
+        synchronized (mCache) {
+            themeMap = mCache.get(packageName);
+            if (themeMap != null) {
+                T style = themeMap.get(theme);
+                if (style != null) {
+                    return style;
+                }
+            }
+        }
+
+        final AttributeCache attributeCache = AttributeCache.instance();
+        if (attributeCache == null) {
+            return null;
+        }
+        final AttributeCache.Entry ent = attributeCache.get(packageName, theme,
+                R.styleable.Window, userId);
+        if (ent == null) {
+            return null;
+        }
+
+        final T style = mEntryFactory.apply(ent.array);
+        synchronized (mCache) {
+            if (themeMap == null) {
+                mCache.put(packageName, themeMap = new SparseArray<>());
+            }
+            themeMap.put(theme, style);
+        }
+        return style;
+    }
+
+    /** Called when the package is updated or removed. */
+    public void invalidatePackage(String packageName) {
+        synchronized (mCache) {
+            mCache.remove(packageName);
+        }
+    }
+}
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
index 40554ac..7edf646 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
@@ -21,11 +21,16 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.credentials.CredentialManager;
 import android.credentials.CredentialProviderInfo;
+import android.credentials.flags.Flags;
 import android.service.credentials.CredentialProviderInfoFactory;
+import android.service.credentials.CredentialProviderService;
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
@@ -78,14 +83,16 @@
         mInfo = providerInfo;
     }
 
-    @Override // from PerUserSystemService when a new setting based service is to be created
+    @Override // from PerUserSystemService when a new service is to be created
     @GuardedBy("mLock")
     protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent)
-            throws PackageManager.NameNotFoundException {
+            throws PackageManager.NameNotFoundException, SecurityException, NullPointerException {
+        boolean isSystemProvider = false;
         if (mInfo != null) {
             Slog.i(TAG, "newServiceInfoLocked, mInfo not null : "
                     + mInfo.getServiceInfo().getComponentName().flattenToString() + " , "
                     + serviceComponent.flattenToString());
+            isSystemProvider = mInfo.isSystemProvider();
         } else {
             Slog.i(TAG, "newServiceInfoLocked, mInfo null, "
                     + serviceComponent.flattenToString());
@@ -94,7 +101,7 @@
                 getPrimaryProvidersForUserId(mMaster.getContext(), mUserId);
         mInfo = CredentialProviderInfoFactory.create(
                 getContext(), serviceComponent,
-                mUserId, /*isSystemProvider=*/false,
+                mUserId, isSystemProvider,
                 primaryProviders.contains(serviceComponent));
         return mInfo.getServiceInfo();
     }
@@ -148,15 +155,63 @@
      * @param packageName package of the app being updated.
      */
     @GuardedBy("mLock")
+    @SuppressWarnings("GuardedBy") // ErrorProne requires this.mMaster.mLock which is the case
+    // because this method is called by this.mMaster anyway
     protected void handlePackageUpdateLocked(@NonNull String packageName) {
         if (mInfo != null && mInfo.getServiceInfo() != null
                 && mInfo.getServiceInfo().getComponentName()
                 .getPackageName().equals(packageName)) {
-            try {
-                newServiceInfoLocked(mInfo.getServiceInfo().getComponentName());
-            } catch (PackageManager.NameNotFoundException e) {
-                Slog.e(TAG, "Issue while updating serviceInfo: " + e.getMessage());
+            if (Flags.packageUpdateFixEnabled()) {
+                try {
+                    updateCredentialProviderInfo(mInfo.getServiceInfo().getComponentName(),
+                            mInfo.isSystemProvider());
+                } catch (SecurityException | PackageManager.NameNotFoundException
+                         | NullPointerException e) {
+                    Slog.w(TAG, "Unable to update provider, must be removed: " + e.getMessage());
+                    mMaster.handleServiceRemovedMultiModeLocked(mInfo.getComponentName(), mUserId);
+                }
+            } else {
+                try {
+                    newServiceInfoLocked(mInfo.getServiceInfo().getComponentName());
+                } catch (PackageManager.NameNotFoundException e) {
+                    Slog.e(TAG, "Issue while updating serviceInfo: " + e.getMessage());
+                }
             }
         }
     }
+
+    @GuardedBy("mLock")
+    private void updateCredentialProviderInfo(ComponentName componentName, boolean isSystemProvider)
+            throws SecurityException, PackageManager.NameNotFoundException {
+        Slog.d(TAG, "Updating credential provider: " + componentName.flattenToString());
+        if (!isValidCredentialProviderInfo(componentName, mUserId, isSystemProvider)) {
+            throw new SecurityException("Service has not been set up correctly");
+        }
+        newServiceInfoLocked(componentName);
+    }
+
+    private boolean isValidCredentialProviderInfo(ComponentName componentName, int userId,
+            boolean isSystemProvider) {
+        Context context = getContext();
+        if (context == null) {
+            return false;
+        }
+        String serviceInterface = CredentialProviderService.SERVICE_INTERFACE;
+        if (isSystemProvider) {
+            serviceInterface = CredentialProviderService.SYSTEM_SERVICE_INTERFACE;
+        }
+        final List<ResolveInfo> resolveInfos =
+                context.getPackageManager()
+                        .queryIntentServicesAsUser(
+                                new Intent(serviceInterface),
+                                PackageManager.ResolveInfoFlags.of(PackageManager.GET_META_DATA),
+                                userId);
+        for (ResolveInfo resolveInfo : resolveInfos) {
+            final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+            if (serviceInfo.getComponentName().equals(componentName)) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index bbbfe0b..5b7e7f1 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -65,6 +65,7 @@
 import android.util.SparseArray;
 import android.util.Xml;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.XmlUtils;
 import com.android.modules.utils.TypedXmlPullParser;
 import com.android.modules.utils.TypedXmlSerializer;
@@ -120,11 +121,13 @@
     /**
      * Map of <userId, Map<policyKey, policyState>>
      */
+    @GuardedBy("mLock")
     private final SparseArray<Map<PolicyKey, PolicyState<?>>> mLocalPolicies;
 
     /**
      * Map of <policyKey, policyState>
      */
+    @GuardedBy("mLock")
     private final Map<PolicyKey, PolicyState<?>> mGlobalPolicies;
 
     /**
@@ -152,6 +155,7 @@
         mAdminPolicySize = new SparseArray<>();
     }
 
+    @GuardedBy("mLock")
     private void forceEnforcementRefreshIfUserRestrictionLocked(
             @NonNull PolicyDefinition<?> policyDefinition) {
         try {
@@ -185,6 +189,7 @@
         return false;
     }
 
+    @GuardedBy("mLock")
     private void forceEnforcementRefreshLocked(PolicyDefinition<Boolean> policyDefinition) {
         Binder.withCleanCallingIdentity(() -> {
             // Sync global state
@@ -296,6 +301,7 @@
      *
      * <p>Passing a {@code null} value means the policy set by this admin should be removed.
      */
+    @GuardedBy("mLock")
     private <V> void setNonCoexistableLocalPolicyLocked(
             PolicyDefinition<V> policyDefinition,
             PolicyState<V> localPolicyState,
@@ -440,6 +446,7 @@
     /**
      * Enforces the new policy and notifies relevant admins.
      */
+    @GuardedBy("mLock")
     private <V> void onLocalPolicyChangedLocked(
             @NonNull PolicyDefinition<V> policyDefinition,
             @NonNull EnforcingAdmin enforcingAdmin,
@@ -600,6 +607,7 @@
     /**
      * Enforces the new policy globally and notifies relevant admins.
      */
+    @GuardedBy("mLock")
     private <V> void onGlobalPolicyChangedLocked(
             @NonNull PolicyDefinition<V> policyDefinition,
             @NonNull EnforcingAdmin enforcingAdmin) {
@@ -627,6 +635,7 @@
      *
      * <p>Returns {@code true} if the policy is enforced successfully on all users.
      */
+    @GuardedBy("mLock")
     private <V> boolean applyGlobalPolicyOnUsersWithLocalPoliciesLocked(
             @NonNull PolicyDefinition<V> policyDefinition,
             @NonNull EnforcingAdmin enforcingAdmin,
@@ -930,6 +939,7 @@
         removePoliciesForAdmin(oldAdmin);
     }
 
+    @GuardedBy("mLock")
     private Set<UserRestrictionPolicyKey> getUserRestrictionPolicyKeysForAdminLocked(
             Map<PolicyKey, PolicyState<?>> policies,
             EnforcingAdmin admin) {
@@ -949,6 +959,7 @@
         return keys;
     }
 
+    @GuardedBy("mLock")
     private <V> boolean hasLocalPolicyLocked(PolicyDefinition<V> policyDefinition, int userId) {
         if (policyDefinition.isGlobalOnlyPolicy()) {
             return false;
@@ -963,6 +974,7 @@
                 .getPoliciesSetByAdmins().isEmpty();
     }
 
+    @GuardedBy("mLock")
     private <V> boolean hasGlobalPolicyLocked(PolicyDefinition<V> policyDefinition) {
         if (policyDefinition.isLocalOnlyPolicy()) {
             return false;
@@ -974,6 +986,7 @@
                 .isEmpty();
     }
 
+    @GuardedBy("mLock")
     @NonNull
     private <V> PolicyState<V> getLocalPolicyStateLocked(
             PolicyDefinition<V> policyDefinition, int userId) {
@@ -993,6 +1006,7 @@
         return getPolicyStateLocked(mLocalPolicies.get(userId), policyDefinition);
     }
 
+    @GuardedBy("mLock")
     private <V> void removeLocalPolicyStateLocked(
             PolicyDefinition<V> policyDefinition, int userId) {
         if (!mLocalPolicies.contains(userId)) {
@@ -1001,6 +1015,7 @@
         mLocalPolicies.get(userId).remove(policyDefinition.getPolicyKey());
     }
 
+    @GuardedBy("mLock")
     @NonNull
     private <V> PolicyState<V> getGlobalPolicyStateLocked(PolicyDefinition<V> policyDefinition) {
         if (policyDefinition.isLocalOnlyPolicy()) {
@@ -1015,10 +1030,12 @@
         return getPolicyStateLocked(mGlobalPolicies, policyDefinition);
     }
 
+    @GuardedBy("mLock")
     private <V> void removeGlobalPolicyStateLocked(PolicyDefinition<V> policyDefinition) {
         mGlobalPolicies.remove(policyDefinition.getPolicyKey());
     }
 
+    @GuardedBy("mLock")
     private static <V> PolicyState<V> getPolicyStateLocked(
             Map<PolicyKey, PolicyState<?>> policies, PolicyDefinition<V> policyDefinition) {
         try {
@@ -1089,6 +1106,7 @@
     }
 
     // TODO(b/261430877): Finalise the decision on which admins to send the updates to.
+    @GuardedBy("mLock")
     private <V> void sendPolicyChangedToAdminsLocked(
             PolicyState<V> policyState,
             EnforcingAdmin callingAdmin,
@@ -1378,6 +1396,7 @@
         });
     }
 
+    @GuardedBy("mLock")
     private <V> void enforcePolicyOnUserLocked(int userId, PolicyState<V> policyState) {
         if (!policyState.getPolicyDefinition().isInheritable()) {
             return;
@@ -1509,6 +1528,7 @@
      * Called after an admin policy has been added to start binding to the admin if a connection
      * was not already established.
      */
+    @GuardedBy("mLock")
     private void updateDeviceAdminServiceOnPolicyAddLocked(@NonNull EnforcingAdmin enforcingAdmin) {
         int userId = enforcingAdmin.getUserId();
 
@@ -1537,6 +1557,7 @@
      * Called after an admin policy has been removed to stop binding to the admin if they no longer
      * have any policies set.
      */
+    @GuardedBy("mLock")
     private void updateDeviceAdminServiceOnPolicyRemoveLocked(
             @NonNull EnforcingAdmin enforcingAdmin) {
         if (doesAdminHavePoliciesLocked(enforcingAdmin)) {
@@ -1562,6 +1583,7 @@
                 /* actionForLog= */ "policy-removed");
     }
 
+    @GuardedBy("mLock")
     private boolean doesAdminHavePoliciesLocked(@NonNull EnforcingAdmin enforcingAdmin) {
         for (PolicyKey policy : mGlobalPolicies.keySet()) {
             PolicyState<?> policyState = mGlobalPolicies.get(policy);
@@ -1785,6 +1807,7 @@
         }
     }
 
+    @GuardedBy("mLock")
     <V> void reapplyAllPoliciesOnBootLocked() {
         for (PolicyKey policy : mGlobalPolicies.keySet()) {
             PolicyState<?> policyState = mGlobalPolicies.get(policy);
@@ -1919,6 +1942,7 @@
             }
         }
 
+        @GuardedBy("mLock")
         void writeToFileLocked() {
             Log.d(TAG, "Writing to " + mFile);
 
@@ -1931,7 +1955,7 @@
                 out.startDocument(null, true);
 
                 // Actual content
-                writeInner(out);
+                writeInnerLocked(out);
 
                 out.endDocument();
                 out.flush();
@@ -1948,16 +1972,19 @@
             }
         }
 
+        @GuardedBy("mLock")
         // TODO(b/256846294): Add versioning to read/write
-        void writeInner(TypedXmlSerializer serializer) throws IOException {
-            writeLocalPoliciesInner(serializer);
-            writeGlobalPoliciesInner(serializer);
-            writeEnforcingAdminsInner(serializer);
-            writeEnforcingAdminSizeInner(serializer);
-            writeMaxPolicySizeInner(serializer);
+        void writeInnerLocked(TypedXmlSerializer serializer) throws IOException {
+            writeLocalPoliciesInnerLocked(serializer);
+            writeGlobalPoliciesInnerLocked(serializer);
+            writeEnforcingAdminsInnerLocked(serializer);
+            writeEnforcingAdminSizeInnerLocked(serializer);
+            writeMaxPolicySizeInnerLocked(serializer);
         }
 
-        private void writeLocalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
+        @GuardedBy("mLock")
+        private void writeLocalPoliciesInnerLocked(TypedXmlSerializer serializer)
+                throws IOException {
             if (mLocalPolicies != null) {
                 for (int i = 0; i < mLocalPolicies.size(); i++) {
                     int userId = mLocalPolicies.keyAt(i);
@@ -1981,7 +2008,9 @@
             }
         }
 
-        private void writeGlobalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
+        @GuardedBy("mLock")
+        private void writeGlobalPoliciesInnerLocked(TypedXmlSerializer serializer)
+                throws IOException {
             if (mGlobalPolicies != null) {
                 for (Map.Entry<PolicyKey, PolicyState<?>> policy : mGlobalPolicies.entrySet()) {
                     serializer.startTag(/* namespace= */ null, TAG_GLOBAL_POLICY_ENTRY);
@@ -1999,7 +2028,9 @@
             }
         }
 
-        private void writeEnforcingAdminsInner(TypedXmlSerializer serializer) throws IOException {
+        @GuardedBy("mLock")
+        private void writeEnforcingAdminsInnerLocked(TypedXmlSerializer serializer)
+                throws IOException {
             if (mEnforcingAdmins != null) {
                 for (int i = 0; i < mEnforcingAdmins.size(); i++) {
                     int userId = mEnforcingAdmins.keyAt(i);
@@ -2012,7 +2043,8 @@
             }
         }
 
-        private void writeEnforcingAdminSizeInner(TypedXmlSerializer serializer)
+        @GuardedBy("mLock")
+        private void writeEnforcingAdminSizeInnerLocked(TypedXmlSerializer serializer)
                 throws IOException {
             if (mAdminPolicySize != null) {
                 for (int i = 0; i < mAdminPolicySize.size(); i++) {
@@ -2034,7 +2066,8 @@
             }
         }
 
-        private void writeMaxPolicySizeInner(TypedXmlSerializer serializer)
+        @GuardedBy("mLock")
+        private void writeMaxPolicySizeInnerLocked(TypedXmlSerializer serializer)
                 throws IOException {
             serializer.startTag(/* namespace= */ null, TAG_MAX_POLICY_SIZE_LIMIT);
             serializer.attributeInt(
@@ -2042,6 +2075,7 @@
             serializer.endTag(/* namespace= */ null, TAG_MAX_POLICY_SIZE_LIMIT);
         }
 
+        @GuardedBy("mLock")
         void readFromFileLocked() {
             if (!mFile.exists()) {
                 Log.d(TAG, "" + mFile + " doesn't exist");
@@ -2055,7 +2089,7 @@
                 input = f.openRead();
                 TypedXmlPullParser parser = Xml.resolvePullParser(input);
 
-                readInner(parser);
+                readInnerLocked(parser);
 
             } catch (XmlPullParserException | IOException | ClassNotFoundException e) {
                 Slogf.wtf(TAG, "Error parsing resources file", e);
@@ -2064,7 +2098,8 @@
             }
         }
 
-        private void readInner(TypedXmlPullParser parser)
+        @GuardedBy("mLock")
+        private void readInnerLocked(TypedXmlPullParser parser)
                 throws IOException, XmlPullParserException, ClassNotFoundException {
             int outerDepth = parser.getDepth();
             while (XmlUtils.nextElementWithin(parser, outerDepth)) {
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
index 2d3f723..ae5e851 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
@@ -866,6 +866,9 @@
                     () -> mActivity.showImeWithWindowInsetsController(),
                     EVENT_SHOW, true /* eventExpected */, true /* shown */, "IME is shown");
 
+            eventually(() -> assertWithMessage("IME navigation bar is shown")
+                    .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue());
+
             final var backButton = getUiObject(By.res(INPUT_METHOD_NAV_BACK_ID));
             verifyInputViewStatus(
                     () -> {
@@ -892,6 +895,9 @@
                     () -> mActivity.showImeWithWindowInsetsController(),
                     EVENT_SHOW, true /* eventExpected */, true /* shown */, "IME is shown");
 
+            eventually(() -> assertWithMessage("IME navigation bar is shown")
+                    .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue());
+
             final var backButton = getUiObject(By.res(INPUT_METHOD_NAV_BACK_ID));
             verifyInputViewStatus(
                     () -> {
@@ -927,6 +933,9 @@
                     },
                     EVENT_SHOW, true /* eventExpected */, true /* shown */, "IME is shown");
 
+            eventually(() -> assertWithMessage("IME navigation bar is shown")
+                    .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue());
+
             final var imeSwitcherButton = getUiObject(By.res(INPUT_METHOD_NAV_IME_SWITCHER_ID));
             imeSwitcherButton.click();
             mInstrumentation.waitForIdleSync();
@@ -965,6 +974,9 @@
                     },
                     EVENT_SHOW, true /* eventExpected */, true /* shown */, "IME is shown");
 
+            eventually(() -> assertWithMessage("IME navigation bar is shown")
+                    .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue());
+
             final var imeSwitcherButton = getUiObject(By.res(INPUT_METHOD_NAV_IME_SWITCHER_ID));
             imeSwitcherButton.longClick();
             mInstrumentation.waitForIdleSync();
diff --git a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
index 7d25acd..a421163 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
@@ -152,7 +152,7 @@
                     }
 
                     @Override
-                    AutomaticBrightnessController.Clock createClock(boolean isEnabled) {
+                    AutomaticBrightnessController.Clock createClock() {
                         return new AutomaticBrightnessController.Clock() {
                             @Override
                             public long uptimeMillis() {
@@ -618,39 +618,46 @@
         long increment = 500;
         // set autobrightness to low
         // t = 0
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
 
         // t = 500
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
 
         // t = 1000
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(0.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 1500
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(0.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 2000
         // ensure that our reading is at 0.
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(0.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 2500
         // first 10000 lux sensor event reading
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertTrue(mController.getAmbientLux() > 0.0f);
         assertTrue(mController.getAmbientLux() < 10000.0f);
 
         // t = 3000
         // lux reading should still not yet be 10000.
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertTrue(mController.getAmbientLux() > 0.0f);
         assertTrue(mController.getAmbientLux() < 10000.0f);
 
@@ -659,45 +666,53 @@
         // lux has been high (10000) for 1000ms.
         // lux reading should be 10000
         // short horizon (ambient lux) is high, long horizon is still not high
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(10000.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 4000
         // stay high
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(10000.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 4500
         Mockito.clearInvocations(mBrightnessMappingStrategy);
         mClock.fastForward(increment);
         // short horizon is high, long horizon is high too
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 10000,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         verify(mBrightnessMappingStrategy, times(1)).getBrightness(10000, null, -1);
         assertEquals(10000.0f, mController.getAmbientLux(), EPSILON);
 
         // t = 5000
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertTrue(mController.getAmbientLux() > 0.0f);
         assertTrue(mController.getAmbientLux() < 10000.0f);
 
         // t = 5500
         mClock.fastForward(increment);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertTrue(mController.getAmbientLux() > 0.0f);
         assertTrue(mController.getAmbientLux() < 10000.0f);
 
         // t = 6000
         mClock.fastForward(increment);
         // ambient lux goes to 0
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 0,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(0.0f, mController.getAmbientLux(), EPSILON);
 
         // only the values within the horizon should be kept
         assertArrayEquals(new float[] {10000, 10000, 0, 0, 0}, mController.getLastSensorValues(),
                 EPSILON);
-        assertArrayEquals(new long[] {4000, 4500, 5000, 5500, 6000},
+        assertArrayEquals(new long[]{4000 + ANDROID_SLEEP_TIME, 4500 + ANDROID_SLEEP_TIME,
+                5000 + ANDROID_SLEEP_TIME, 5500 + ANDROID_SLEEP_TIME,
+                6000 + ANDROID_SLEEP_TIME},
                 mController.getLastSensorTimestamps());
     }
 
@@ -793,7 +808,8 @@
         for (int i = 0; i < 1000; i++) {
             lux += increment;
             mClock.fastForward(increment);
-            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux));
+            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux,
+                    (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         }
 
         int valuesCount = (int) Math.ceil((double) AMBIENT_LIGHT_HORIZON_LONG / increment + 1);
@@ -807,17 +823,17 @@
         long sensorTimestamp = mClock.now();
         for (int i = valuesCount - 1; i >= 1; i--) {
             assertEquals(lux, sensorValues[i], EPSILON);
-            assertEquals(sensorTimestamp, sensorTimestamps[i]);
+            assertEquals(sensorTimestamp + ANDROID_SLEEP_TIME, sensorTimestamps[i]);
             lux -= increment;
             sensorTimestamp -= increment;
         }
         assertEquals(lux, sensorValues[0], EPSILON);
-        assertEquals(mClock.now() - AMBIENT_LIGHT_HORIZON_LONG, sensorTimestamps[0]);
+        assertEquals(mClock.now() - AMBIENT_LIGHT_HORIZON_LONG + ANDROID_SLEEP_TIME,
+                sensorTimestamps[0]);
     }
 
     @Test
     public void testAmbientLuxBuffers_prunedBeyondLongHorizonExceptLatestValue() throws Exception {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         ArgumentCaptor<SensorEventListener> listenerCaptor =
                 ArgumentCaptor.forClass(SensorEventListener.class);
         verify(mSensorManager).registerListener(listenerCaptor.capture(), eq(mLightSensor),
@@ -867,7 +883,8 @@
         for (int i = 0; i < 20; i++) {
             lux += increment1;
             mClock.fastForward(increment1);
-            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux));
+            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux,
+                    (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         }
 
         int valuesCount = (int) Math.ceil((double) AMBIENT_LIGHT_HORIZON_LONG / increment1 + 1);
@@ -877,7 +894,8 @@
         for (int i = 0; i < initialCapacity - valuesCount; i++) {
             lux += increment2;
             mClock.fastForward(increment2);
-            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux));
+            listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, lux,
+                    (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         }
 
         float[] sensorValues = mController.getLastSensorValues();
@@ -890,7 +908,7 @@
         long sensorTimestamp = mClock.now();
         for (int i = initialCapacity - 1; i >= 1; i--) {
             assertEquals(lux, sensorValues[i], EPSILON);
-            assertEquals(sensorTimestamp, sensorTimestamps[i]);
+            assertEquals(sensorTimestamp + ANDROID_SLEEP_TIME, sensorTimestamps[i]);
 
             if (i >= valuesCount) {
                 lux -= increment2;
@@ -901,7 +919,8 @@
             }
         }
         assertEquals(lux, sensorValues[0], EPSILON);
-        assertEquals(mClock.now() - AMBIENT_LIGHT_HORIZON_LONG, sensorTimestamps[0]);
+        assertEquals(mClock.now() - AMBIENT_LIGHT_HORIZON_LONG + ANDROID_SLEEP_TIME,
+                sensorTimestamps[0]);
     }
 
     @Test
@@ -951,25 +970,29 @@
 
         // t = 0
         // Initial lux
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
 
         // t = 1000
         // Lux isn't steady yet
         mClock.fastForward(1000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
 
         // t = 1500
         // Lux isn't steady yet
         mClock.fastForward(500);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
 
         // t = 2500
         // Lux is steady now
         mClock.fastForward(1000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
     }
 
@@ -992,25 +1015,29 @@
 
         // t = 0
         // Initial lux
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
 
         // t = 2000
         // Lux isn't steady yet
         mClock.fastForward(2000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
 
         // t = 2500
         // Lux isn't steady yet
         mClock.fastForward(500);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
 
         // t = 4500
         // Lux is steady now
         mClock.fastForward(2000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
     }
 
@@ -1031,19 +1058,22 @@
 
         // t = 0
         // Initial lux
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
 
         // t = 500
         // Lux isn't steady yet
         mClock.fastForward(500);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
 
         // t = 1500
         // Lux is steady now
         mClock.fastForward(1000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
     }
 
@@ -1068,19 +1098,22 @@
 
         // t = 0
         // Initial lux
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1200,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
 
         // t = 1000
         // Lux isn't steady yet
         mClock.fastForward(1000);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(1200, mController.getAmbientLux(), EPSILON);
 
         // t = 2500
         // Lux is steady now
         mClock.fastForward(1500);
-        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500));
+        listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 500,
+                (mClock.now() + ANDROID_SLEEP_TIME) * NANO_SECONDS_MULTIPLIER));
         assertEquals(500, mController.getAmbientLux(), EPSILON);
     }
 
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index aed1f98..db94958 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -1066,7 +1066,6 @@
                 com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
         mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
         when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true);
-        when(mDisplayManagerFlagsMock.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession);
 
@@ -1172,7 +1171,6 @@
                 com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
         mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
         when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true);
-        when(mDisplayManagerFlagsMock.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(false);
         mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession);
 
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
index 2ebb6c2a3..ef39167 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
@@ -240,7 +240,6 @@
 
     @Test
     public void selectStrategyDoesNotSelectDozeStrategyWhenOffloadSessionAutoBrightnessIsEnabled() {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -378,7 +377,6 @@
     @Test
     public void selectStrategy_selectsAutomaticStrategyWhenValid() {
         when(mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()).thenReturn(true);
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -409,7 +407,6 @@
     @Test
     public void selectStrategy_doesNotSelectAutomaticStrategyWhenStylusInUse() {
         when(mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()).thenReturn(true);
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -536,7 +533,6 @@
 
     @Test
     public void setAllowAutoBrightnessWhileDozing_enabledWhenConfigAndOffloadSessionAreEnabled() {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -550,7 +546,6 @@
 
     @Test
     public void setAllowAutoBrightnessWhileDozing_disabledWhenOffloadSessionFlagIsDisabled() {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(false);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -564,7 +559,6 @@
 
     @Test
     public void setAllowAutoBrightnessWhileDozing_disabledWhenABWhileDozingConfigIsDisabled() {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
         when(mDisplayOffloadSession.allowAutoBrightnessInDoze()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
@@ -588,7 +582,6 @@
 
     @Test
     public void setAllowAutoBrightnessWhileDozing_EnabledWhenFlagsAreDisabled() {
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(true);
         when(mResources.getBoolean(R.bool.config_allowAutoBrightnessWhileDozing)).thenReturn(
                 true);
         mDisplayBrightnessStrategySelector = new DisplayBrightnessStrategySelector(mContext,
@@ -600,11 +593,5 @@
         mDisplayBrightnessStrategySelector
                 .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
         assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
-
-        when(mDisplayManagerFlags.isDisplayOffloadEnabled()).thenReturn(true);
-        when(mDisplayManagerFlags.offloadControlsDozeAutoBrightness()).thenReturn(false);
-        mDisplayBrightnessStrategySelector
-                .setAllowAutoBrightnessWhileDozing(mDisplayOffloadSession);
-        assertTrue(mDisplayBrightnessStrategySelector.isAllowAutoBrightnessWhileDozing());
     }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceContentTest.java b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceContentTest.java
index 5ddd8a5..2e315ec 100644
--- a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceContentTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceContentTest.java
@@ -26,7 +26,10 @@
 import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.app.role.RoleManager;
+import android.companion.AssociationRequest;
 import android.content.pm.PackageManagerInternal;
 import android.media.projection.MediaProjectionInfo;
 import android.media.projection.MediaProjectionManager;
@@ -54,6 +57,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.List;
 import java.util.Set;
 
 @SmallTest
@@ -74,6 +78,7 @@
     @Mock private WindowManagerInternal mWindowManager;
     @Mock private MediaProjectionManager mProjectionManager;
     @Mock private PackageManagerInternal mPackageManagerInternal;
+    @Mock private RoleManager mRoleManager;
     private MediaProjectionInfo mMediaProjectionInfo;
 
     @Captor
@@ -93,7 +98,8 @@
         mSensitiveContentProtectionManagerService =
                 new SensitiveContentProtectionManagerService(mContext);
         mSensitiveContentProtectionManagerService.init(mProjectionManager, mWindowManager,
-                mPackageManagerInternal, new ArraySet<>(Set.of(mExemptedScreenRecorderPackage)));
+                mPackageManagerInternal, mRoleManager,
+                new ArraySet<>(Set.of(mExemptedScreenRecorderPackage)));
         verify(mProjectionManager).addCallback(mMediaProjectionCallbackCaptor.capture(), any());
         mMediaPorjectionCallback = mMediaProjectionCallbackCaptor.getValue();
         mMediaProjectionInfo =
@@ -152,7 +158,7 @@
         String testAutofillService = mScreenRecorderPackage + "/com.example.SampleAutofillService";
         int userId = Process.myUserHandle().getIdentifier();
         Settings.Secure.putStringForUser(mContext.getContentResolver(),
-                Settings.Secure.AUTOFILL_SERVICE, testAutofillService , userId);
+                Settings.Secure.AUTOFILL_SERVICE, testAutofillService, userId);
 
         mMediaPorjectionCallback.onStart(mMediaProjectionInfo);
         mSensitiveContentProtectionManagerService.setSensitiveContentProtection(
@@ -169,6 +175,19 @@
         verify(mWindowManager, never()).addBlockScreenCaptureForApps(mPackageInfoCaptor.capture());
     }
 
+    @Test
+    public void testAppStreamingRoleHolderExemption() {
+        when(mRoleManager.getRoleHoldersAsUser(
+                AssociationRequest.DEVICE_PROFILE_APP_STREAMING,
+                mMediaProjectionInfo.getUserHandle())).thenReturn(
+                List.of(mMediaProjectionInfo.getPackageName()));
+
+        mMediaPorjectionCallback.onStart(mMediaProjectionInfo);
+        mSensitiveContentProtectionManagerService.setSensitiveContentProtection(
+                mPackageInfo.getWindowToken(), mPackageInfo.getPkg(), mPackageInfo.getUid(), true);
+        verify(mWindowManager, never()).addBlockScreenCaptureForApps(mPackageInfoCaptor.capture());
+    }
+
     private void mockDisabledViaDeveloperOption() {
         Settings.Global.putInt(
                 mContext.getContentResolver(),
diff --git a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceNotificationTest.java b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceNotificationTest.java
index 32135f1..3c6e18f 100644
--- a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceNotificationTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceNotificationTest.java
@@ -33,6 +33,8 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.role.RoleManager;
+import android.companion.AssociationRequest;
 import android.content.pm.PackageManagerInternal;
 import android.media.projection.MediaProjectionInfo;
 import android.media.projection.MediaProjectionManager;
@@ -67,6 +69,7 @@
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 
+import java.util.List;
 import java.util.Set;
 
 @SmallTest
@@ -116,6 +119,9 @@
     private PackageManagerInternal mPackageManagerInternal;
 
     @Mock
+    private RoleManager mRoleManager;
+
+    @Mock
     private StatusBarNotification mNotification1;
 
     @Mock
@@ -161,7 +167,8 @@
         setupSensitiveNotification();
 
         mSensitiveContentProtectionManagerService.init(mProjectionManager, mWindowManager,
-                mPackageManagerInternal, new ArraySet<>(Set.of(EXEMPTED_SCREEN_RECORDER_PACKAGE)));
+                mPackageManagerInternal, mRoleManager,
+                new ArraySet<>(Set.of(EXEMPTED_SCREEN_RECORDER_PACKAGE)));
 
         // Obtain useful mMediaProjectionCallback
         verify(mProjectionManager).addCallback(mMediaProjectionCallbackCaptor.capture(), any());
@@ -315,6 +322,18 @@
     }
 
     @Test
+    public void mediaProjectionOnStart_verifyExemptedAppStreamingPackage() {
+        MediaProjectionInfo mediaProjectionInfo = createMediaProjectionInfo();
+        when(mRoleManager.getRoleHoldersAsUser(AssociationRequest.DEVICE_PROFILE_APP_STREAMING,
+                mediaProjectionInfo.getUserHandle())).thenReturn(
+                List.of(mediaProjectionInfo.getPackageName()));
+
+        mMediaProjectionCallbackCaptor.getValue().onStart(mediaProjectionInfo);
+
+        verify(mWindowManager, never()).addBlockScreenCaptureForApps(mPackageInfoCaptor.capture());
+    }
+
+    @Test
     public void mediaProjectionOnStart_verifyExemptedRecorderPackage() {
         MediaProjectionInfo mediaProjectionInfo = createExemptMediaProjectionInfo();
 
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
index fa58475..4b53f13 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
@@ -23,18 +23,11 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 
-import android.app.ActivityManagerInternal;
 import android.app.ActivityManagerInternal.FrozenProcessListener;
 import android.content.ComponentName;
 import android.content.Context;
@@ -44,14 +37,12 @@
 import android.os.HandlerThread;
 import android.os.MessageQueue;
 import android.os.Process;
-import android.os.SystemClock;
 import android.platform.test.annotations.Presubmit;
 import android.provider.DeviceConfig;
 import android.text.TextUtils;
 
 import androidx.test.platform.app.InstrumentationRegistry;
 
-import com.android.internal.annotations.GuardedBy;
 import com.android.modules.utils.testing.ExtendedMockitoRule;
 import com.android.modules.utils.testing.TestableDeviceConfig;
 import com.android.server.LocalServices;
@@ -68,11 +59,9 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -164,7 +153,7 @@
         app.info.uid = packageUid;
         // Exact value does not mater, it can be any state for which compaction is allowed.
         app.mState.setSetProcState(PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
-        app.mState.setSetAdj(899);
+        app.mState.setSetAdj(940);
         app.mState.setCurAdj(940);
         return app;
     }
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/JobServiceContextTest.java b/services/tests/mockingservicestests/src/com/android/server/job/JobServiceContextTest.java
index 904545b..b4e8451 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/JobServiceContextTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/JobServiceContextTest.java
@@ -276,6 +276,7 @@
         final int jobId = 123;
         mJobServiceContext.setRunningJobLockedForTest(mMockJobStatus);
         mJobServiceContext.setRunningCallbackLockedForTest(mMockJobCallback);
+        mJobServiceContext.mVerb = JobServiceContext.VERB_EXECUTING;
         doReturn(jobId).when(mMockJobStatus).getJobId();
 
         mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
@@ -296,7 +297,25 @@
         mJobServiceContext.setRunningCallbackLockedForTest(mMockJobCallback);
 
         mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
+        verify(mMockJobStatus, never()).setAbandoned(true);
 
+        mJobServiceContext.setRunningJobLockedForTest(mMockJobStatus);
+        doReturn(jobId).when(mMockJobStatus).getJobId();
+
+        mJobServiceContext.mVerb = JobServiceContext.VERB_BINDING;
+        mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
+        verify(mMockJobStatus, never()).setAbandoned(true);
+
+        mJobServiceContext.mVerb = JobServiceContext.VERB_STARTING;
+        mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
+        verify(mMockJobStatus, never()).setAbandoned(true);
+
+        mJobServiceContext.mVerb = JobServiceContext.VERB_STOPPING;
+        mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
+        verify(mMockJobStatus, never()).setAbandoned(true);
+
+        mJobServiceContext.mVerb = JobServiceContext.VERB_FINISHED;
+        mJobServiceContext.doHandleAbandonedJob(mMockJobCallback, jobId);
         verify(mMockJobStatus, never()).setAbandoned(true);
     }
 
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
index c6870ad..4e4b3df 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java
@@ -295,15 +295,15 @@
     }
 
     private void setCharging() {
-        doReturn(true).when(mJobSchedulerService).isBatteryCharging();
         synchronized (mQuotaController.mLock) {
+            doReturn(true).when(mJobSchedulerService).isBatteryCharging();
             mQuotaController.onBatteryStateChangedLocked();
         }
     }
 
     private void setDischarging() {
-        doReturn(false).when(mJobSchedulerService).isBatteryCharging();
         synchronized (mQuotaController.mLock) {
+            doReturn(false).when(mJobSchedulerService).isBatteryCharging();
             mQuotaController.onBatteryStateChangedLocked();
         }
     }
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderPerfTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderPerfTest.java
index 8fc8c9f..6be9c6d 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderPerfTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderPerfTest.java
@@ -48,6 +48,7 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.file.Files;
@@ -121,7 +122,7 @@
     }
 
     @Test
-    public void getBatteryUsageStats_accumulated() {
+    public void getBatteryUsageStats_accumulated() throws IOException {
         BatteryUsageStatsQuery query = new BatteryUsageStatsQuery.Builder()
                 .setMaxStatsAgeMs(0)
                 .includePowerStateData()
@@ -155,6 +156,8 @@
                 // Verify that all iterations produce the same result
                 assertThat(cpuConsumedPower).isEqualTo(expectedCpuPower);
             }
+            stats.close();
+
             state.resumeTiming();
         }
     }
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CpuPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CpuPowerStatsProcessorTest.java
index cb9d9b1..dcddf06 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CpuPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/CpuPowerStatsProcessorTest.java
@@ -34,6 +34,7 @@
 import android.os.BatteryConsumer;
 import android.os.PersistableBundle;
 import android.platform.test.ravenwood.RavenwoodRule;
+import android.util.IntArray;
 import android.util.LongArray;
 
 import androidx.test.filters.SmallTest;
@@ -51,7 +52,6 @@
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -315,8 +315,12 @@
         }
 
         @Override
-        void collectUids(Collection<Integer> uids) {
-            uids.addAll(mUids);
+        IntArray getActiveUids() {
+            IntArray uids = new IntArray();
+            for (Integer uid : mUids) {
+                uids.add(uid);
+            }
+            return uids;
         }
 
         void verifyPowerEstimates() {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
index a232c0c..3b614bd 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/MultiStateStatsTest.java
@@ -143,6 +143,8 @@
 
         multiStateStats.increment(new long[]{200, 200}, 5000);
 
+        multiStateStats.increment(null, 6000);  // No-op
+
         long[] stats = new long[DIMENSION_COUNT];
         multiStateStats.getStats(stats, new int[]{0, BatteryConsumer.PROCESS_STATE_FOREGROUND, 0});
         // (400 - 100) * 0.5 + (600 - 400) * 0.5
diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml
index 834fea4..4531b39 100644
--- a/services/tests/servicestests/AndroidManifest.xml
+++ b/services/tests/servicestests/AndroidManifest.xml
@@ -199,6 +199,10 @@
         <service android:name="com.android.server.job.MockBiasJobService"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
 
+        <activity
+            android:name="android.app.Activity"
+            android:exported="false" />
+
         <activity android:name="com.android.server.pm.BaseShortcutManagerTest$ShortcutActivity"/>
         <activity android:name="com.android.server.pm.BaseShortcutManagerTest$ShortcutActivity2"/>
         <activity android:name="com.android.server.pm.BaseShortcutManagerTest$ShortcutActivity3"/>
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
index 8dfd54f..42b84bd 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
@@ -46,12 +46,11 @@
 import static android.view.accessibility.AccessibilityNodeInfo.FOCUS_INPUT;
 import static android.view.accessibility.AccessibilityNodeInfo.ROOT_NODE_ID;
 
-import static org.hamcrest.Matchers.hasItems;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -65,6 +64,7 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
 import android.accessibilityservice.AccessibilityService;
@@ -90,14 +90,20 @@
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.test.FakePermissionEnforcer;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
 import android.util.Pair;
 import android.view.Display;
 import android.view.KeyEvent;
 import android.view.MagnificationSpec;
+import android.view.SurfaceControl;
+import android.view.WindowManager;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityWindowInfo;
 import android.view.accessibility.IAccessibilityInteractionConnection;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
+import android.view.accessibility.IWindowSurfaceInfoCallback;
+import android.window.ScreenCapture;
 
 import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection;
 import com.android.server.accessibility.magnification.MagnificationProcessor;
@@ -105,6 +111,7 @@
 import com.android.server.wm.WindowManagerInternal;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
@@ -121,6 +128,10 @@
  * Tests for the AbstractAccessibilityServiceConnection
  */
 public class AbstractAccessibilityServiceConnectionTest {
+
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
     private static final ComponentName COMPONENT_NAME = new ComponentName(
             "com.android.server.accessibility", ".AbstractAccessibilityServiceConnectionTest");
     private static final String PACKAGE_NAME1 = "com.android.server.accessibility1";
@@ -264,7 +275,7 @@
 
     @Test
     public void getCapabilities() {
-        assertThat(mServiceConnection.getCapabilities(), is(A11Y_SERVICE_CAPABILITY));
+        assertThat(mServiceConnection.getCapabilities()).isEqualTo(A11Y_SERVICE_CAPABILITY);
     }
 
     @Test
@@ -329,7 +340,7 @@
                 0, null, 0);
 
         mServiceConnection.setServiceInfo(serviceInfo);
-        assertThat(mServiceConnection.canReceiveEventsLocked(), is(true));
+        assertThat(mServiceConnection.canReceiveEventsLocked()).isTrue();
     }
 
     @Test
@@ -348,9 +359,11 @@
                 mServiceConnection.getWindows();
 
         assertEquals(2, allWindows.size());
-        assertThat(allWindows.get(Display.DEFAULT_DISPLAY), is(mA11yWindowInfos));
+        assertThat(allWindows.get(Display.DEFAULT_DISPLAY))
+                .containsExactlyElementsIn(mA11yWindowInfos);
         assertEquals(2, allWindows.get(Display.DEFAULT_DISPLAY).size());
-        assertThat(allWindows.get(SECONDARY_DISPLAY_ID), is(mA11yWindowInfosOnSecondDisplay));
+        assertThat(allWindows.get(SECONDARY_DISPLAY_ID))
+                .containsExactlyElementsIn(mA11yWindowInfosOnSecondDisplay);
         assertEquals(1, allWindows.get(SECONDARY_DISPLAY_ID).size());
     }
 
@@ -358,12 +371,12 @@
     public void getWindows_returnNull() {
         // no canRetrieveWindows, should return null
         when(mMockSecurityPolicy.canRetrieveWindowsLocked(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.getWindows(), is(nullValue()));
+        assertThat(mServiceConnection.getWindows()).isNull();
 
         // no checkAccessibilityAccess, should return null
         when(mMockSecurityPolicy.canRetrieveWindowsLocked(mServiceConnection)).thenReturn(true);
         when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.getWindows(), is(nullValue()));
+        assertThat(mServiceConnection.getWindows()).isNull();
     }
 
     @Test
@@ -378,19 +391,19 @@
 
     @Test
     public void getWindow() {
-        assertThat(mServiceConnection.getWindow(WINDOWID), is(mA11yWindowInfos.get(0)));
+        assertThat(mServiceConnection.getWindow(WINDOWID)).isEqualTo(mA11yWindowInfos.get(0));
     }
 
     @Test
     public void getWindow_returnNull() {
         // no canRetrieveWindows, should return null
         when(mMockSecurityPolicy.canRetrieveWindowsLocked(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.getWindow(WINDOWID), is(nullValue()));
+        assertThat(mServiceConnection.getWindow(WINDOWID)).isNull();
 
         // no checkAccessibilityAccess, should return null
         when(mMockSecurityPolicy.canRetrieveWindowsLocked(mServiceConnection)).thenReturn(true);
         when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.getWindow(WINDOWID), is(nullValue()));
+        assertThat(mServiceConnection.getWindow(WINDOWID)).isNull();
     }
 
     @Test
@@ -405,8 +418,8 @@
 
     @Test
     public void getWindow_onNonDefaultDisplay() {
-        assertThat(mServiceConnection.getWindow(WINDOWID_ONSECONDDISPLAY),
-                is(mA11yWindowInfosOnSecondDisplay.get(0)));
+        assertThat(mServiceConnection.getWindow(WINDOWID_ONSECONDDISPLAY))
+                .isEqualTo(mA11yWindowInfosOnSecondDisplay.get(0));
     }
 
     @Test
@@ -415,9 +428,9 @@
         when(mMockSecurityPolicy.canGetAccessibilityNodeInfoLocked(
                 USER_ID, mServiceConnection, WINDOWID)).thenReturn(false);
         for (int i = 0; i < mFindA11yNodesFunctions.length; i++) {
-            assertThat(mFindA11yNodesFunctions[i].call(), is(nullValue()));
+            assertThat(mFindA11yNodesFunctions[i].call()).isNull();
         }
-        assertThat(mPerformA11yAction.call(), is(false));
+        assertThat(mPerformA11yAction.call()).isFalse();
 
         verifyNoMoreInteractions(mMockIA11yInteractionConnection);
         verify(mMockSecurityPolicy, never()).computeValidReportedPackages(any(), anyInt());
@@ -428,9 +441,9 @@
             throws Exception {
         when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(false);
         for (int i = 0; i < mFindA11yNodesFunctions.length; i++) {
-            assertThat(mFindA11yNodesFunctions[i].call(), is(nullValue()));
+            assertThat(mFindA11yNodesFunctions[i].call()).isNull();
         }
-        assertThat(mPerformA11yAction.call(), is(false));
+        assertThat(mPerformA11yAction.call()).isFalse();
 
         verifyNoMoreInteractions(mMockIA11yInteractionConnection);
         verify(mMockSecurityPolicy, never()).computeValidReportedPackages(any(), anyInt());
@@ -441,9 +454,9 @@
             throws Exception {
         when(mMockA11yWindowManager.getConnectionLocked(USER_ID, WINDOWID)).thenReturn(null);
         for (int i = 0; i < mFindA11yNodesFunctions.length; i++) {
-            assertThat(mFindA11yNodesFunctions[i].call(), is(nullValue()));
+            assertThat(mFindA11yNodesFunctions[i].call()).isNull();
         }
-        assertThat(mPerformA11yAction.call(), is(false));
+        assertThat(mPerformA11yAction.call()).isFalse();
 
         verifyNoMoreInteractions(mMockIA11yInteractionConnection);
         verify(mMockSecurityPolicy, never()).computeValidReportedPackages(any(), anyInt());
@@ -562,7 +575,7 @@
         when(mMockFingerprintGestureDispatcher.isFingerprintGestureDetectionAvailable())
                 .thenReturn(true);
         final boolean result = mServiceConnection.isFingerprintGestureDetectionAvailable();
-        assertThat(result, is(true));
+        assertThat(result).isTrue();
     }
 
     @Test
@@ -573,14 +586,14 @@
         // Return false if device does not support fingerprint
         when(mMockPackageManager.hasSystemFeature(FEATURE_FINGERPRINT)).thenReturn(false);
         boolean result = mServiceConnection.isFingerprintGestureDetectionAvailable();
-        assertThat(result, is(false));
+        assertThat(result).isFalse();
 
         // Return false if service does not have flag
         when(mMockPackageManager.hasSystemFeature(FEATURE_FINGERPRINT)).thenReturn(true);
         mSpyServiceInfo.flags = A11Y_SERVICE_FLAG & ~FLAG_REQUEST_FINGERPRINT_GESTURES;
         mServiceConnection.setServiceInfo(mSpyServiceInfo);
         result = mServiceConnection.isFingerprintGestureDetectionAvailable();
-        assertThat(result, is(false));
+        assertThat(result).isFalse();
     }
 
     @Test
@@ -590,7 +603,7 @@
         when(mMockMagnificationProcessor.getScale(displayId)).thenReturn(scale);
 
         final float result = mServiceConnection.getMagnificationScale(displayId);
-        assertThat(result, is(scale));
+        assertThat(result).isEqualTo(scale);
     }
 
     @Test
@@ -601,7 +614,7 @@
         when(mMockSystemSupport.getCurrentUserIdLocked()).thenReturn(USER_ID2);
 
         final float result = mServiceConnection.getMagnificationScale(displayId);
-        assertThat(result, is(1.0f));
+        assertThat(result).isEqualTo(1.0f);
     }
 
     @Test
@@ -616,7 +629,7 @@
         when(mMockSystemSupport.getCurrentUserIdLocked()).thenReturn(USER_ID2);
 
         final Region result = mServiceConnection.getMagnificationRegion(displayId);
-        assertThat(result.isEmpty(), is(true));
+        assertWithMessage("Non-empty region: " + result).that(result.isEmpty()).isTrue();
     }
 
     @Test
@@ -642,7 +655,7 @@
         when(mMockSystemSupport.getCurrentUserIdLocked()).thenReturn(USER_ID2);
 
         final float result = mServiceConnection.getMagnificationCenterX(displayId);
-        assertThat(result, is(0.0f));
+        assertThat(result).isEqualTo(0.0f);
     }
 
     @Test
@@ -654,7 +667,7 @@
         when(mMockSystemSupport.getCurrentUserIdLocked()).thenReturn(USER_ID2);
 
         final float result = mServiceConnection.getMagnificationCenterY(displayId);
-        assertThat(result, is(0.0f));
+        assertThat(result).isEqualTo(0.0f);
     }
 
     @Test
@@ -664,7 +677,7 @@
                 true);
 
         final boolean result = mServiceConnection.resetMagnification(displayId, true);
-        assertThat(result, is(true));
+        assertThat(result).isTrue();
     }
 
     @Test
@@ -675,7 +688,7 @@
         when(mMockSecurityPolicy.canControlMagnification(mServiceConnection)).thenReturn(false);
 
         final boolean result = mServiceConnection.resetMagnification(displayId, true);
-        assertThat(result, is(false));
+        assertThat(result).isFalse();
     }
 
     @Test
@@ -686,7 +699,7 @@
         when(mMockSystemSupport.getCurrentUserIdLocked()).thenReturn(USER_ID2);
 
         final boolean result = mServiceConnection.resetMagnification(displayId, true);
-        assertThat(result, is(false));
+        assertThat(result).isFalse();
     }
 
     @Test
@@ -765,6 +778,134 @@
                         == bundle.getInt(KEY_ACCESSIBILITY_SCREENSHOT_STATUS)));
     }
 
+    private void setPreinstalledA11yTool(boolean isPreinstalledA11yTool) {
+        when(mSpyServiceInfo.getResolveInfo().serviceInfo.applicationInfo.isSystemApp())
+                .thenReturn(isPreinstalledA11yTool);
+        when(mSpyServiceInfo.isAccessibilityTool()).thenReturn(isPreinstalledA11yTool);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshot_standardService_cannotCaptureSecureLayers() {
+        setPreinstalledA11yTool(false);
+
+        takeScreenshotOfDisplay();
+
+        final ArgumentCaptor<ScreenCapture.CaptureArgs> displayArgsCaptor =
+                ArgumentCaptor.forClass(ScreenCapture.CaptureArgs.class);
+        verify(mMockWindowManagerInternal).captureDisplay(
+                eq(Display.DEFAULT_DISPLAY), displayArgsCaptor.capture(), any());
+        assertThat(displayArgsCaptor.getValue().mCaptureSecureLayers).isFalse();
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshot_preinstalledA11yTool_canCaptureSecureLayers() {
+        setPreinstalledA11yTool(true);
+
+        takeScreenshotOfDisplay();
+
+        final ArgumentCaptor<ScreenCapture.CaptureArgs> displayArgsCaptor =
+                ArgumentCaptor.forClass(ScreenCapture.CaptureArgs.class);
+        verify(mMockWindowManagerInternal).captureDisplay(
+                anyInt(), displayArgsCaptor.capture(), any());
+        assertThat(displayArgsCaptor.getValue().mCaptureSecureLayers).isTrue();
+    }
+
+    private void takeScreenshotOfDisplay() {
+        when(mMockSecurityPolicy.canTakeScreenshotLocked(mServiceConnection)).thenReturn(true);
+        when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(true);
+
+        final DisplayManager displayManager = new DisplayManager(mMockContext);
+        when(mMockContext.getSystemService(Context.DISPLAY_SERVICE)).thenReturn(displayManager);
+
+        mServiceConnection.takeScreenshot(Display.DEFAULT_DISPLAY,
+                new RemoteCallback(mMockListener));
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshotOfWindow_standardWindow_standardService_cannotCaptureSecureLayers()
+            throws Exception {
+        setPreinstalledA11yTool(false);
+
+        takeScreenshotOfWindow(/*windowFlags=*/0);
+
+        // Screenshot was allowed
+        final ArgumentCaptor<ScreenCapture.LayerCaptureArgs> layerArgsCaptor =
+                ArgumentCaptor.forClass(ScreenCapture.LayerCaptureArgs.class);
+        verify(mMockSystemSupport).performScreenCapture(layerArgsCaptor.capture(), any());
+        // ...without secure layers included
+        assertThat(layerArgsCaptor.getValue().mCaptureSecureLayers).isFalse();
+        // No error sent to callback
+        verifyZeroInteractions(mMockCallback);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshotOfWindow_standardWindow_preinstalledA11yTool_canCaptureSecureLayers()
+            throws Exception {
+        setPreinstalledA11yTool(true);
+
+        takeScreenshotOfWindow(/*windowFlags=*/0);
+
+        // Screenshot was allowed
+        final ArgumentCaptor<ScreenCapture.LayerCaptureArgs> layerArgsCaptor =
+                ArgumentCaptor.forClass(ScreenCapture.LayerCaptureArgs.class);
+        verify(mMockSystemSupport).performScreenCapture(layerArgsCaptor.capture(), any());
+        // ...with secure layers included
+        assertThat(layerArgsCaptor.getValue().mCaptureSecureLayers).isTrue();
+        // No error sent to callback
+        verifyZeroInteractions(mMockCallback);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshotOfWindow_secureWindow_standardService_sendsCallbackError()
+            throws Exception {
+        setPreinstalledA11yTool(false);
+
+        takeScreenshotOfWindow(WindowManager.LayoutParams.FLAG_SECURE);
+
+        // Screenshot was not allowed
+        verify(mMockSystemSupport, never()).performScreenCapture(any(), any());
+        // Error sent to callback
+        verify(mMockCallback).sendTakeScreenshotOfWindowError(
+                AccessibilityService.ERROR_TAKE_SCREENSHOT_SECURE_WINDOW, INTERACTION_ID);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_ALLOW_SECURE_SCREENSHOTS)
+    public void takeScreenshotOfWindow_secureWindow_preinstalledA11yTool_canCaptureSecureLayers()
+            throws Exception {
+        setPreinstalledA11yTool(true);
+
+        takeScreenshotOfWindow(WindowManager.LayoutParams.FLAG_SECURE);
+
+        // Screenshot was allowed
+        final ArgumentCaptor<ScreenCapture.LayerCaptureArgs> layerArgsCaptor =
+                ArgumentCaptor.forClass(ScreenCapture.LayerCaptureArgs.class);
+        verify(mMockSystemSupport).performScreenCapture(layerArgsCaptor.capture(), any());
+        // ...with secure layers included
+        assertThat(layerArgsCaptor.getValue().mCaptureSecureLayers).isTrue();
+        // No error sent to callback
+        verifyZeroInteractions(mMockCallback);
+    }
+
+    private void takeScreenshotOfWindow(int windowFlags) throws Exception {
+        when(mMockSecurityPolicy.canTakeScreenshotLocked(mServiceConnection)).thenReturn(true);
+        when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(true);
+
+        mServiceConnection.takeScreenshotOfWindow(
+                WINDOWID, INTERACTION_ID, /*listener=*/null, mMockCallback);
+        final ArgumentCaptor<IWindowSurfaceInfoCallback> windowSurfaceCallbackCaptor =
+                ArgumentCaptor.forClass(IWindowSurfaceInfoCallback.class);
+        verify(mMockIA11yInteractionConnection).getWindowSurfaceInfo(
+                windowSurfaceCallbackCaptor.capture());
+        windowSurfaceCallbackCaptor.getValue().provideWindowSurfaceInfo(
+                windowFlags, /*appUid=*/0, new SurfaceControl());
+    }
+
     private void updateServiceInfo(AccessibilityServiceInfo serviceInfo, int eventType,
             int feedbackType, int flags, String[] packageNames, int notificationTimeout) {
         serviceInfo.eventTypes = eventType;
@@ -837,8 +978,8 @@
                 ArgumentCaptor.forClass(AccessibilityNodeInfo.class);
         verify(mMockCallback).setFindAccessibilityNodeInfoResult(captor.capture(),
                 eq(INTERACTION_ID));
-        assertThat(captor.getValue().getActionList(),
-                hasItems(AccessibilityAction.ACTION_CLICK, AccessibilityAction.ACTION_EXPAND));
+        assertThat(captor.getValue().getActionList()).containsAtLeast(
+                AccessibilityAction.ACTION_CLICK, AccessibilityAction.ACTION_EXPAND);
     }
 
     private static class TestAccessibilityServiceConnection
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
index 00cc726..f3016f4 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
@@ -30,6 +30,7 @@
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableContext;
 import android.testing.TestableLooper;
+import android.view.Gravity;
 import android.view.View;
 import android.view.WindowManager;
 import android.widget.LinearLayout;
@@ -63,6 +64,8 @@
     private LinearLayout mDoubleClickButton;
     private LinearLayout mDragButton;
     private LinearLayout mScrollButton;
+    private LinearLayout mPauseButton;
+    private LinearLayout mPositionButton;
 
     private @AutoclickType int mActiveClickType = AUTOCLICK_TYPE_LEFT_CLICK;
 
@@ -91,6 +94,8 @@
                 contentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
         mScrollButton = contentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
         mDragButton = contentView.findViewById(R.id.accessibility_autoclick_drag_layout);
+        mPauseButton = contentView.findViewById(R.id.accessibility_autoclick_pause_layout);
+        mPositionButton = contentView.findViewById(R.id.accessibility_autoclick_position_layout);
     }
 
     @Test
@@ -106,6 +111,7 @@
         assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
         assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);
         assertThat(mScrollButton.getVisibility()).isEqualTo(View.GONE);
+        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
     }
 
     @Test
@@ -124,6 +130,9 @@
         assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.VISIBLE);
         assertThat(mDragButton.getVisibility()).isEqualTo(View.VISIBLE);
         assertThat(mScrollButton.getVisibility()).isEqualTo(View.VISIBLE);
+
+        // Pause button is always visible.
+        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
     }
 
     @Test
@@ -142,6 +151,9 @@
         assertThat(mLeftClickButton.getVisibility()).isEqualTo(View.GONE);
         assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
         assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);
+
+        // Pause button is always visible.
+        assertThat(mPauseButton.getVisibility()).isEqualTo(View.VISIBLE);
     }
 
     @Test
@@ -166,9 +178,39 @@
         assertThat(mActiveClickType).isEqualTo(AUTOCLICK_TYPE_SCROLL);
     }
 
+    @Test
+    public void moveToNextCorner_positionButton_rotatesThroughAllPositions() {
+        // Define all positions in sequence
+        int[][] expectedPositions = {
+                {0, Gravity.END | Gravity.BOTTOM, /*x=*/ 15, /*y=*/ 90},
+                {1, Gravity.START | Gravity.BOTTOM, /*x=*/ 15, /*y=*/ 90},
+                {2, Gravity.START | Gravity.TOP, /*x=*/ 15, /*y=*/ 30},
+                {3, Gravity.END | Gravity.TOP, /*x=*/ 15, /*y=*/ 30},
+                {0, Gravity.END | Gravity.BOTTOM, /*x=*/ 15, /*y=*/ 90}
+        };
+
+        // Check initial position
+        verifyPanelPosition(expectedPositions[0]);
+
+        // Move through all corners.
+        for (int i = 1; i < expectedPositions.length; i++) {
+            mPositionButton.callOnClick();
+            verifyPanelPosition(expectedPositions[i]);
+        }
+    }
+
     private void verifyButtonHasSelectedStyle(@NonNull LinearLayout button) {
         GradientDrawable gradientDrawable = (GradientDrawable) button.getBackground();
         assertThat(gradientDrawable.getColor().getDefaultColor())
                 .isEqualTo(mTestableContext.getColor(R.color.materialColorPrimary));
     }
+
+    private void verifyPanelPosition(int[] expectedPosition) {
+        WindowManager.LayoutParams params = mAutoclickTypePanel.getLayoutParams();
+        assertThat(mAutoclickTypePanel.getCurrentCornerIndexForTesting()).isEqualTo(
+                expectedPosition[0]);
+        assertThat(params.gravity).isEqualTo(expectedPosition[1]);
+        assertThat(params.x).isEqualTo(expectedPosition[2]);
+        assertThat(params.y).isEqualTo(expectedPosition[3]);
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index e0023e5..30aa8ce 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -1768,7 +1768,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testCertificateDisclosure() throws Exception {
         final int userId = CALLER_USER_HANDLE;
         final UserHandle user = UserHandle.of(userId);
@@ -4613,7 +4612,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testGetLastBugReportRequestTime() throws Exception {
         mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
         setupDeviceOwner();
@@ -4661,7 +4659,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testGetLastNetworkLogRetrievalTime() throws Exception {
         mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
         setupDeviceOwner();
@@ -6444,7 +6441,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testGetOwnerInstalledCaCertsForDeviceOwner() throws Exception {
         mServiceContext.packageName = mRealTestContext.getPackageName();
         mServiceContext.applicationInfo = new ApplicationInfo();
@@ -6456,7 +6452,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testGetOwnerInstalledCaCertsForProfileOwner() throws Exception {
         mServiceContext.packageName = mRealTestContext.getPackageName();
         mServiceContext.applicationInfo = new ApplicationInfo();
@@ -6469,7 +6464,6 @@
     }
 
     @Test
-    @Ignore // b/396073342
     public void testGetOwnerInstalledCaCertsForDelegate() throws Exception {
         mServiceContext.packageName = mRealTestContext.getPackageName();
         mServiceContext.applicationInfo = new ApplicationInfo();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java
index cf2c15c..b2d48a7 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java
@@ -16,6 +16,7 @@
 
 package com.android.server.hdmi;
 
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
 import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM;
 
 import static com.android.server.hdmi.HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP;
@@ -25,6 +26,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.TruthJUnit.assume;
 
+import static org.junit.Assume.assumeTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -122,6 +124,9 @@
 
     @Before
     public void setUp() throws RemoteException {
+       assumeTrue("Test requires FEATURE_HDMI_CEC",
+                InstrumentationRegistry.getTargetContext().getPackageManager()
+                        .hasSystemFeature(FEATURE_HDMI_CEC));
         MockitoAnnotations.initMocks(this);
 
         mContextSpy = spy(new ContextWrapper(
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index 87c9db2..acbce36 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -354,14 +354,20 @@
 
     @After
     public void tearDown_baseServices() throws Exception {
-        mStorage.closeDatabase();
+        if (mStorage != null) {
+            mStorage.closeDatabase();
+        }
         File db = InstrumentationRegistry.getContext().getDatabasePath("locksettings.db");
         assertTrue(!db.exists() || db.delete());
 
-        File storageDir = mStorage.mStorageDir;
-        assertTrue(FileUtils.deleteContents(storageDir));
+        if (mStorage != null) {
+            File storageDir = mStorage.mStorageDir;
+            assertTrue(FileUtils.deleteContents(storageDir));
+        }
 
-        mPasswordSlotManager.cleanup();
+        if (mPasswordSlotManager != null) {
+            mPasswordSlotManager.cleanup();
+        }
     }
 
     protected void flushHandlerTasks() {
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
index 02b86db..387b89a 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
@@ -124,7 +124,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mStorage.closeDatabase();
+        if (mStorage != null) {
+            mStorage.closeDatabase();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
index 2faf6a2..2c2b937 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
@@ -49,7 +49,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mManager.cleanup();
+        if (mManager != null) {
+            mManager.cleanup();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
index 1514de0..5add74e 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
@@ -156,9 +156,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
-
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
         File file = new File(InstrumentationRegistry.getTargetContext().getFilesDir(),
                 SNAPSHOT_TOP_LEVEL_DIRECTORY);
         FileUtils.deleteContentsAndDir(file);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
index c09e09c..46eaba7 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
@@ -117,8 +117,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
index 6413026..e6a6e36 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
@@ -89,8 +89,12 @@
         keyStore.load(/*param=*/ null);
         keyStore.deleteEntry(WRAPPING_KEY_ALIAS);
 
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
index 7641fb9..878c838 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
@@ -230,9 +230,15 @@
 
     @After
     public void tearDown() {
-        mRemoteLockscreenValidationSessionStorage.finishSession(mUserId);
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRemoteLockscreenValidationSessionStorage != null) {
+            mRemoteLockscreenValidationSessionStorage.finishSession(mUserId);
+        }
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
index bbd9223..fb98fab 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
@@ -36,8 +38,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class RecoverableKeyStoreDbHelperTest {
@@ -110,7 +110,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mDatabase.close();
+        if (mDatabase != null) {
+            mDatabase.close();
+        }
     }
 
     private void createV2Tables() throws Exception {
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
index 8bc14fc..a77d8bc 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
@@ -72,8 +72,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayConstraintsTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayConstraintsTests.java
index b2e296a..2912a07 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayConstraintsTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayConstraintsTests.java
@@ -19,6 +19,7 @@
 import static android.content.Context.DEVICE_ID_DEFAULT;
 import static android.content.om.OverlayConstraint.TYPE_DEVICE_ID;
 import static android.content.om.OverlayConstraint.TYPE_DISPLAY_ID;
+import static android.util.TypedValue.TYPE_STRING;
 import static android.view.Display.DEFAULT_DISPLAY;
 
 import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
@@ -28,6 +29,9 @@
 
 import static org.testng.Assert.assertThrows;
 
+import android.app.Activity;
+import android.companion.virtual.VirtualDeviceManager;
+import android.content.Context;
 import android.content.om.FabricatedOverlay;
 import android.content.om.OverlayConstraint;
 import android.content.om.OverlayIdentifier;
@@ -35,12 +39,12 @@
 import android.content.om.OverlayManager;
 import android.content.om.OverlayManagerTransaction;
 import android.content.res.Flags;
+import android.content.res.Resources;
 import android.os.UserHandle;
 import android.platform.test.annotations.RequiresFlagsDisabled;
 import android.platform.test.annotations.RequiresFlagsEnabled;
-import android.platform.test.flag.junit.CheckFlagsRule;
-import android.platform.test.flag.junit.DeviceFlagsValueProvider;
-import android.util.TypedValue;
+import android.view.Display;
+import android.virtualdevice.cts.common.VirtualDeviceRule;
 
 import junitparams.JUnitParamsRunner;
 import junitparams.Parameters;
@@ -53,20 +57,28 @@
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeoutException;
 
 @RunWith(JUnitParamsRunner.class)
 public class OverlayConstraintsTests {
+    private static final String RESOURCE_NAME = "string/module_2_name";
+    private static final String RESOURCE_DEFAULT_VALUE = "module_2_name";
+    private static final String RESOURCE_OVERLAID_VALUE = "hello";
+    private static final long TIMEOUT_MILLIS = 2000L;
 
     @Rule
-    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+    public final VirtualDeviceRule mVirtualDeviceRule = VirtualDeviceRule.createDefault();
 
     private OverlayManager mOverlayManager;
     private UserHandle mUserHandle;
     private OverlayIdentifier mOverlayIdentifier = null;
+    private final String mPackageName = getApplicationContext().getPackageName();
 
     @Before
     public void setUp() throws Exception {
-        mOverlayManager = getApplicationContext().getSystemService(OverlayManager.class);
+        final Context context = getApplicationContext();
+        mOverlayManager = context.getSystemService(OverlayManager.class);
         mUserHandle = UserHandle.of(UserHandle.myUserId());
     }
 
@@ -79,6 +91,7 @@
                             .build();
             mOverlayManager.commit(transaction);
             mOverlayIdentifier = null;
+            waitForResourceValue(RESOURCE_DEFAULT_VALUE, getApplicationContext());
         }
     }
 
@@ -161,13 +174,161 @@
                 List.of(new OverlayConstraint(TYPE_DISPLAY_ID, DEFAULT_DISPLAY))));
     }
 
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithoutConstraints_appliesOverlayWithoutConstraints()
+            throws Exception {
+        enableOverlay(Collections.emptyList());
+
+        // Assert than the overlay is applied for both default device context and virtual
+        // device context.
+        final Context context = getApplicationContext();
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context);
+        VirtualDeviceManager.VirtualDevice virtualDevice =
+                mVirtualDeviceRule.createManagedVirtualDevice();
+        final Context deviceContext = context.createDeviceContext(virtualDevice.getDeviceId());
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, deviceContext);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithConstraints_withTypeDeviceId_appliesOverlayWithConstraints()
+            throws Exception {
+        final int deviceId1 = mVirtualDeviceRule.createManagedVirtualDevice().getDeviceId();
+        final int deviceId2 = mVirtualDeviceRule.createManagedVirtualDevice().getDeviceId();
+        enableOverlay(List.of(new OverlayConstraint(TYPE_DEVICE_ID, deviceId1),
+                new OverlayConstraint(TYPE_DEVICE_ID, deviceId2)));
+
+        // Assert than the overlay is not applied for contexts not associated with the above
+        // devices.
+        final Context context = getApplicationContext();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context);
+        final int deviceId3 = mVirtualDeviceRule.createManagedVirtualDevice().getDeviceId();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context.createDeviceContext(deviceId3));
+
+        // Assert than the overlay is applied for contexts associated with the above devices.
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDeviceContext(deviceId1));
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDeviceContext(deviceId2));
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithConstraints_withTypeDisplayId_appliesOverlayWithConstraints()
+            throws Exception {
+        final Display display1 =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay().getDisplay();
+        final Display display2 =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay().getDisplay();
+        enableOverlay(List.of(new OverlayConstraint(TYPE_DISPLAY_ID, display1.getDisplayId()),
+                new OverlayConstraint(TYPE_DISPLAY_ID, display2.getDisplayId())));
+
+        // Assert than the overlay is not applied for contexts not associated with the above
+        // displays.
+        final Context context = getApplicationContext();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context);
+        final Display display3 =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay().getDisplay();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context.createDisplayContext(display3));
+
+        // Assert than the overlay is applied for contexts associated with the above displays.
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDisplayContext(display1));
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDisplayContext(display2));
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithConstraints_withTypesDisplayIdAndDeviceId_appliesOverlayWithConstraints()
+            throws Exception {
+        final Display display1 =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay().getDisplay();
+        final int deviceId1 = mVirtualDeviceRule.createManagedVirtualDevice().getDeviceId();
+        enableOverlay(List.of(new OverlayConstraint(TYPE_DISPLAY_ID, display1.getDisplayId()),
+                new OverlayConstraint(TYPE_DEVICE_ID, deviceId1)));
+
+        // Assert than the overlay is not applied for contexts not associated with the above
+        // display or device.
+        final Context context = getApplicationContext();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context);
+        final Display display2 =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay().getDisplay();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context.createDisplayContext(display2));
+        final int deviceId2 = mVirtualDeviceRule.createManagedVirtualDevice().getDeviceId();
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, context.createDeviceContext(deviceId2));
+
+        // Assert than the overlay is applied for contexts associated with the above display or
+        // device.
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDisplayContext(display1));
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, context.createDeviceContext(deviceId1));
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithConstraints_withTypeDisplayId_appliesForActivityOnDisplay()
+            throws Exception {
+        final Display display =
+                mVirtualDeviceRule.createManagedUnownedVirtualDisplay(
+                                VirtualDeviceRule.createTrustedVirtualDisplayConfigBuilder())
+                        .getDisplay();
+        final Activity activityOnDefaultDisplay = mVirtualDeviceRule.startActivityOnDisplaySync(
+                DEFAULT_DISPLAY, Activity.class);
+        final Activity activityOnVirtualDisplay = mVirtualDeviceRule.startActivityOnDisplaySync(
+                display.getDisplayId(), Activity.class);
+
+        enableOverlay(List.of(new OverlayConstraint(TYPE_DISPLAY_ID, display.getDisplayId())));
+
+        // Assert than the overlay is not applied for any existing activity on the default display.
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, activityOnDefaultDisplay);
+        // Assert than the overlay is applied for any existing activity on the virtual display.
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, activityOnVirtualDisplay);
+
+        // Assert than the overlay is not applied for any new activity on the default display.
+        final Activity newActivityOnDefaultDisplay = mVirtualDeviceRule.startActivityOnDisplaySync(
+                DEFAULT_DISPLAY, Activity.class);
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, newActivityOnDefaultDisplay);
+        // Assert than the overlay is applied for any new activity on the virtual display.
+        final Activity newActivityOnVirtualDisplay = mVirtualDeviceRule.startActivityOnDisplaySync(
+                display.getDisplayId(), Activity.class);
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, newActivityOnVirtualDisplay);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_RRO_CONSTRAINTS)
+    public void enableOverlayWithConstraints_withTypeDeviceId_appliesForActivityOnDevice()
+            throws Exception {
+        final VirtualDeviceManager.VirtualDevice device =
+                mVirtualDeviceRule.createManagedVirtualDevice();
+        final Display display =
+                mVirtualDeviceRule.createManagedVirtualDisplay(device,
+                                VirtualDeviceRule.createTrustedVirtualDisplayConfigBuilder())
+                        .getDisplay();
+        final Activity activityOnDefaultDevice = mVirtualDeviceRule.startActivityOnDisplaySync(
+                DEFAULT_DISPLAY, Activity.class);
+        final Activity activityOnVirtualDevice = mVirtualDeviceRule.startActivityOnDisplaySync(
+                display.getDisplayId(), Activity.class);
+
+        enableOverlay(List.of(new OverlayConstraint(TYPE_DEVICE_ID, device.getDeviceId())));
+
+        // Assert than the overlay is not applied for any existing activity on the default device.
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, activityOnDefaultDevice);
+        // Assert than the overlay is applied for any existing activity on the virtual device.
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, activityOnVirtualDevice);
+
+        // Assert than the overlay is not applied for any new activity on the default device.
+        final Activity newActivityOnDefaultDevice = mVirtualDeviceRule.startActivityOnDisplaySync(
+                DEFAULT_DISPLAY, Activity.class);
+        ensureResourceValueStaysAt(RESOURCE_DEFAULT_VALUE, newActivityOnDefaultDevice);
+        // Assert than the overlay is applied for any new activity on the virtual device.
+        final Activity newActivityOnVirtualDevice = mVirtualDeviceRule.startActivityOnDisplaySync(
+                display.getDisplayId(), Activity.class);
+        waitForResourceValue(RESOURCE_OVERLAID_VALUE, newActivityOnVirtualDevice);
+    }
+
     private FabricatedOverlay createFabricatedOverlay() {
-        String packageName = getApplicationContext().getPackageName();
         FabricatedOverlay fabricatedOverlay = new FabricatedOverlay.Builder(
-                packageName, "testOverlay" /* name */, packageName)
+                mPackageName, "testOverlay" /* name */, mPackageName)
                 .build();
-        fabricatedOverlay.setResourceValue("string/module_2_name" /* resourceName */,
-                TypedValue.TYPE_STRING, "hello" /* value */, null /* configuration */);
+        fabricatedOverlay.setResourceValue(RESOURCE_NAME, TYPE_STRING, RESOURCE_OVERLAID_VALUE,
+                null /* configuration */);
         return fabricatedOverlay;
     }
 
@@ -183,6 +344,37 @@
         mOverlayIdentifier = fabricatedOverlay.getIdentifier();
     }
 
+    private static void waitForResourceValue(final String expectedValue, Context context)
+            throws TimeoutException {
+        final long endTime = System.currentTimeMillis() + TIMEOUT_MILLIS;
+        final Resources resources = context.getResources();
+        final int resourceId = getResourceId(context);
+        String resourceValue = null;
+        while (System.currentTimeMillis() < endTime) {
+            resourceValue = resources.getString(resourceId);
+            if (Objects.equals(resourceValue, expectedValue)) {
+                return;
+            }
+        }
+        throw new TimeoutException("Timed out waiting for '" + RESOURCE_NAME + "' value to equal '"
+                + expectedValue + "': current value is '" + resourceValue + "'");
+    }
+
+    private static void ensureResourceValueStaysAt(final String expectedValue, Context context) {
+        final long endTime = System.currentTimeMillis() + TIMEOUT_MILLIS;
+        final Resources resources = context.getResources();
+        final int resourceId = getResourceId(context);
+        String resourceValue;
+        while (System.currentTimeMillis() < endTime) {
+            resourceValue = resources.getString(resourceId);
+            assertEquals(expectedValue, resourceValue);
+        }
+    }
+
+    private static int getResourceId(Context context) {
+        return context.getResources().getIdentifier(RESOURCE_NAME, "", context.getPackageName());
+    }
+
     private static List<OverlayConstraint>[] getAllConstraintLists() {
         return new List[]{
                 Collections.emptyList(),
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 3ef360a..da14e45 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -95,8 +95,8 @@
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Pair;
+import android.util.SparseArray;
 
-import com.android.internal.infra.AndroidFuture;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.pm.LauncherAppsService.LauncherAppsImpl;
@@ -110,6 +110,7 @@
 import org.mockito.stubbing.Answer;
 
 import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -149,6 +150,9 @@
     protected static final String MAIN_ACTIVITY_CLASS = "MainActivity";
     protected static final String PIN_CONFIRM_ACTIVITY_CLASS = "PinConfirmActivity";
 
+    private byte[] mBaseState;
+    protected final SparseArray<byte[]> mUserStates = new SparseArray<>();
+
     // public for mockito
     public class BaseContext extends MockContext {
         @Override
@@ -287,6 +291,7 @@
         final ServiceContext mContext;
         IUidObserver mUidObserver;
 
+
         public ShortcutServiceTestable(ServiceContext context, Looper looper) {
             super(context, looper, /* onyForPackageManagerApis */ false);
             mContext = context;
@@ -567,6 +572,58 @@
             // During tests, WTF is fatal.
             fail(message + "  exception: " + th + "\n" + Log.getStackTraceString(th));
         }
+
+        @Override
+        void injectSaveBaseState() {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            try {
+                saveBaseStateAsXml(baos);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            mBaseState = baos.toByteArray();
+        }
+
+        @Override
+        protected void injectLoadBaseState() {
+            if (mBaseState == null) {
+                return;
+            }
+            ByteArrayInputStream bais = new ByteArrayInputStream(mBaseState);
+            try {
+                loadBaseStateAsXml(bais);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        @Override
+        protected void injectSaveUser(@UserIdInt int userId) {
+            synchronized (mServiceLock) {
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                try {
+                    saveUserInternalLocked(userId, baos, /* forBackup= */ false);
+                    cleanupDanglingBitmapDirectoriesLocked(userId);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                mUserStates.put(userId, baos.toByteArray());
+            }
+        }
+
+        @Override
+        protected ShortcutUser injectLoadUserLocked(@UserIdInt int userId) {
+            final byte[] userState = mUserStates.get(userId);
+            if (userState == null) {
+                return null;
+            }
+            ByteArrayInputStream bais = new ByteArrayInputStream(userState);
+            try {
+                return loadUserInternal(userId, bais, /* forBackup= */ false);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
     }
 
     /** ShortcutManager with injection override methods. */
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index f536cae..58f7622 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -201,7 +201,7 @@
         mInjectedCurrentTimeMillis = START_TIME + 4 * INTERVAL + 50;
         assertResetTimes(START_TIME + 4 * INTERVAL, START_TIME + 5 * INTERVAL);
 
-        mService.saveBaseState();
+        mService.injectSaveBaseState();
 
         dumpBaseStateFile();
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
index 3b32701..f5690b7 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
@@ -54,9 +54,7 @@
 import com.android.frameworks.servicestests.R;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.io.Writer;
 import java.util.Locale;
 
 /**
@@ -2358,12 +2356,10 @@
      * can still be read.
      */
     public void testLoadLegacySavedFile() throws Exception {
-        final File path = mService.getUserFile(USER_10).getBaseFile();
-        path.getParentFile().mkdirs();
-        try (Writer w = new FileWriter(path)) {
-            w.write(readTestAsset("shortcut/shortcut_legacy_file.xml"));
-        };
+        final String legacyFile = readTestAsset("shortcut/shortcut_legacy_file.xml");
+        mUserStates.put(USER_10, legacyFile.getBytes());
         initService();
+
         mService.handleUnlockUser(USER_10);
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
diff --git a/services/tests/wmtests/res/values/styles.xml b/services/tests/wmtests/res/values/styles.xml
index 6857ff99..6ded2b5 100644
--- a/services/tests/wmtests/res/values/styles.xml
+++ b/services/tests/wmtests/res/values/styles.xml
@@ -21,4 +21,14 @@
         <item name="android:windowIsTranslucent">true</item>
         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
     </style>
+
+    <style name="ActivityWindowStyleTest">
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowShowWallpaper">true</item>
+        <item name="android:windowNoDisplay">true</item>
+        <item name="android:windowDisablePreview">true</item>
+        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
+        <item name="android:windowSplashScreenBehavior">icon_preferred</item>
+    </style>
 </resources>
diff --git a/services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java b/services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java
index 8e2cea7..6d8a487 100644
--- a/services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java
+++ b/services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java
@@ -244,9 +244,6 @@
                 {"Meta + L -> Lock Homescreen", new int[]{META_KEY, KeyEvent.KEYCODE_L},
                         KeyGestureEvent.KEY_GESTURE_TYPE_LOCK_SCREEN, KeyEvent.KEYCODE_L,
                         META_ON},
-                {"Meta + Ctrl + N -> Open Notes", new int[]{META_KEY, CTRL_KEY, KeyEvent.KEYCODE_N},
-                        KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES, KeyEvent.KEYCODE_N,
-                        META_ON | CTRL_ON},
                 {"Meta + Ctrl + DPAD_DOWN -> Enter desktop mode",
                         new int[]{META_KEY, CTRL_KEY, KeyEvent.KEYCODE_DPAD_DOWN},
                         KeyGestureEvent.KEY_GESTURE_TYPE_DESKTOP_MODE,
diff --git a/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
index 32a3b7f..22c86eb 100644
--- a/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
+++ b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
@@ -272,6 +272,19 @@
     }
 
     @Test
+    public void powerPress_withoutDreamManagerInternal_doesNotCrash() {
+        when(mDisplayPolicy.isAwake()).thenReturn(true);
+        mDreamManagerInternal = null;
+        initPhoneWindowManager();
+
+        // Power button pressed.
+        int eventTime = 0;
+        mPhoneWindowManager.powerPress(eventTime, 1, 0);
+
+        // verify no crash
+    }
+
+    @Test
     public void powerPress_hubOrDreamOrSleep_hubAvailableLocks() {
         when(mDisplayPolicy.isAwake()).thenReturn(true);
         mContext.getTestablePermissions().setPermission(android.Manifest.permission.DEVICE_POWER,
@@ -352,5 +365,10 @@
         WindowWakeUpPolicy getWindowWakeUpPolicy() {
             return mock(WindowWakeUpPolicy.class);
         }
+
+        @Override
+        DreamManagerInternal getDreamManagerInternal() {
+            return mDreamManagerInternal;
+        }
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 280e432..d53ba1d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -992,6 +992,27 @@
         assertEquals(persistentSavedState, activity.getPersistentSavedState());
     }
 
+    @Test
+    public void testReadWindowStyle() {
+        final ActivityRecord activity = new ActivityBuilder(mAtm).setActivityTheme(
+                com.android.frameworks.wmtests.R.style.ActivityWindowStyleTest).build();
+        assertTrue(activity.isNoDisplay());
+        assertTrue("Fill parent because showWallpaper", activity.mStyleFillsParent);
+
+        final ActivityRecord.WindowStyle style = mAtm.getWindowStyle(
+                activity.packageName, activity.info.theme, activity.mUserId);
+        assertNotNull(style);
+        assertTrue(style.isTranslucent());
+        assertTrue(style.isFloating());
+        assertTrue(style.showWallpaper());
+        assertTrue(style.noDisplay());
+        assertTrue(style.disablePreview());
+        assertTrue(style.optOutEdgeToEdge());
+        assertEquals(1 /* icon_preferred */, style.mSplashScreenBehavior);
+        assertEquals(style.noDisplay(), mAtm.mInternal.isNoDisplay(activity.packageName,
+                activity.info.theme, activity.mUserId));
+    }
+
     /**
      * Verify that activity finish request is not performed if activity is finishing or is in
      * incorrect state.
diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
index 59335d3..9406779 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
@@ -98,6 +98,7 @@
 import com.android.server.statusbar.StatusBarManagerInternal;
 import com.android.server.testutils.StubTransaction;
 import com.android.server.uri.UriGrantsManagerInternal;
+import com.android.window.flags.Flags;
 
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
@@ -657,6 +658,13 @@
             AppWarnings appWarnings = getAppWarningsLocked();
             spyOn(appWarnings);
             doNothing().when(appWarnings).onStartActivity(any());
+
+            if (Flags.trackSystemUiContextBeforeWms()) {
+                final Context uiContext = getUiContext();
+                spyOn(uiContext);
+                doNothing().when(uiContext).registerComponentCallbacks(any());
+                doNothing().when(uiContext).unregisterComponentCallbacks(any());
+            }
         }
 
         @Override
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java b/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java
index ccce57a..b1525cf 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestDisplayContent.java
@@ -30,6 +30,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.Insets;
 import android.graphics.Rect;
@@ -39,6 +40,7 @@
 import android.view.DisplayInfo;
 
 import com.android.server.wm.DisplayWindowSettings.SettingsProvider.SettingsEntry;
+import com.android.window.flags.Flags;
 
 class TestDisplayContent extends DisplayContent {
 
@@ -79,6 +81,13 @@
         WindowTestsBase.suppressInsetsAnimation(insetsPolicy.getPermanentControlTarget());
         WindowTestsBase.suppressInsetsAnimation(insetsPolicy.getTransientControlTarget());
 
+        if (Flags.trackSystemUiContextBeforeWms()) {
+            final Context uiContext = getDisplayUiContext();
+            spyOn(uiContext);
+            doNothing().when(uiContext).registerComponentCallbacks(any());
+            doNothing().when(uiContext).unregisterComponentCallbacks(any());
+        }
+
         // For devices that set the sysprop ro.bootanim.set_orientation_<display_id>
         // See DisplayRotation#readDefaultDisplayRotation for context.
         // Without that, meaning of height and width in context of the tests can be swapped if
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 7f9e591..97c6ac6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -861,11 +861,9 @@
     /** Creates a {@link DisplayContent} and adds it to the system. */
     private DisplayContent createNewDisplay(DisplayInfo info, @DisplayImePolicy int imePolicy,
             @Nullable SettingsEntry overrideSettings) {
-        final DisplayContent display =
-                new TestDisplayContent.Builder(mAtm, info)
-                        .setOverrideSettings(overrideSettings)
-                        .build();
-        final DisplayContent dc = display.mDisplayContent;
+        final DisplayContent dc = new TestDisplayContent.Builder(mAtm, info)
+                .setOverrideSettings(overrideSettings)
+                .build();
         // this display can show IME.
         dc.mWmService.mDisplayWindowSettings.setDisplayImePolicy(dc, imePolicy);
         return dc;
diff --git a/services/tests/wmtests/src/com/android/server/wm/utils/WindowStyleCacheTest.java b/services/tests/wmtests/src/com/android/server/wm/utils/WindowStyleCacheTest.java
new file mode 100644
index 0000000..57a3401
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/utils/WindowStyleCacheTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.utils;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.policy.AttributeCache;
+
+import org.junit.Test;
+
+/**
+ * Build/Install/Run:
+ *  atest WmTests:WindowStyleCacheTest
+ */
+@SmallTest
+@Presubmit
+public class WindowStyleCacheTest {
+
+    @Test
+    public void testCache() {
+        final Context context = getInstrumentation().getContext();
+        AttributeCache.init(context);
+        final WindowStyleCache<TestStyle> cache = new WindowStyleCache<>(TestStyle::new);
+        final String packageName = context.getPackageName();
+        final int theme = com.android.frameworks.wmtests.R.style.ActivityWindowStyleTest;
+        final int userId = context.getUserId();
+        final TestStyle style = cache.get(packageName, theme, userId);
+        assertNotNull(style);
+        assertSame(style, cache.get(packageName, theme, userId));
+
+        cache.invalidatePackage(packageName);
+        assertNotSame(style, cache.get(packageName, theme, userId));
+    }
+
+    private static class TestStyle {
+        TestStyle(TypedArray array) {
+        }
+    }
+}
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index ec4f7e1..4395b76 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -52,6 +52,7 @@
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.service.usb.UsbServiceDumpProto;
@@ -694,6 +695,11 @@
         return (getCurrentFunctions() & UsbManager.usbFunctionsFromString(function)) != 0;
     }
 
+    @Override
+    public boolean isUvcGadgetSupportEnabled() {
+        return SystemProperties.getBoolean("ro.usb.uvc.enabled", false);
+    }
+
     @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public long getCurrentFunctions() {
diff --git a/startop/OWNERS b/startop/OWNERS
index 11d5ad0..3414a74 100644
--- a/startop/OWNERS
+++ b/startop/OWNERS
@@ -1,2 +1 @@
 include platform/art:/OWNERS
-keunyoung@google.com
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 1a932859..58833e8 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -9786,7 +9786,6 @@
      * <p>
      * This config is empty by default.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE =
             "carrier_supported_satellite_services_per_provider_bundle";
 
@@ -9826,7 +9825,6 @@
      *
      * The default value is false.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_SATELLITE_ATTACH_SUPPORTED_BOOL =
             "satellite_attach_supported_bool";
 
@@ -9848,7 +9846,6 @@
      * <p>
      * The default value is 180 seconds.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_SATELLITE_CONNECTION_HYSTERESIS_SEC_INT =
             "satellite_connection_hysteresis_sec_int";
 
@@ -9863,7 +9860,6 @@
      * See SignalStrength#MAX_LTE_RSRP and SignalStrength#MIN_LTE_RSRP. Any signal level outside
      * these boundaries is considered invalid.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_NTN_LTE_RSRP_THRESHOLDS_INT_ARRAY =
             "ntn_lte_rsrp_thresholds_int_array";
 
@@ -9883,7 +9879,6 @@
      * This key is considered invalid if the format is violated. If the key is invalid or
      * not configured, a default value set will apply.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_NTN_LTE_RSRQ_THRESHOLDS_INT_ARRAY =
             "ntn_lte_rsrq_thresholds_int_array";
 
@@ -9901,7 +9896,6 @@
      * This key is considered invalid if the format is violated. If the key is invalid or
      * not configured, a default value set will apply.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_NTN_LTE_RSSNR_THRESHOLDS_INT_ARRAY =
             "ntn_lte_rssnr_thresholds_int_array";
 
@@ -9926,7 +9920,6 @@
      * If the key is invalid or not configured, a default value (RSRP = 1 << 0) will apply.
      *
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_PARAMETERS_USED_FOR_NTN_LTE_SIGNAL_BAR_INT =
             "parameters_used_for_ntn_lte_signal_bar_int";
 
@@ -10018,7 +10011,6 @@
      *
      * The default value is 7 days.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_SATELLITE_ENTITLEMENT_STATUS_REFRESH_DAYS_INT =
             "satellite_entitlement_status_refresh_days_int";
 
@@ -10029,7 +10021,6 @@
      *
      * The default value is false.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final String KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL =
             "satellite_entitlement_supported_bool";
 
diff --git a/telephony/java/android/telephony/NetworkRegistrationInfo.java b/telephony/java/android/telephony/NetworkRegistrationInfo.java
index 0c324e6..7de0a2a 100644
--- a/telephony/java/android/telephony/NetworkRegistrationInfo.java
+++ b/telephony/java/android/telephony/NetworkRegistrationInfo.java
@@ -209,7 +209,6 @@
     /**
      * MMS service
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final int SERVICE_TYPE_MMS = 6;
 
     /** @hide  */
@@ -713,7 +712,6 @@
      *
      * @return {@code true} if network is a non-terrestrial network else {@code false}.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public boolean isNonTerrestrialNetwork() {
         return mIsNonTerrestrialNetwork;
     }
@@ -1198,7 +1196,6 @@
          *                                            else {@code false}.
          * @return The builder.
          */
-        @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
         public @NonNull Builder setIsNonTerrestrialNetwork(boolean isNonTerrestrialNetwork) {
             mIsNonTerrestrialNetwork = isNonTerrestrialNetwork;
             return this;
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 127bbff..35dd8b2 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -16,7 +16,6 @@
 
 package android.telephony;
 
-import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -36,7 +35,6 @@
 import android.telephony.NetworkRegistrationInfo.NRState;
 import android.text.TextUtils;
 
-import com.android.internal.telephony.flags.Flags;
 import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
@@ -2262,7 +2260,6 @@
      *
      * @return {@code true} if device is connected to a non-terrestrial network else {@code false}.
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public boolean isUsingNonTerrestrialNetwork() {
         synchronized (mNetworkRegistrationInfos) {
             for (NetworkRegistrationInfo nri : mNetworkRegistrationInfos) {
diff --git a/telephony/java/android/telephony/TelephonyDisplayInfo.java b/telephony/java/android/telephony/TelephonyDisplayInfo.java
index bb4ce6e..4411873 100644
--- a/telephony/java/android/telephony/TelephonyDisplayInfo.java
+++ b/telephony/java/android/telephony/TelephonyDisplayInfo.java
@@ -16,15 +16,12 @@
 
 package android.telephony;
 
-import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Annotation.NetworkType;
 import android.telephony.Annotation.OverrideNetworkType;
 
-import com.android.internal.telephony.flags.Flags;
-
 import java.util.Objects;
 
 /**
@@ -97,10 +94,8 @@
 
     private final boolean mIsRoaming;
 
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     private final boolean mIsNtn;
 
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     private final boolean mIsSatelliteConstrainedData;
 
     /**
diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java
index 22624e2..7eb1eb9 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -126,7 +126,6 @@
     /** APN type for ENTERPRISE. */
     public static final int TYPE_ENTERPRISE = ApnTypes.ENTERPRISE;
     /** APN type for RCS (Rich Communication Services). */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final int TYPE_RCS = ApnTypes.RCS;
     /** APN type for OEM_PAID networks (Automotive PANS) */
     @FlaggedApi(Flags.FLAG_OEM_PAID_PRIVATE)
@@ -379,7 +378,6 @@
      * modem components or carriers. Non-system apps should use the integer variants instead.
      * @hide
      */
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @SystemApi
     public static final String TYPE_RCS_STRING = "rcs";
 
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index 100690d..1309654 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -755,7 +755,6 @@
      * @hide
      */
     @SystemApi
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final int EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911 = 2;
 
     /**
@@ -1574,7 +1573,6 @@
      * @hide
      */
     @SystemApi
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION = 1;
 
     /**
@@ -1584,7 +1582,6 @@
      * @hide
      */
     @SystemApi
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public static final int SATELLITE_COMMUNICATION_RESTRICTION_REASON_ENTITLEMENT = 2;
 
     /** @hide */
@@ -2757,7 +2754,6 @@
      */
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public void requestAttachEnabledForCarrier(int subId, boolean enableSatellite,
             @NonNull @CallbackExecutor Executor executor,
             @SatelliteResult @NonNull Consumer<Integer> resultListener) {
@@ -2794,7 +2790,6 @@
      */
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public void requestIsAttachEnabledForCarrier(int subId,
             @NonNull @CallbackExecutor Executor executor,
             @NonNull OutcomeReceiver<Boolean, SatelliteException> callback) {
@@ -2822,7 +2817,6 @@
      */
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public void addAttachRestrictionForCarrier(int subId,
             @SatelliteCommunicationRestrictionReason int reason,
             @NonNull @CallbackExecutor Executor executor,
@@ -2870,7 +2864,6 @@
      */
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     public void removeAttachRestrictionForCarrier(int subId,
             @SatelliteCommunicationRestrictionReason int reason,
             @NonNull @CallbackExecutor Executor executor,
@@ -2918,7 +2911,6 @@
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
     @SatelliteCommunicationRestrictionReason
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @NonNull public Set<Integer> getAttachRestrictionReasonsForCarrier(int subId) {
         if (!SubscriptionManager.isValidSubscriptionId(subId)) {
             throw new IllegalArgumentException("Invalid subscription ID");
@@ -3317,7 +3309,6 @@
      */
     @SystemApi
     @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
-    @FlaggedApi(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
     @NonNull public List<String> getSatellitePlmnsForCarrier(int subId) {
         if (!SubscriptionManager.isValidSubscriptionId(subId)) {
             throw new IllegalArgumentException("Invalid subscription ID");
diff --git a/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt b/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt
index a2f6f00..eac4267 100644
--- a/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt
+++ b/tests/Input/src/com/android/server/input/InputManagerServiceTests.kt
@@ -160,7 +160,7 @@
         testLooper = TestLooper()
         service =
             InputManagerService(object : InputManagerService.Injector(
-                    context, testLooper.looper, uEventManager) {
+                    context, testLooper.looper, testLooper.looper, uEventManager) {
                 override fun getNativeService(
                     service: InputManagerService?
                 ): NativeInputManagerService {
diff --git a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
index 88e8496..c666fb7 100644
--- a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
+++ b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
@@ -207,7 +207,7 @@
 
     private fun setupKeyGestureController() {
         keyGestureController =
-            KeyGestureController(context, testLooper.looper, inputDataStore)
+            KeyGestureController(context, testLooper.looper, testLooper.looper, inputDataStore)
         Mockito.`when`(iInputManager.getAppLaunchBookmarks())
             .thenReturn(keyGestureController.appLaunchBookmarks)
         keyGestureController.systemRunning()
@@ -371,18 +371,6 @@
                 intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
             ),
             TestData(
-                "META + CTRL + N -> Open Notes",
-                intArrayOf(
-                    KeyEvent.KEYCODE_META_LEFT,
-                    KeyEvent.KEYCODE_CTRL_LEFT,
-                    KeyEvent.KEYCODE_N
-                ),
-                KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES,
-                intArrayOf(KeyEvent.KEYCODE_N),
-                KeyEvent.META_META_ON or KeyEvent.META_CTRL_ON,
-                intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
-            ),
-            TestData(
                 "META + S -> Take Screenshot",
                 intArrayOf(
                     KeyEvent.KEYCODE_META_LEFT,
diff --git a/tests/Internal/Android.bp b/tests/Internal/Android.bp
index e294da1..3556406 100644
--- a/tests/Internal/Android.bp
+++ b/tests/Internal/Android.bp
@@ -45,6 +45,7 @@
         "junit",
         "androidx.test.rules",
         "platform-test-annotations",
+        "truth",
     ],
     manifest: "ApplicationSharedMemoryTest32/AndroidManifest.xml",
     test_config: "ApplicationSharedMemoryTest32/AndroidTest.xml",
diff --git a/tests/Internal/src/com/android/internal/os/ApplicationSharedMemoryTest.java b/tests/Internal/src/com/android/internal/os/ApplicationSharedMemoryTest.java
index d03ad5c..5ce0ede 100644
--- a/tests/Internal/src/com/android/internal/os/ApplicationSharedMemoryTest.java
+++ b/tests/Internal/src/com/android/internal/os/ApplicationSharedMemoryTest.java
@@ -16,24 +16,24 @@
 
 package com.android.internal.os;
 
-import java.io.IOException;
+import static com.google.common.truth.Truth.assertThat;
 
-import static org.junit.Assert.fail;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import android.platform.test.annotations.Presubmit;
 
 import androidx.test.filters.SmallTest;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
-import org.junit.Before;
 
 import java.io.FileDescriptor;
+import java.io.IOException;
 
 /** Tests for {@link TimeoutRecord}. */
 @SmallTest
@@ -77,6 +77,8 @@
         try {
             instance.setLatestNetworkTimeUnixEpochMillisAtZeroElapsedRealtimeMillis(17);
             fail("Attempted mutation in an app process should throw");
+            instance.writeSystemFeaturesCache(new int[] {1, 2, 3, 4, 5});
+            fail("Attempted feature mutation in an app process should throw");
         } catch (Exception expected) {
         }
     }
@@ -121,4 +123,56 @@
         } catch (Exception expected) {
         }
     }
+
+    /** If system feature caching is enabled, it should be auto-written into app shared memory. */
+    @Test
+    public void canReadSystemFeatures() throws IOException {
+        assumeTrue(android.content.pm.Flags.cacheSdkSystemFeatures());
+        ApplicationSharedMemory instance = ApplicationSharedMemory.getInstance();
+        assertThat(instance.readSystemFeaturesCache()).isNotEmpty();
+    }
+
+    @Test
+    public void systemFeaturesShareMemory() throws IOException {
+        ApplicationSharedMemory instance1 = ApplicationSharedMemory.create();
+
+        int[] featureVersions = new int[] {1, 2, 3, 4, 5};
+        instance1.writeSystemFeaturesCache(featureVersions);
+        assertThat(featureVersions).isEqualTo(instance1.readSystemFeaturesCache());
+
+        ApplicationSharedMemory instance2 =
+                ApplicationSharedMemory.fromFileDescriptor(
+                        instance1.getReadOnlyFileDescriptor(), /* mutable= */ false);
+        assertThat(featureVersions).isEqualTo(instance2.readSystemFeaturesCache());
+    }
+
+    @Test
+    public void systemFeaturesAreWriteOnce() throws IOException {
+        ApplicationSharedMemory instance1 = ApplicationSharedMemory.create();
+
+        try {
+            instance1.writeSystemFeaturesCache(new int[5000]);
+            fail("Cannot write an overly large system feature version buffer.");
+        } catch (IllegalArgumentException expected) {
+        }
+
+        int[] featureVersions = new int[] {1, 2, 3, 4, 5};
+        instance1.writeSystemFeaturesCache(featureVersions);
+
+        int[] newFeatureVersions = new int[] {1, 2, 3, 4, 5, 6, 7};
+        try {
+            instance1.writeSystemFeaturesCache(newFeatureVersions);
+            fail("Cannot update system features after first write.");
+        } catch (IllegalStateException expected) {
+        }
+
+        ApplicationSharedMemory instance2 =
+                ApplicationSharedMemory.fromFileDescriptor(
+                        instance1.getReadOnlyFileDescriptor(), /* mutable= */ false);
+        try {
+            instance2.writeSystemFeaturesCache(newFeatureVersions);
+            fail("Cannot update system features for read-only ashmem.");
+        } catch (IllegalStateException expected) {
+        }
+    }
 }
diff --git a/tests/SoundTriggerTestApp/OWNERS b/tests/SoundTriggerTestApp/OWNERS
index a0fcfc5..1e41886 100644
--- a/tests/SoundTriggerTestApp/OWNERS
+++ b/tests/SoundTriggerTestApp/OWNERS
@@ -1,2 +1 @@
 include /media/java/android/media/soundtrigger/OWNERS
-mdooley@google.com
diff --git a/tests/Tracing/src/com/android/internal/protolog/ProtoLogCommandHandlerTest.java b/tests/Tracing/src/com/android/internal/protolog/ProtoLogCommandHandlerTest.java
index be0c7da..e62a89b 100644
--- a/tests/Tracing/src/com/android/internal/protolog/ProtoLogCommandHandlerTest.java
+++ b/tests/Tracing/src/com/android/internal/protolog/ProtoLogCommandHandlerTest.java
@@ -19,6 +19,7 @@
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.contains;
 import static org.mockito.ArgumentMatchers.endsWith;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.times;
 
@@ -157,13 +158,15 @@
 
         cmdHandler.exec(mMockBinder, FileDescriptor.in, FileDescriptor.out,
                 FileDescriptor.err, new String[] { "logcat", "enable", "MY_GROUP" });
-        Mockito.verify(mProtoLogConfigurationService).enableProtoLogToLogcat("MY_GROUP");
+        Mockito.verify(mProtoLogConfigurationService)
+                .enableProtoLogToLogcat(Mockito.any(), eq("MY_GROUP"));
 
         cmdHandler.exec(mMockBinder, FileDescriptor.in, FileDescriptor.out,
                 FileDescriptor.err,
                 new String[] { "logcat", "enable", "MY_GROUP", "MY_OTHER_GROUP" });
         Mockito.verify(mProtoLogConfigurationService)
-                .enableProtoLogToLogcat("MY_GROUP", "MY_OTHER_GROUP");
+                .enableProtoLogToLogcat(Mockito.any(),
+                        eq("MY_GROUP"), eq("MY_OTHER_GROUP"));
     }
 
     @Test
@@ -173,13 +176,15 @@
 
         cmdHandler.exec(mMockBinder, FileDescriptor.in, FileDescriptor.out,
                 FileDescriptor.err, new String[] { "logcat", "disable", "MY_GROUP" });
-        Mockito.verify(mProtoLogConfigurationService).disableProtoLogToLogcat("MY_GROUP");
+        Mockito.verify(mProtoLogConfigurationService)
+                .disableProtoLogToLogcat(Mockito.any(), eq("MY_GROUP"));
 
         cmdHandler.exec(mMockBinder, FileDescriptor.in, FileDescriptor.out,
                 FileDescriptor.err,
                 new String[] { "logcat", "disable", "MY_GROUP", "MY_OTHER_GROUP" });
         Mockito.verify(mProtoLogConfigurationService)
-                .disableProtoLogToLogcat("MY_GROUP", "MY_OTHER_GROUP");
+                .disableProtoLogToLogcat(Mockito.any(),
+                        eq("MY_GROUP"), eq("MY_OTHER_GROUP"));
     }
 
     @Test
diff --git a/tests/Tracing/src/com/android/internal/protolog/ProtoLogConfigurationServiceTest.java b/tests/Tracing/src/com/android/internal/protolog/ProtoLogConfigurationServiceTest.java
index 3be7251..1f3f91e 100644
--- a/tests/Tracing/src/com/android/internal/protolog/ProtoLogConfigurationServiceTest.java
+++ b/tests/Tracing/src/com/android/internal/protolog/ProtoLogConfigurationServiceTest.java
@@ -62,6 +62,7 @@
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.List;
 
 /**
@@ -234,7 +235,7 @@
         service.registerClient(mMockClient, args);
 
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isFalse();
-        service.enableProtoLogToLogcat(TEST_GROUP);
+        service.enableProtoLogToLogcat(Mockito.mock(PrintWriter.class), TEST_GROUP);
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isTrue();
 
         Mockito.verify(mMockClient).toggleLogcat(eq(true),
@@ -251,7 +252,7 @@
         service.registerClient(mMockClient, args);
 
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isTrue();
-        service.disableProtoLogToLogcat(TEST_GROUP);
+        service.disableProtoLogToLogcat(Mockito.mock(PrintWriter.class), TEST_GROUP);
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isFalse();
 
         Mockito.verify(mMockClient).toggleLogcat(eq(false),
@@ -269,7 +270,7 @@
         service.registerClient(mMockClient, args);
 
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isFalse();
-        service.enableProtoLogToLogcat(OTHER_TEST_GROUP);
+        service.enableProtoLogToLogcat(Mockito.mock(PrintWriter.class), OTHER_TEST_GROUP);
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isFalse();
 
         Mockito.verify(mMockClient, never()).toggleLogcat(anyBoolean(), any());
@@ -280,7 +281,7 @@
         final ProtoLogConfigurationService service = new ProtoLogConfigurationServiceImpl();
 
         Truth.assertThat(service.getGroups()).asList().doesNotContain(TEST_GROUP);
-        service.enableProtoLogToLogcat(TEST_GROUP);
+        service.enableProtoLogToLogcat(Mockito.mock(PrintWriter.class), TEST_GROUP);
         Truth.assertThat(service.isLoggingToLogcat(TEST_GROUP)).isTrue();
 
         final RegisterClientArgs args = new RegisterClientArgs();
diff --git a/tests/testables/src/android/testing/TestableLooper.java b/tests/testables/src/android/testing/TestableLooper.java
index 1273826..7a19add 100644
--- a/tests/testables/src/android/testing/TestableLooper.java
+++ b/tests/testables/src/android/testing/TestableLooper.java
@@ -34,7 +34,6 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.ArrayDeque;
 import java.util.Map;
 import java.util.Objects;
@@ -74,21 +73,15 @@
     /**
      * Baklava introduces new {@link TestLooperManager} APIs that we can use instead of reflection.
      */
-    private static boolean isAtLeastBaklava() {
-        Method[] methods = TestLooperManager.class.getMethods();
-        for (Method method : methods) {
-            if (method.getName().equals("peekWhen")) {
-                return true;
-            }
-        }
-        return false;
+    private static boolean newTestabilityApisSupported() {
+        return android.os.Flags.messageQueueTestability();
         // TODO(shayba): delete the above, uncomment the below.
         // SDK_INT has not yet ramped to Baklava in all 25Q2 builds.
         // return Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA;
     }
 
     static {
-        if (isAtLeastBaklava()) {
+        if (newTestabilityApisSupported()) {
             MESSAGE_QUEUE_MESSAGES_FIELD = null;
             MESSAGE_NEXT_FIELD = null;
             MESSAGE_WHEN_FIELD = null;
@@ -248,14 +241,14 @@
     }
 
     public void moveTimeForward(long milliSeconds) {
-        if (isAtLeastBaklava()) {
-            moveTimeForwardBaklava(milliSeconds);
+        if (newTestabilityApisSupported()) {
+            moveTimeForwardModern(milliSeconds);
         } else {
             moveTimeForwardLegacy(milliSeconds);
         }
     }
 
-    private void moveTimeForwardBaklava(long milliSeconds) {
+    private void moveTimeForwardModern(long milliSeconds) {
         // Drain all Messages from the queue.
         Queue<Message> messages = new ArrayDeque<>();
         while (true) {
@@ -273,7 +266,7 @@
             messages.add(message);
         }
 
-        // Repost all Messages back to the queuewith a new time.
+        // Repost all Messages back to the queue with a new time.
         while (true) {
             Message message = messages.poll();
             if (message == null) {
diff --git a/tests/utils/testutils/java/android/os/test/TestLooper.java b/tests/utils/testutils/java/android/os/test/TestLooper.java
index 4d379e4..c7a36dd 100644
--- a/tests/utils/testutils/java/android/os/test/TestLooper.java
+++ b/tests/utils/testutils/java/android/os/test/TestLooper.java
@@ -65,19 +65,13 @@
     private AutoDispatchThread mAutoDispatchThread;
 
     /**
-     * Baklava introduces new {@link TestLooperManager} APIs that we can use instead of reflection.
+     * Modern introduces new {@link TestLooperManager} APIs that we can use instead of reflection.
      */
-    private static boolean isAtLeastBaklava() {
-        Method[] methods = TestLooperManager.class.getMethods();
-        for (Method method : methods) {
-            if (method.getName().equals("peekWhen")) {
-                return true;
-            }
-        }
-        return false;
+    private static boolean newTestabilityApisSupported() {
+        return android.os.Flags.messageQueueTestability();
         // TODO(shayba): delete the above, uncomment the below.
-        // SDK_INT has not yet ramped to Baklava in all 25Q2 builds.
-        // return Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA;
+        // SDK_INT has not yet ramped to Modern in all 25Q2 builds.
+        // return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Modern;
     }
 
     static {
@@ -87,7 +81,7 @@
             THREAD_LOCAL_LOOPER_FIELD = Looper.class.getDeclaredField("sThreadLocal");
             THREAD_LOCAL_LOOPER_FIELD.setAccessible(true);
 
-            if (isAtLeastBaklava()) {
+            if (newTestabilityApisSupported()) {
                 MESSAGE_QUEUE_MESSAGES_FIELD = null;
                 MESSAGE_NEXT_FIELD = null;
                 MESSAGE_WHEN_FIELD = null;
@@ -136,7 +130,7 @@
             throw new RuntimeException("Reflection error constructing or accessing looper", e);
         }
 
-        if (isAtLeastBaklava()) {
+        if (newTestabilityApisSupported()) {
             mTestLooperManager =
                 InstrumentationRegistry.getInstrumentation().acquireLooperManager(mLooper);
         } else {
@@ -165,14 +159,14 @@
     }
 
     public void moveTimeForward(long milliSeconds) {
-        if (isAtLeastBaklava()) {
-            moveTimeForwardBaklava(milliSeconds);
+        if (newTestabilityApisSupported()) {
+            moveTimeForwardModern(milliSeconds);
         } else {
             moveTimeForwardLegacy(milliSeconds);
         }
     }
 
-    private void moveTimeForwardBaklava(long milliSeconds) {
+    private void moveTimeForwardModern(long milliSeconds) {
         // Drain all Messages from the queue.
         Queue<Message> messages = new ArrayDeque<>();
         while (true) {
@@ -265,14 +259,14 @@
      * @return true if there are pending messages in the message queue
      */
     public boolean isIdle() {
-        if (isAtLeastBaklava()) {
-            return isIdleBaklava();
+        if (newTestabilityApisSupported()) {
+            return isIdleModern();
         } else {
             return isIdleLegacy();
         }
     }
 
-    private boolean isIdleBaklava() {
+    private boolean isIdleModern() {
         Long when = mTestLooperManager.peekWhen();
         return when != null && currentTime() >= when;
     }
@@ -286,14 +280,14 @@
      * @return the next message in the Looper's message queue or null if there is none
      */
     public Message nextMessage() {
-        if (isAtLeastBaklava()) {
-            return nextMessageBaklava();
+        if (newTestabilityApisSupported()) {
+            return nextMessageModern();
         } else {
             return nextMessageLegacy();
         }
     }
 
-    private Message nextMessageBaklava() {
+    private Message nextMessageModern() {
         if (isIdle()) {
             return mTestLooperManager.poll();
         } else {
@@ -314,14 +308,14 @@
      * Asserts that there is a message in the queue
      */
     public void dispatchNext() {
-        if (isAtLeastBaklava()) {
-            dispatchNextBaklava();
+        if (newTestabilityApisSupported()) {
+            dispatchNextModern();
         } else {
             dispatchNextLegacy();
         }
     }
 
-    private void dispatchNextBaklava() {
+    private void dispatchNextModern() {
         assertTrue(isIdle());
         Message msg = mTestLooperManager.poll();
         if (msg == null) {